/* * This file Copyright (C) 2009-2016 Mnemosyne LLC * * It may be used under the GNU GPL versions 2 or 3 * or any future license endorsed by Mnemosyne LLC. * */ #pragma once #include #include #include #include #include #include #include #include #include "Filters.h" #include "TorrentFilter.h" #include "ui_MainWindow.h" class QAction; class QIcon; class QMenu; class AboutDialog; class AddData; class DetailsDialog; class Prefs; class PrefsDialog; class Session; class SessionDialog; class StatsDialog; class TorrentDelegate; class TorrentDelegateMin; class TorrentModel; extern "C" { struct tr_variant; } class MainWindow: public QMainWindow { Q_OBJECT public: MainWindow (Session&, Prefs&, TorrentModel&, bool minized); virtual ~MainWindow (); QSystemTrayIcon& trayIcon () { return myTrayIcon; } public slots: void startAll (); void startSelected (); void startSelectedNow (); void pauseAll (); void pauseSelected (); void removeSelected (); void deleteSelected (); void verifySelected (); void queueMoveTop (); void queueMoveUp (); void queueMoveDown (); void queueMoveBottom (); void reannounceSelected (); void onNetworkTimer (); void setToolbarVisible (bool); void setFilterbarVisible (bool); void setStatusbarVisible (bool); void setCompactView (bool); void refreshActionSensitivity (); void refreshActionSensitivitySoon (); void wrongAuthentication (); void openSession (); protected: // QWidget virtual void contextMenuEvent (QContextMenuEvent *); virtual void dragEnterEvent (QDragEnterEvent *); virtual void dropEvent (QDropEvent *); private: QIcon getStockIcon (const QString&, int fallback = -1); QSet getSelectedTorrents (bool withMetadataOnly = false) const; void updateNetworkIcon (); QMenu * createOptionsMenu (); QMenu * createStatsModeMenu (); void initStatusBar (); void clearSelection (); void addTorrent (const AddData& addMe, bool showOptions); // QWidget virtual void hideEvent (QHideEvent * event); virtual void showEvent (QShowEvent * event); private slots: void openPreferences (); void refreshTitle (); void refreshStatusBar (); void refreshTrayIcon (); void refreshTrayIconSoon (); void refreshTorrentViewHeader (); void openTorrent (); void openURL (); void newTorrent (); void trayActivated (QSystemTrayIcon::ActivationReason); void refreshPref (int key); void addTorrents (const QStringList& filenames); void removeTorrents (const bool deleteFiles); void openStats (); void openDonate (); void openAbout (); void openHelp (); void openFolder (); void copyMagnetLinkToClipboard (); void setLocation (); void openProperties (); void toggleSpeedMode (); void dataReadProgress (); void dataSendProgress (); void onNetworkResponse (QNetworkReply::NetworkError code, const QString& message); void toggleWindows (bool doShow); void onSetPrefs (); void onSetPrefs (bool); void onSessionSourceChanged (); void onModelReset (); void setSortAscendingPref (bool); void onStatsModeChanged (QAction * action); void onSortModeChanged (QAction * action); private: Session& mySession; Prefs& myPrefs; TorrentModel& myModel; Ui_MainWindow ui; time_t myLastFullUpdateTime; QPointer mySessionDialog; QPointer myPrefsDialog; QPointer myAboutDialog; QPointer myStatsDialog; QPointer myDetailsDialog; QSystemTrayIcon myTrayIcon; TorrentFilter myFilterModel; TorrentDelegate * myTorrentDelegate; TorrentDelegateMin * myTorrentDelegateMin; time_t myLastSendTime; time_t myLastReadTime; QTimer myNetworkTimer; bool myNetworkError; QTimer myRefreshTrayIconTimer; QTimer myRefreshActionSensitivityTimer; QAction * myDlimitOffAction; QAction * myDlimitOnAction; QAction * myUlimitOffAction; QAction * myUlimitOnAction; QAction * myRatioOffAction; QAction * myRatioOnAction; QWidgetList myHidden; QWidget * myFilterBar; QAction * myAltSpeedAction; QString myErrorMessage; };