source: trunk/qt/mainwin.h @ 14389

Last change on this file since 14389 was 14389, checked in by mikedld, 8 years ago

Move status bar creation to mainwin.ui

Among other things,

  • fix turtle icons size (20x14 -> 16x16)
  • use QIcon states instead of changing the turtle icon ourselves each time (unchecked - off, checked - on)
  • make speed limit action in tray menu checkable
  • simplify status bar buttons drawing and use QToolButton instead of QPushButton
  • Property svn:keywords set to Date Rev Author Id
File size: 4.7 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 14389 2014-12-18 01:30:50Z mikedld $
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    time_t myLastSendTime;
73    time_t myLastReadTime;
74    QTimer myNetworkTimer;
75    bool myNetworkError;
76    QTimer myRefreshTrayIconTimer;
77    QTimer myRefreshActionSensitivityTimer;
78    QAction * myDlimitOffAction;
79    QAction * myDlimitOnAction;
80    QAction * myUlimitOffAction;
81    QAction * myUlimitOnAction;
82    QAction * myRatioOffAction;
83    QAction * myRatioOnAction;
84
85  private:
86    QIcon getStockIcon (const QString&, int fallback=-1);
87
88  private:
89    QSet<int> getSelectedTorrents () const;
90    void updateNetworkIcon ();
91    QWidgetList myHidden;
92
93  private slots:
94    void onPrefsDestroyed ();
95    void openPreferences ();
96    void onDetailsDestroyed ();
97    void showTotalRatio ();
98    void showTotalTransfer ();
99    void showSessionRatio ();
100    void showSessionTransfer ();
101    void refreshTitle ();
102    void refreshStatusBar ();
103    void refreshTrayIcon ();
104    void refreshTrayIconSoon ();
105    void openTorrent ();
106    void openURL ();
107    void newTorrent ();
108    void trayActivated (QSystemTrayIcon::ActivationReason);
109    void refreshPref (int key);
110    void addTorrents (const QStringList& filenames);
111    void removeTorrents (const bool deleteFiles);
112    void openDonate ();
113    void openHelp ();
114    void openFolder ();
115    void copyMagnetLinkToClipboard ();
116    void setLocation ();
117    void openProperties ();
118    void toggleSpeedMode ();
119    void dataReadProgress ();
120    void dataSendProgress ();
121    void onError (QNetworkReply::NetworkError);
122    void errorMessage (const QString&);
123    void toggleWindows (bool doShow);
124    void onSetPrefs ();
125    void onSetPrefs (bool);
126    void onSessionSourceChanged ();
127    void onModelReset ();
128
129  private slots:
130    void setSortPref (int);
131    void setSortAscendingPref (bool);
132    void onSortByActivityToggled (bool);
133    void onSortByAgeToggled (bool);
134    void onSortByETAToggled (bool);
135    void onSortByNameToggled (bool);
136    void onSortByProgressToggled (bool);
137    void onSortByQueueToggled (bool);
138    void onSortByRatioToggled (bool);
139    void onSortBySizeToggled (bool);
140    void onSortByStateToggled (bool);
141
142  private:
143    QWidget * myFilterBar;
144
145  private:
146    QMenu * createOptionsMenu ();
147    QMenu * createStatsModeMenu ();
148    void initStatusBar ();
149
150    QAction * myAltSpeedAction;
151    QString myErrorMessage;
152
153  public slots:
154    void startAll ();
155    void startSelected ();
156    void startSelectedNow ();
157    void pauseAll ();
158    void pauseSelected ();
159    void removeSelected ();
160    void deleteSelected ();
161    void verifySelected ();
162    void queueMoveTop ();
163    void queueMoveUp ();
164    void queueMoveDown ();
165    void queueMoveBottom ();
166    void reannounceSelected ();
167    void onNetworkTimer ();
168
169  private:
170    void clearSelection ();
171    void addTorrent (const AddData& addMe, bool showOptions);
172
173  public slots:
174    void setToolbarVisible (bool);
175    void setFilterbarVisible (bool);
176    void setStatusbarVisible (bool);
177    void setCompactView (bool);
178    void refreshActionSensitivity ();
179    void refreshActionSensitivitySoon ();
180    void wrongAuthentication ();
181
182  public:
183    TrMainWindow (Session&, Prefs&, TorrentModel&, bool minized);
184    virtual ~TrMainWindow ();
185
186  protected:
187    virtual void contextMenuEvent (QContextMenuEvent *);
188    virtual void dragEnterEvent (QDragEnterEvent *);
189    virtual void dropEvent (QDropEvent *);
190};
191
192#endif
Note: See TracBrowser for help on using the repository browser.