/* * This file Copyright (C) Mnemosyne LLC * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * $Id$ */ #ifndef MAIN_WINDOW_H #define MAIN_WINDOW_H #include #include #include #include #include #include #include #include #include #include #include extern "C" { struct tr_variant; }; #include "filters.h" #include "torrent-filter.h" #include "ui_mainwin.h" class ActionDelegator; class Prefs; class Details; class Session; class TorrentDelegate; class TorrentDelegateMin; class TorrentModel; class QAction; class QLabel; class QMenu; class QModelIndex; class QSortFilterProxyModel; class Filterbar; class TrMainWindow: public QMainWindow { Q_OBJECT private: virtual void hideEvent (QHideEvent * event); virtual void showEvent (QShowEvent * event); private: time_t myLastFullUpdateTime; QDialog * mySessionDialog; QDialog * myPrefsDialog; QDialog * myAboutDialog; QDialog * myStatsDialog; Details * myDetailsDialog; QCheckBox * myFileDialogOptionsCheck; QSystemTrayIcon myTrayIcon; TorrentFilter myFilterModel; TorrentDelegate * myTorrentDelegate; TorrentDelegateMin * myTorrentDelegateMin; Session& mySession; Prefs& myPrefs; TorrentModel& myModel; Ui_MainWindow ui; QIcon mySpeedModeOffIcon; QIcon mySpeedModeOnIcon; time_t myLastSendTime; time_t myLastReadTime; QTimer myNetworkTimer; QTimer myRefreshTrayIconTimer; QTimer myRefreshActionSensitivityTimer; QAction * myDlimitOffAction; QAction * myDlimitOnAction; QAction * myUlimitOffAction; QAction * myUlimitOnAction; QAction * myRatioOffAction; QAction * myRatioOnAction; private: QIcon getStockIcon (const QString&, int fallback=-1); private: QSet getSelectedTorrents () const; void updateNetworkIcon (); QWidgetList myHidden; public slots: void openURL (QString); private slots: void onPrefsDestroyed (); void openPreferences (); void onDetailsDestroyed (); void showTotalRatio (); void showTotalTransfer (); void showSessionRatio (); void showSessionTransfer (); void refreshFreeSpace (); void refreshTitle (); void refreshStatusBar (); void refreshTrayIcon (); void refreshTrayIconSoon (); 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 openDonate (); void openHelp (); void openFolder (); void copyMagnetLinkToClipboard (); void setLocation (); void openProperties (); void toggleSpeedMode (); void dataReadProgress (); void dataSendProgress (); void toggleWindows (bool doShow); void onSetPrefs (); void onSetPrefs (bool); void onSessionSourceChanged (); void onModelReset (); private slots: void setSortPref (int); void setSortAscendingPref (bool); void onSortByActivityToggled (bool); void onSortByAgeToggled (bool); void onSortByETAToggled (bool); void onSortByNameToggled (bool); void onSortByProgressToggled (bool); void onSortByQueueToggled (bool); void onSortByRatioToggled (bool); void onSortBySizeToggled (bool); void onSortByStateToggled (bool); private: QWidget * myFilterBar; private: QMenu * createOptionsMenu (void); QWidget * createStatusBar (void); QWidget * myStatusBar; QPushButton * myAltSpeedButton; QAction * myAltSpeedAction; QPushButton * myOptionsButton; QPushButton * myStatsModeButton; QLabel * myStatsLabel; QLabel * myDownloadSpeedLabel; QLabel * myUploadSpeedLabel; QLabel * myFreeSpaceTextLabel; QLabel * myFreeSpaceIconLabel; QLabel * myNetworkLabel; 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 addTorrent (const QString& filename); void onNetworkTimer (); private: void clearSelection (); public slots: void setToolbarVisible (bool); void setFilterbarVisible (bool); void setStatusbarVisible (bool); void setCompactView (bool); void refreshActionSensitivity (); void refreshActionSensitivitySoon (); void wrongAuthentication (); public: TrMainWindow (Session&, Prefs&, TorrentModel&, bool minized); virtual ~TrMainWindow (); protected: virtual void contextMenuEvent (QContextMenuEvent *); virtual void dragEnterEvent (QDragEnterEvent *); virtual void dropEvent (QDropEvent *); }; #endif