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