source: trunk/qt/mainwin.h @ 14241

Last change on this file since 14241 was 14241, checked in by jordan, 9 years ago

Copyedit the license's revised text: (1) remove unnecessary repitition use of the word 'license' from the top of the header and source files (2) add the standard 'we hope it's useful, but no warranty' clause to COPYING (3) make explicit that linking OpenSSL is allowed (see https://people.gnome.org/~markmc/openssl-and-the-gpl.html for background) (4) sync the Qt and GTK+ clients' license popups with COPYING's revised text

  • Property svn:keywords set to Date Rev Author Id
File size: 5.0 KB
Line 
1/*
2 * This file Copyright (C) 2009-2014 Mnemosyne LLC
3 *
4 * It may be used under the GNU GPL versions 2 or 3
5 * or any future license endorsed by Mnemosyne LLC.
6 *
7 * $Id: mainwin.h 14241 2014-01-21 03:10:30Z jordan $
8 */
9
10#ifndef MAIN_WINDOW_H
11#define MAIN_WINDOW_H
12
13#include <ctime>
14#include <QLineEdit>
15#include <QIcon>
16#include <QMainWindow>
17#include <QMap>
18#include <QPushButton>
19#include <QSet>
20#include <QSystemTrayIcon>
21#include <QTimer>
22#include <QWidgetList>
23#include <QNetworkReply>
24
25extern "C"
26{
27  struct tr_variant;
28}
29
30#include "filters.h"
31#include "torrent-filter.h"
32#include "ui_mainwin.h"
33
34class AddData;
35class ActionDelegator;
36class Prefs;
37class Details;
38class Session;
39class TorrentDelegate;
40class TorrentDelegateMin;
41class TorrentModel;
42class QAction;
43class QLabel;
44class QMenu;
45class QModelIndex;
46class QSortFilterProxyModel;
47class Filterbar;
48
49class TrMainWindow: public QMainWindow
50{
51    Q_OBJECT
52
53  private:
54    virtual void hideEvent (QHideEvent * event);
55    virtual void showEvent (QShowEvent * event);
56
57  private:
58    time_t myLastFullUpdateTime;
59    QDialog * mySessionDialog;
60    QDialog * myPrefsDialog;
61    QDialog * myAboutDialog;
62    QDialog * myStatsDialog;
63    Details * myDetailsDialog;
64    QSystemTrayIcon myTrayIcon;
65    TorrentFilter myFilterModel;
66    TorrentDelegate * myTorrentDelegate;
67    TorrentDelegateMin * myTorrentDelegateMin;
68    Session& mySession;
69    Prefs& myPrefs;
70    TorrentModel& myModel;
71    Ui_MainWindow ui;
72    QIcon mySpeedModeOffIcon;
73    QIcon mySpeedModeOnIcon;
74    time_t myLastSendTime;
75    time_t myLastReadTime;
76    QTimer myNetworkTimer;
77    bool myNetworkError;
78    QTimer myRefreshTrayIconTimer;
79    QTimer myRefreshActionSensitivityTimer;
80    QAction * myDlimitOffAction;
81    QAction * myDlimitOnAction;
82    QAction * myUlimitOffAction;
83    QAction * myUlimitOnAction;
84    QAction * myRatioOffAction;
85    QAction * myRatioOnAction;
86
87  private:
88    QIcon getStockIcon (const QString&, int fallback=-1);
89
90  private:
91    QSet<int> getSelectedTorrents () const;
92    void updateNetworkIcon ();
93    QWidgetList myHidden;
94
95  private slots:
96    void onPrefsDestroyed ();
97    void openPreferences ();
98    void onDetailsDestroyed ();
99    void showTotalRatio ();
100    void showTotalTransfer ();
101    void showSessionRatio ();
102    void showSessionTransfer ();
103    void refreshTitle ();
104    void refreshStatusBar ();
105    void refreshTrayIcon ();
106    void refreshTrayIconSoon ();
107    void openTorrent ();
108    void openURL ();
109    void newTorrent ();
110    void trayActivated (QSystemTrayIcon::ActivationReason);
111    void refreshPref (int key);
112    void addTorrents (const QStringList& filenames);
113    void removeTorrents (const bool deleteFiles);
114    void openDonate ();
115    void openHelp ();
116    void openFolder ();
117    void copyMagnetLinkToClipboard ();
118    void setLocation ();
119    void openProperties ();
120    void toggleSpeedMode ();
121    void dataReadProgress ();
122    void dataSendProgress ();
123    void onError (QNetworkReply::NetworkError);
124    void errorMessage (const QString);
125    void toggleWindows (bool doShow);
126    void onSetPrefs ();
127    void onSetPrefs (bool);
128    void onSessionSourceChanged ();
129    void onModelReset ();
130
131  private slots:
132    void setSortPref (int);
133    void setSortAscendingPref (bool);
134    void onSortByActivityToggled (bool);
135    void onSortByAgeToggled (bool);
136    void onSortByETAToggled (bool);
137    void onSortByNameToggled (bool);
138    void onSortByProgressToggled (bool);
139    void onSortByQueueToggled (bool);
140    void onSortByRatioToggled (bool);
141    void onSortBySizeToggled (bool);
142    void onSortByStateToggled (bool);
143
144  private:
145    QWidget * myFilterBar;
146
147  private:
148    QMenu * createOptionsMenu (void);
149    QWidget * createStatusBar (void);
150    QWidget * myStatusBar;
151    QPushButton * myAltSpeedButton;
152    QAction * myAltSpeedAction;
153    QPushButton * myOptionsButton;
154    QPushButton * myStatsModeButton;
155    QLabel * myStatsLabel;
156    QLabel * myDownloadSpeedLabel;
157    QLabel * myUploadSpeedLabel;
158    QLabel * myNetworkLabel;
159    QString myErrorMessage;
160
161  public slots:
162    void startAll ();
163    void startSelected ();
164    void startSelectedNow ();
165    void pauseAll ();
166    void pauseSelected ();
167    void removeSelected ();
168    void deleteSelected ();
169    void verifySelected ();
170    void queueMoveTop ();
171    void queueMoveUp ();
172    void queueMoveDown ();
173    void queueMoveBottom ();
174    void reannounceSelected ();
175    void onNetworkTimer ();
176
177  private:
178    void clearSelection ();
179    void addTorrent (const AddData& addMe, bool showOptions);
180
181  public slots:
182    void setToolbarVisible (bool);
183    void setFilterbarVisible (bool);
184    void setStatusbarVisible (bool);
185    void setCompactView (bool);
186    void refreshActionSensitivity ();
187    void refreshActionSensitivitySoon ();
188    void wrongAuthentication ();
189
190  public:
191    TrMainWindow (Session&, Prefs&, TorrentModel&, bool minized);
192    virtual ~TrMainWindow ();
193
194  protected:
195    virtual void contextMenuEvent (QContextMenuEvent *);
196    virtual void dragEnterEvent (QDragEnterEvent *);
197    virtual void dropEvent (QDropEvent *);
198};
199
200#endif
Note: See TracBrowser for help on using the repository browser.