source: trunk/qt/mainwin.h @ 13927

Last change on this file since 13927 was 13927, checked in by jordan, 10 years ago

in the Qt and GTK+ clients, move the torrent count indicator from the statusbar to the filterbar

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