File indexing completed on 2023-05-30 11:38:30
0001 /* This file is part of the KDE project 0002 0003 Copyright (C) 2002 by Patrick Charbonnier <pch@freeshell.org> 0004 Based On Caitoo v.0.7.3 (c) 1998 - 2000, Matej Koss 0005 Copyright (C) 2006 Dario Massarin <nekkar@libero.it> 0006 Copyright (C) 2009 - 2010 Matthias Fuchs <mat69@gmx.net> 0007 0008 This program is free software; you can redistribute it and/or 0009 modify it under the terms of the GNU General Public 0010 License as published by the Free Software Foundation; either 0011 version 2 of the License, or (at your option) any later version. 0012 */ 0013 0014 #ifndef MAINWINDOW_H 0015 #define MAINWINDOW_H 0016 0017 #include <KStatusNotifierItem> 0018 #include <KToggleAction> 0019 #include <KXmlGuiWindow> 0020 0021 #include "core/transfer.h" 0022 #include "core/transfergroup.h" 0023 #include "ui/tray.h" 0024 0025 #ifdef HAVE_QCA2 0026 #include <QtCrypto> 0027 #endif 0028 0029 class ViewsContainer; 0030 class DropTarget; 0031 class DBusKgetWrapper; 0032 class HttpServer; 0033 class KGet; 0034 0035 /** 0036 * The main window of KGet. 0037 * 0038 * Can be collapsed or expanded. 0039 */ 0040 class MainWindow : public KXmlGuiWindow 0041 { 0042 friend class DBusKGetWrapper; 0043 0044 Q_OBJECT 0045 public: 0046 explicit MainWindow(bool showMainwindow = true, bool startWithoutAnimation = false, bool doTesting = false, QWidget *parent = nullptr); 0047 ~MainWindow() override; 0048 0049 virtual void setSystemTrayDownloading(bool running); 0050 0051 // no slot, to make sure that MainWindow is correctly initialized before any transfers get added 0052 void init(); 0053 0054 public Q_SLOTS: 0055 void slotQuit(); 0056 void slotImportUrl(const QString &url); 0057 void slotUpdateTitlePercent(); 0058 0059 protected: 0060 // ignore/accept quit events 0061 void closeEvent(QCloseEvent *) override; 0062 void hideEvent(QHideEvent *) override; 0063 void showEvent(QShowEvent *) override; 0064 0065 // drag and drop 0066 void dragEnterEvent(QDragEnterEvent *) override; 0067 void dropEvent(QDropEvent *) override; 0068 0069 // set sensitive initial size 0070 QSize sizeHint() const override; 0071 0072 private Q_SLOTS: 0073 // slots connected to actions 0074 void slotToggleDropTarget(); 0075 void slotNewTransfer(); 0076 void slotImportTransfers(); 0077 void slotExportTransfers(); 0078 void slotPreferences(); 0079 void slotDeleteGroup(); 0080 void slotRenameGroup(); 0081 void slotSetIconGroup(); 0082 void slotStartDownload(); 0083 void slotStopDownload(); 0084 void slotConfigureNotifications(); 0085 void slotToggleAutoPaste(); 0086 void slotTrayKonquerorIntegration(bool); 0087 void slotKonquerorIntegration(bool); 0088 void slotShowMenubar(); 0089 void slotTransferGroupSettings(); 0090 void slotTransferSettings(); 0091 void slotCreateMetalink(); 0092 void slotPriorityTop(); 0093 void slotPriorityBottom(); 0094 void slotPriorityUp(); 0095 void slotPriorityDown(); 0096 void slotDownloadFinishedActions(); 0097 0098 // transfers slots 0099 void slotStopAllDownload(); 0100 void slotStopSelectedDownload(); 0101 void slotStartAllDownload(); 0102 void slotStartSelectedDownload(); 0103 void slotDeleteSelected(); 0104 void slotDeleteSelectedIncludingFiles(); 0105 void slotRedownloadSelected(); 0106 void slotTransfersOpenDest(); 0107 void slotTransfersOpenFile(); 0108 void slotTransfersShowDetails(); 0109 void slotTransfersCopySourceUrl(); 0110 void slotDeleteFinished(); 0111 0112 // misc slots 0113 void slotSaveMyself(); 0114 void slotNewToolbarConfig(); 0115 void slotNewConfig(); 0116 void slotCheckClipboard(); 0117 void slotTransferHistory(); 0118 0119 // import links slots 0120 void slotShowListLinks(); 0121 0122 // Model changes 0123 void slotTransfersChanged(QMap<TransferHandler *, Transfer::ChangesFlags> transfers); 0124 void slotGroupsChanged(QMap<TransferGroupHandler *, TransferGroup::ChangesFlags> groups); 0125 0126 private: 0127 /** 0128 * Returns the completed percents of all active transfers 0129 */ 0130 int transfersPercent(); 0131 0132 // one-time functions 0133 void setupActions(); 0134 0135 KGet *m_kget = nullptr; 0136 0137 // internal widgets 0138 ViewsContainer *m_viewsContainer = nullptr; 0139 0140 // separated widgets 0141 DropTarget *m_drop = nullptr; 0142 Tray *m_dock = nullptr; 0143 0144 // actions 0145 KToggleAction *m_autoPasteAction = nullptr; 0146 KToggleAction *m_menubarAction = nullptr; 0147 KToggleAction *m_konquerorIntegration = nullptr; 0148 0149 // for autopaste function 0150 QString lastClipboard; 0151 // timer for checking clipboard - autopaste function 0152 QTimer *clipboardTimer = nullptr; 0153 0154 bool m_startWithoutAnimation; 0155 bool m_doTesting; // UnitTest flag 0156 0157 // HttpServer *m_webinterface; 0158 0159 #ifdef HAVE_QCA2 0160 QCA::Initializer m_qcaInit; 0161 #endif // HAVE_QCA2 0162 }; 0163 0164 #endif