source: trunk/qt/mainwin.h @ 10790

Last change on this file since 10790 was 10790, checked in by Longinus00, 12 years ago

(qt) #3268:Within each session, each torrent added presents options dialog for that and all previous torrents added in that sesssion

  • Property svn:keywords set to Date Rev Author Id
File size: 5.6 KB
Line 
1/*
2 * This file Copyright (C) 2009-2010 Mnemosyne LLC
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: mainwin.h 10790 2010-06-17 05:56:48Z Longinus00 $
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_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        virtual void closeEvent( QCloseEvent * event );
55
56    private:
57        time_t myLastFullUpdateTime;
58        QDialog * mySessionDialog;
59        QDialog * myPrefsDialog;
60        QDialog * myAboutDialog;
61        QDialog * myStatsDialog;
62        Details * myDetailsDialog;
63        QCheckBox * myFileDialogOptionsCheck;
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        QIcon mySpeedModeOffIcon;
73        QIcon mySpeedModeOnIcon;
74        time_t myLastSendTime;
75        time_t myLastReadTime;
76        QTimer myNetworkTimer;
77        QAction * myDlimitOffAction;
78        QAction * myDlimitOnAction;
79        QAction * myUlimitOffAction;
80        QAction * myUlimitOnAction;
81        QAction * myRatioOffAction;
82        QAction * myRatioOnAction;
83
84    private:
85        QIcon getStockIcon( const QString&, int fallback=-1 );
86
87    private:
88        void setShowMode( int );
89        QSet<int> getSelectedTorrents( ) const;
90        void updateNetworkIcon( );
91        QWidgetList myHidden;
92
93    public slots:
94        void openURL( QString );
95
96    private slots:
97        void onPrefsDestroyed( );
98        void openPreferences( );
99        void onDetailsDestroyed( );
100        void onShowModeClicked( );
101        void showAll( );
102        void showActive( );
103        void showDownloading( );
104        void showSeeding( );
105        void showPaused( );
106        void filterByName( );
107        void filterByFiles( );
108        void filterByTracker( );
109        void showTotalRatio( );
110        void showTotalTransfer( );
111        void showSessionRatio( );
112        void showSessionTransfer( );
113        void refreshVisibleCount( );
114        void refreshTitle( );
115        void refreshStatusBar( );
116        void openTorrent( );
117        void openURL( );
118        void newTorrent( );
119        void trayActivated( QSystemTrayIcon::ActivationReason );
120        void refreshPref( int key );
121        void addTorrents( const QStringList& filenames );
122        void removeTorrents( const bool deleteFiles );
123        void openHelp( );
124        void openFolder( );
125        void copyMagnetLinkToClipboard( );
126        void setLocation( );
127        void openProperties( );
128        void toggleSpeedMode( );
129        void dataReadProgress( );
130        void dataSendProgress( );
131        void toggleWindows( bool doShow );
132        void onSetPrefs( );
133        void onSetPrefs( bool );
134        void onSessionSourceChanged( );
135        void onModelReset( );
136
137    private slots:
138        void setSortPref             ( int );
139        void setSortAscendingPref    ( bool );
140        void onSortByActivityToggled ( bool );
141        void onSortByAgeToggled      ( bool );
142        void onSortByETAToggled      ( bool );
143        void onSortByNameToggled     ( bool );
144        void onSortByProgressToggled ( bool );
145        void onSortByRatioToggled    ( bool );
146        void onSortBySizeToggled     ( bool );
147        void onSortByStateToggled    ( bool );
148        void onSortByTrackerToggled  ( bool );
149
150    private:
151        QWidget * createFilterBar( void );
152        QWidget * myFilterBar;
153        QPushButton * myFilterButtons[FilterMode::NUM_MODES];
154        QPushButton * myFilterTextButton;
155        QLineEdit * myFilterTextLineEdit;
156
157    private:
158        QMenu * createOptionsMenu( void );
159        QWidget * createStatusBar( void );
160        QWidget * myStatusBar;
161        QWidgetList myUpStatusWidgets;
162        QWidgetList myDownStatusWidgets;
163        QPushButton * myAltSpeedButton;
164        QPushButton * myOptionsButton;
165        QLabel * myVisibleCountLabel;
166        QPushButton * myStatsModeButton;
167        QLabel * myStatsLabel;
168        QLabel * myDownloadSpeedLabel;
169        QLabel * myUploadSpeedLabel;
170        QLabel * myNetworkLabel;
171
172    public slots:
173        void startAll( );
174        void startSelected( );
175        void pauseAll( );
176        void pauseSelected( );
177        void removeSelected( );
178        void deleteSelected( );
179        void verifySelected( );
180        void reannounceSelected( );
181        void addTorrent( const QString& filename );
182        void onNetworkTimer( );
183
184    private:
185        void clearSelection( );
186
187    public slots:
188        void setToolbarVisible( bool );
189        void setFilterbarVisible( bool );
190        void setStatusbarVisible( bool );
191        void setTrayIconVisible( bool );
192        void setCompactView( bool );
193        void refreshActionSensitivity( );
194        void wrongAuthentication( );
195
196    public:
197        TrMainWindow( Session&, Prefs&, TorrentModel&, bool minized );
198        virtual ~TrMainWindow( );
199};
200
201#endif
Note: See TracBrowser for help on using the repository browser.