File indexing completed on 2023-10-01 05:01:33
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 class ViewsContainer; 0026 class DropTarget; 0027 class DBusKgetWrapper; 0028 class HttpServer; 0029 class KGet; 0030 0031 /** 0032 * The main window of KGet. 0033 * 0034 * Can be collapsed or expanded. 0035 */ 0036 class MainWindow : public KXmlGuiWindow 0037 { 0038 friend class DBusKGetWrapper; 0039 0040 Q_OBJECT 0041 public: 0042 explicit MainWindow(bool showMainwindow = true, bool startWithoutAnimation = false, bool doTesting = false, QWidget *parent = nullptr); 0043 ~MainWindow() override; 0044 0045 virtual void setSystemTrayDownloading(bool running); 0046 0047 // no slot, to make sure that MainWindow is correctly initialized before any transfers get added 0048 void init(); 0049 0050 public Q_SLOTS: 0051 void slotQuit(); 0052 void slotImportUrl(const QString &url); 0053 void slotUpdateTitlePercent(); 0054 0055 protected: 0056 // ignore/accept quit events 0057 void closeEvent(QCloseEvent *) override; 0058 void hideEvent(QHideEvent *) override; 0059 void showEvent(QShowEvent *) override; 0060 0061 // drag and drop 0062 void dragEnterEvent(QDragEnterEvent *) override; 0063 void dropEvent(QDropEvent *) override; 0064 0065 // set sensitive initial size 0066 QSize sizeHint() const override; 0067 0068 private Q_SLOTS: 0069 // slots connected to actions 0070 void slotToggleDropTarget(); 0071 void slotNewTransfer(); 0072 void slotImportTransfers(); 0073 void slotExportTransfers(); 0074 void slotPreferences(); 0075 void slotDeleteGroup(); 0076 void slotRenameGroup(); 0077 void slotSetIconGroup(); 0078 void slotStartDownload(); 0079 void slotStopDownload(); 0080 void slotConfigureNotifications(); 0081 void slotToggleAutoPaste(); 0082 void slotTrayKonquerorIntegration(bool); 0083 void slotKonquerorIntegration(bool); 0084 void slotShowMenubar(); 0085 void slotTransferGroupSettings(); 0086 void slotTransferSettings(); 0087 void slotCreateMetalink(); 0088 void slotPriorityTop(); 0089 void slotPriorityBottom(); 0090 void slotPriorityUp(); 0091 void slotPriorityDown(); 0092 void slotDownloadFinishedActions(); 0093 0094 // transfers slots 0095 void slotStopAllDownload(); 0096 void slotStopSelectedDownload(); 0097 void slotStartAllDownload(); 0098 void slotStartSelectedDownload(); 0099 void slotDeleteSelected(); 0100 void slotDeleteSelectedIncludingFiles(); 0101 void slotRedownloadSelected(); 0102 void slotTransfersOpenDest(); 0103 void slotTransfersOpenFile(); 0104 void slotTransfersShowDetails(); 0105 void slotTransfersCopySourceUrl(); 0106 void slotDeleteFinished(); 0107 0108 // misc slots 0109 void slotSaveMyself(); 0110 void slotNewToolbarConfig(); 0111 void slotNewConfig(); 0112 void slotCheckClipboard(); 0113 void slotTransferHistory(); 0114 0115 // import links slots 0116 void slotShowListLinks(); 0117 0118 // Model changes 0119 void slotTransfersChanged(QMap<TransferHandler *, Transfer::ChangesFlags> transfers); 0120 void slotGroupsChanged(QMap<TransferGroupHandler *, TransferGroup::ChangesFlags> groups); 0121 0122 private: 0123 /** 0124 * Returns the completed percents of all active transfers 0125 */ 0126 int transfersPercent(); 0127 0128 // one-time functions 0129 void setupActions(); 0130 0131 KGet *m_kget = nullptr; 0132 0133 // internal widgets 0134 ViewsContainer *m_viewsContainer = nullptr; 0135 0136 // separated widgets 0137 DropTarget *m_drop = nullptr; 0138 Tray *m_dock = nullptr; 0139 0140 // actions 0141 KToggleAction *m_autoPasteAction = nullptr; 0142 KToggleAction *m_menubarAction = nullptr; 0143 KToggleAction *m_konquerorIntegration = nullptr; 0144 0145 // for autopaste function 0146 QString lastClipboard; 0147 // timer for checking clipboard - autopaste function 0148 QTimer *clipboardTimer = nullptr; 0149 0150 bool m_startWithoutAnimation; 0151 bool m_doTesting; // UnitTest flag 0152 0153 // HttpServer *m_webinterface; 0154 }; 0155 0156 #endif