File indexing completed on 2024-05-05 05:00:04

0001 /*
0002     SPDX-FileCopyrightText: 2003 Antonio Larrosa <larrosa@kde.org>
0003     SPDX-FileCopyrightText: 2008 Matthias Grimrath <maps4711@gmx.de>
0004     SPDX-FileCopyrightText: 2020 Jonathan Marten <jjm@keelhaul.me.uk>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #ifndef ARCHIVEDIALOG_H
0010 #define ARCHIVEDIALOG_H
0011 
0012 #include <kmainwindow.h>
0013 
0014 #include <QUrl>
0015 #include <QProcess>
0016 #include <QPointer>
0017 
0018 #include <kmessagewidget.h>
0019 
0020 
0021 class QDialogButtonBox;
0022 class QComboBox;
0023 class QCheckBox;
0024 class QPushButton;
0025 class QTemporaryDir;
0026 class QTemporaryFile;
0027 
0028 class KUrlRequester;
0029 class KJob;
0030 class KPluralHandlingSpinBox;
0031 
0032 
0033 class ArchiveDialog : public KMainWindow
0034 {
0035     Q_OBJECT
0036 
0037 public:
0038     ArchiveDialog(const QUrl &url, QWidget *parent = nullptr);
0039     ~ArchiveDialog() override;
0040 
0041 protected:
0042     void saveSettings();
0043     void readSettings();
0044 
0045     bool queryClose() override;
0046 
0047 protected slots:
0048     void slotArchiveTypeChanged(int idx);
0049     void slotSourceUrlChanged(const QString &text);
0050     void slotMessageLinkActivated(const QString &link);
0051 
0052 private slots:
0053     void slotCreateButtonClicked();
0054     void slotCheckedDestination(KJob *job);
0055     void slotDeletedOldDestination(KJob *job);
0056 
0057     void slotProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
0058 
0059     void slotCopiedArchive(KJob *job);
0060     void slotFinishedArchive(KJob *job);
0061 
0062 private:
0063     void cleanup();
0064     void startDownloadProcess();
0065     void finishArchive();
0066     void setGuiEnabled(bool on);
0067 
0068     void showMessage(const QString &text, KMessageWidget::MessageType type = KMessageWidget::Information);
0069     void showMessageAndCleanup(const QString &text, KMessageWidget::MessageType type = KMessageWidget::Information);
0070 
0071 private:
0072     QDialogButtonBox *m_buttonBox;
0073     QPushButton *m_archiveButton;
0074     QPushButton *m_cancelButton;
0075     QWidget *m_guiWidget;
0076     KMessageWidget *m_messageWidget;
0077 
0078     KUrlRequester *m_pageUrlReq;
0079     KUrlRequester *m_saveUrlReq;
0080 
0081     QComboBox *m_typeCombo;
0082     KPluralHandlingSpinBox *m_waitTimeSpinbox;
0083     QCheckBox *m_noProxyCheck;
0084     QCheckBox *m_randomWaitCheck;
0085     QCheckBox *m_fixExtensionsCheck;
0086     QCheckBox *m_runInTerminalCheck;
0087     QCheckBox *m_closeWhenFinishedCheck;
0088 
0089     QUrl m_saveUrl;
0090     QString m_saveType;
0091     QString m_wgetProgram;
0092     QTemporaryDir *m_tempDir;
0093     QTemporaryFile *m_tempFile;
0094 
0095     QPointer<QProcess> m_archiveProcess;
0096 };
0097 
0098 #endif // ARCHIVEDIALOG_H