source: trunk/qt/mainwin.h @ 8323

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

(trunk qt) Remember between runs whether we were running a local or remote session. Add a gui dialog for switching sessions during runtime.

File size: 5.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 <QLineEdit>
20#include <QIcon>
21#include <QMainWindow>
22#include <QMap>
23#include <QSet>
24#include <QSystemTrayIcon>
25#include <QTimer>
26#include <QWidgetList>
27
28extern "C" {
29    struct tr_benc;
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;
48
49class TrMainWindow: public QMainWindow
50{
51        Q_OBJECT
52
53    private:
54        time_t myLastFullUpdateTime;
55        QDialog * myPrefsDialog;
56        QDialog * myAboutDialog;
57        QDialog * myStatsDialog;
58        Details * myDetailsDialog;
59        QFileDialog * myFileDialog;
60        QCheckBox * myFileDialogOptionsCheck;
61        QSystemTrayIcon myTrayIcon;
62        TorrentFilter myFilterModel;
63        TorrentDelegate * myTorrentDelegate;
64        TorrentDelegateMin * myTorrentDelegateMin;
65        Session& mySession;
66        Prefs& myPrefs;
67        TorrentModel& myModel;
68        Ui_MainWindow ui;
69        QIcon mySpeedModeOffIcon;
70        QIcon mySpeedModeOnIcon;
71        time_t myLastSendTime;
72        time_t myLastReadTime;
73        QTimer myNetworkTimer;
74        QAction * myDlimitOffAction;
75        QAction * myDlimitOnAction;
76        QAction * myUlimitOffAction;
77        QAction * myUlimitOnAction;
78        QAction * myRatioOffAction;
79        QAction * myRatioOnAction;
80
81    private:
82        QIcon getStockIcon( const QString&, int fallback=-1 );
83
84    private:
85        void setShowMode( int );
86        QSet<int> getSelectedTorrents( ) const;
87        void updateNetworkIcon( );
88        QWidgetList myHidden;
89
90    private slots:
91        void onDetailsDestroyed( );
92        void onShowModeClicked( );
93        void showAll( );
94        void showActive( );
95        void showDownloading( );
96        void showSeeding( );
97        void showPaused( );
98        void filterByName( );
99        void filterByFiles( );
100        void filterByTracker( );
101        void showTotalRatio( );
102        void showTotalTransfer( );
103        void showSessionRatio( );
104        void showSessionTransfer( );
105        void refreshVisibleCount( );
106        void refreshTitle( );
107        void refreshStatusBar( );
108        void openTorrent( );
109        void newTorrent( );
110        void trayActivated( QSystemTrayIcon::ActivationReason );
111        void refreshPref( int key );
112        void addTorrents( const QStringList& filenames );
113        void openHelp( );
114        void openFolder( );
115        void openProperties( );
116        void openSessionDialog( );
117        void toggleSpeedMode( );
118        void dataReadProgress( );
119        void dataSendProgress( );
120        void toggleWindows( );
121        void onSetPrefs( );
122        void onSetPrefs( bool );
123        void onSessionSourceChanged( );
124
125    private slots:
126        void setSortPref             ( int );
127        void setSortAscendingPref    ( bool );
128        void onSortByActivityToggled ( bool );
129        void onSortByAgeToggled      ( bool );
130        void onSortByETAToggled      ( bool );
131        void onSortByNameToggled     ( bool );
132        void onSortByProgressToggled ( bool );
133        void onSortByRatioToggled    ( bool );
134        void onSortBySizeToggled     ( bool );
135        void onSortByStateToggled    ( bool );
136        void onSortByTrackerToggled  ( bool );
137
138    private:
139        QWidget * createFilterBar( void );
140        QWidget * myFilterBar;
141        QPushButton * myFilterButtons[FilterMode::NUM_MODES];
142        QPushButton * myFilterTextButton;
143        QLineEdit * myFilterTextLineEdit;
144
145    private:
146        QMenu * createOptionsMenu( void );
147        QWidget * createStatusBar( void );
148        QWidget * myStatusBar;
149        QWidgetList myUpStatusWidgets;
150        QWidgetList myDownStatusWidgets;
151        QPushButton * myAltSpeedButton;
152        QPushButton * myOptionsButton;
153        QLabel * myVisibleCountLabel;
154        QPushButton * myStatsModeButton;
155        QLabel * myStatsLabel;
156        QLabel * myDownloadSpeedLabel;
157        QLabel * myUploadSpeedLabel;
158        QLabel * myNetworkLabel;
159
160    public slots:
161        void startAll( );
162        void startSelected( );
163        void pauseAll( );
164        void pauseSelected( );
165        void removeSelected( );
166        void deleteSelected( );
167        void verifySelected( );
168        void reannounceSelected( );
169        void addTorrent( const QString& filename );
170        void onNetworkTimer( );
171
172    private:
173        void clearSelection( );
174
175    public slots:
176        void setToolbarVisible( bool );
177        void setFilterbarVisible( bool );
178        void setStatusbarVisible( bool );
179        void setTrayIconVisible( bool );
180        void setMinimalView( bool );
181        void refreshActionSensitivity( );
182
183    public:
184        TrMainWindow( Session&, Prefs&, TorrentModel&, bool minized );
185        virtual ~TrMainWindow( );
186};
187
188#endif
Note: See TracBrowser for help on using the repository browser.