source: trunk/qt/mainwin.h @ 13733

Last change on this file since 13733 was 13733, checked in by jordan, 10 years ago

(qt) #5206 'tray icon cancels logout in KDE' -- fixed with patch from basinilya

  • Property svn:keywords set to Date Rev Author Id
File size: 5.6 KB
Line 
1/*
2 * This file Copyright (C) Mnemosyne LLC
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2
6 * as published by the Free Software Foundation.
7 *
8 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
9 *
10 * $Id: mainwin.h 13733 2013-01-01 20:02:20Z jordan $
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_variant;
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;
48class Filterbar;
49
50class TrMainWindow: public QMainWindow
51{
52        Q_OBJECT
53
54    private:
55        virtual void hideEvent( QHideEvent * event );
56        virtual void showEvent( QShowEvent * event );
57
58    private:
59        time_t myLastFullUpdateTime;
60        QDialog * mySessionDialog;
61        QDialog * myPrefsDialog;
62        QDialog * myAboutDialog;
63        QDialog * myStatsDialog;
64        Details * myDetailsDialog;
65        QCheckBox * myFileDialogOptionsCheck;
66        QSystemTrayIcon myTrayIcon;
67        TorrentFilter myFilterModel;
68        TorrentDelegate * myTorrentDelegate;
69        TorrentDelegateMin * myTorrentDelegateMin;
70        Session& mySession;
71        Prefs& myPrefs;
72        TorrentModel& myModel;
73        Ui_MainWindow ui;
74        QIcon mySpeedModeOffIcon;
75        QIcon mySpeedModeOnIcon;
76        time_t myLastSendTime;
77        time_t myLastReadTime;
78        QTimer myNetworkTimer;
79        QTimer myRefreshTrayIconTimer;
80        QTimer myRefreshActionSensitivityTimer;
81        QAction * myDlimitOffAction;
82        QAction * myDlimitOnAction;
83        QAction * myUlimitOffAction;
84        QAction * myUlimitOnAction;
85        QAction * myRatioOffAction;
86        QAction * myRatioOnAction;
87
88    private:
89        QIcon getStockIcon( const QString&, int fallback=-1 );
90
91    private:
92        QSet<int> getSelectedTorrents( ) const;
93        void updateNetworkIcon( );
94        QWidgetList myHidden;
95
96    public slots:
97        void openURL( QString );
98
99    private slots:
100        void onPrefsDestroyed( );
101        void openPreferences( );
102        void onDetailsDestroyed( );
103        void showTotalRatio( );
104        void showTotalTransfer( );
105        void showSessionRatio( );
106        void showSessionTransfer( );
107        void refreshVisibleCount( );
108        void refreshTitle( );
109        void refreshStatusBar( );
110        void refreshTrayIcon( );
111        void refreshTrayIconSoon( );
112        void openTorrent( );
113        void openURL( );
114        void newTorrent( );
115        void trayActivated( QSystemTrayIcon::ActivationReason );
116        void refreshPref( int key );
117        void addTorrents( const QStringList& filenames );
118        void removeTorrents( const bool deleteFiles );
119        void openDonate( );
120        void openHelp( );
121        void openFolder( );
122        void copyMagnetLinkToClipboard( );
123        void setLocation( );
124        void openProperties( );
125        void toggleSpeedMode( );
126        void dataReadProgress( );
127        void dataSendProgress( );
128        void toggleWindows( bool doShow );
129        void onSetPrefs( );
130        void onSetPrefs( bool );
131        void onSessionSourceChanged( );
132        void onModelReset( );
133
134    private slots:
135        void setSortPref             ( int );
136        void setSortAscendingPref    ( bool );
137        void onSortByActivityToggled ( bool );
138        void onSortByAgeToggled      ( bool );
139        void onSortByETAToggled      ( bool );
140        void onSortByNameToggled     ( bool );
141        void onSortByProgressToggled ( bool );
142        void onSortByQueueToggled    ( bool );
143        void onSortByRatioToggled    ( bool );
144        void onSortBySizeToggled     ( bool );
145        void onSortByStateToggled    ( bool );
146
147    private:
148        QWidget * myFilterBar;
149
150    private:
151        QMenu * createOptionsMenu( void );
152        QWidget * createStatusBar( void );
153        QWidget * myStatusBar;
154        QPushButton * myAltSpeedButton;
155        QAction * myAltSpeedAction;
156        QPushButton * myOptionsButton;
157        QLabel * myVisibleCountLabel;
158        QPushButton * myStatsModeButton;
159        QLabel * myStatsLabel;
160        QLabel * myDownloadSpeedLabel;
161        QLabel * myUploadSpeedLabel;
162        QLabel * myNetworkLabel;
163
164    public slots:
165        void startAll( );
166        void startSelected( );
167        void startSelectedNow( );
168        void pauseAll( );
169        void pauseSelected( );
170        void removeSelected( );
171        void deleteSelected( );
172        void verifySelected( );
173        void queueMoveTop( );
174        void queueMoveUp( );
175        void queueMoveDown( );
176        void queueMoveBottom( );
177        void reannounceSelected( );
178        void addTorrent( const QString& filename );
179        void onNetworkTimer( );
180
181    private:
182        void clearSelection( );
183
184    public slots:
185        void setToolbarVisible( bool );
186        void setFilterbarVisible( bool );
187        void setStatusbarVisible( bool );
188        void setCompactView( bool );
189        void refreshActionSensitivity( );
190        void refreshActionSensitivitySoon( );
191        void wrongAuthentication( );
192
193    public:
194        TrMainWindow( Session&, Prefs&, TorrentModel&, bool minized );
195        virtual ~TrMainWindow( );
196
197    protected:
198        virtual void contextMenuEvent( QContextMenuEvent * );
199        virtual void dragEnterEvent( QDragEnterEvent * );
200        virtual void dropEvent( QDropEvent * );
201};
202
203#endif
Note: See TracBrowser for help on using the repository browser.