source: trunk/qt/mainwin.h @ 8216

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

(qt) better integration of sort & filter modes into the preferences mechanism

File size: 4.0 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 QModelIndex;
40class QSortFilterProxyModel;
41
42class TrMainWindow: public QMainWindow
43{
44        Q_OBJECT
45
46    private:
47        time_t myLastFullUpdateTime;
48        QDialog * myPrefsDialog;
49        QDialog * myAboutDialog;
50        QDialog * myStatsDialog;
51        QFileDialog * myFileDialog;
52        QCheckBox * myFileDialogOptionsCheck;
53        QSystemTrayIcon myTrayIcon;
54        TorrentFilter myFilterModel;
55        TorrentDelegate * myTorrentDelegate;
56        TorrentDelegateMin * myTorrentDelegateMin;
57        Session& mySession;
58        Prefs& myPrefs;
59        TorrentModel& myModel;
60        Ui_MainWindow ui;
61        QIcon mySpeedModeOffIcon;
62        QIcon mySpeedModeOnIcon;
63        time_t myLastSendTime;
64        time_t myLastReadTime;
65        QTimer myNetworkTimer;
66
67    private:
68        QIcon getStockIcon( const QString&, int fallback=-1 );
69
70    private:
71        void setShowMode( int );
72        QSet<int> getSelectedTorrents( ) const;
73        void updateNetworkIcon( );
74        QWidgetList myHidden;
75
76    private slots:
77        void showAll( );
78        void showActive( );
79        void showDownloading( );
80        void showSeeding( );
81        void showPaused( );
82        void filterByName( );
83        void filterByFiles( );
84        void filterByTracker( );
85        void showTotalRatio( );
86        void showTotalTransfer( );
87        void showSessionRatio( );
88        void showSessionTransfer( );
89        void refreshVisibleCount( );
90        void refreshStatusBar( );
91        void openTorrent( );
92        void newTorrent( );
93        void trayActivated( QSystemTrayIcon::ActivationReason );
94        void refreshPref( int key );
95        void addTorrents( const QStringList& filenames );
96        void openHelp( );
97        void openFolder( );
98        void openProperties( );
99        void toggleSpeedMode( );
100        void dataReadProgress( );
101        void dataSendProgress( );
102        void toggleWindows( );
103
104     private slots:
105        void setSortPref( int );
106        void setSortAscendingPref( bool );
107        void onSortByActivityToggled ( bool b );
108        void onSortByAgeToggled      ( bool b );
109        void onSortByETAToggled      ( bool b );
110        void onSortByNameToggled     ( bool b );
111        void onSortByProgressToggled ( bool b );
112        void onSortByRatioToggled    ( bool b );
113        void onSortBySizeToggled     ( bool b );
114        void onSortByStateToggled    ( bool b );
115        void onSortByTrackerToggled  ( bool b );
116
117
118     public slots:
119        void startAll( );
120        void startSelected( );
121        void pauseAll( );
122        void pauseSelected( );
123        void removeSelected( );
124        void deleteSelected( );
125        void verifySelected( );
126        void reannounceSelected( );
127        void addTorrent( const QString& filename );
128        void onNetworkTimer( );
129
130    private:
131        void clearSelection( );
132
133    public slots:
134        void setToolbarVisible( bool );
135        void setFilterbarVisible( bool );
136        void setStatusbarVisible( bool );
137        void setTrayIconVisible( bool );
138        void setMinimalView( bool );
139        void refreshActionSensitivity( );
140
141    public:
142        TrMainWindow( Session&, Prefs&, TorrentModel&, bool minized );
143        virtual ~TrMainWindow( );
144};
145
146#endif
Note: See TracBrowser for help on using the repository browser.