source: trunk/qt/mainwin.h @ 8236

Last change on this file since 8236 was 8236, checked in by charles, 13 years ago

(trunk qt) #1522: add upload/download/ratio limits popup menu at the bottom of the main window

File size: 4.3 KB
Line 
1/*
2 * This file Copyright (C) 2009 Charles Kerr <charles@transmissionbt.com>
3 *
4 * This file is licensed by the GPL version 2.  Works owned by the
5 * Transmission project are granted a special exemption to clause 2(b)
6 * so that the bulk of its code can remain under the MIT license.
7 * This exemption does not extend to derived works not owned by
8 * the Transmission project.
9 *
10 * $Id:$
11 */
12
13#ifndef MAIN_WINDOW_H
14#define MAIN_WINDOW_H
15
16#include <ctime>
17#include <QCheckBox>
18#include <QFileDialog>
19#include <QIcon>
20#include <QMainWindow>
21#include <QSet>
22#include <QSystemTrayIcon>
23#include <QTimer>
24#include <QWidgetList>
25
26extern "C" {
27    struct tr_benc;
28};
29
30#include "torrent-filter.h"
31#include "ui_mainwin.h"
32
33class ActionDelegator;
34class Prefs;
35class Session;
36class TorrentDelegate;
37class TorrentDelegateMin;
38class TorrentModel;
39class QAction;
40class QMenu;
41class QModelIndex;
42class QSortFilterProxyModel;
43
44class TrMainWindow: public QMainWindow
45{
46        Q_OBJECT
47
48    private:
49        time_t myLastFullUpdateTime;
50        QDialog * myPrefsDialog;
51        QDialog * myAboutDialog;
52        QDialog * myStatsDialog;
53        QFileDialog * myFileDialog;
54        QCheckBox * myFileDialogOptionsCheck;
55        QSystemTrayIcon myTrayIcon;
56        TorrentFilter myFilterModel;
57        TorrentDelegate * myTorrentDelegate;
58        TorrentDelegateMin * myTorrentDelegateMin;
59        Session& mySession;
60        Prefs& myPrefs;
61        TorrentModel& myModel;
62        Ui_MainWindow ui;
63        QIcon mySpeedModeOffIcon;
64        QIcon mySpeedModeOnIcon;
65        time_t myLastSendTime;
66        time_t myLastReadTime;
67        QTimer myNetworkTimer;
68        QAction * myDlimitOffAction;
69        QAction * myDlimitOnAction;
70        QAction * myUlimitOffAction;
71        QAction * myUlimitOnAction;
72        QAction * myRatioOffAction;
73        QAction * myRatioOnAction;
74
75    private:
76        QIcon getStockIcon( const QString&, int fallback=-1 );
77
78    private:
79        void setShowMode( int );
80        QSet<int> getSelectedTorrents( ) const;
81        void updateNetworkIcon( );
82        QWidgetList myHidden;
83
84    private slots:
85        void showAll( );
86        void showActive( );
87        void showDownloading( );
88        void showSeeding( );
89        void showPaused( );
90        void filterByName( );
91        void filterByFiles( );
92        void filterByTracker( );
93        void showTotalRatio( );
94        void showTotalTransfer( );
95        void showSessionRatio( );
96        void showSessionTransfer( );
97        void refreshVisibleCount( );
98        void refreshStatusBar( );
99        void openTorrent( );
100        void newTorrent( );
101        void trayActivated( QSystemTrayIcon::ActivationReason );
102        void refreshPref( int key );
103        void addTorrents( const QStringList& filenames );
104        void openHelp( );
105        void openFolder( );
106        void openProperties( );
107        void toggleSpeedMode( );
108        void dataReadProgress( );
109        void dataSendProgress( );
110        void toggleWindows( );
111        void onSetPrefs( );
112        void onSetPrefs( bool );
113
114    private slots:
115        void setSortPref             ( int );
116        void setSortAscendingPref    ( bool );
117        void onSortByActivityToggled ( bool );
118        void onSortByAgeToggled      ( bool );
119        void onSortByETAToggled      ( bool );
120        void onSortByNameToggled     ( bool );
121        void onSortByProgressToggled ( bool );
122        void onSortByRatioToggled    ( bool );
123        void onSortBySizeToggled     ( bool );
124        void onSortByStateToggled    ( bool );
125        void onSortByTrackerToggled  ( bool );
126
127    private:
128        QMenu* createOptionsMenu( void );
129
130    public slots:
131        void startAll( );
132        void startSelected( );
133        void pauseAll( );
134        void pauseSelected( );
135        void removeSelected( );
136        void deleteSelected( );
137        void verifySelected( );
138        void reannounceSelected( );
139        void addTorrent( const QString& filename );
140        void onNetworkTimer( );
141
142    private:
143        void clearSelection( );
144
145    public slots:
146        void setToolbarVisible( bool );
147        void setFilterbarVisible( bool );
148        void setStatusbarVisible( bool );
149        void setTrayIconVisible( bool );
150        void setMinimalView( bool );
151        void refreshActionSensitivity( );
152
153    public:
154        TrMainWindow( Session&, Prefs&, TorrentModel&, bool minized );
155        virtual ~TrMainWindow( );
156};
157
158#endif
Note: See TracBrowser for help on using the repository browser.