source: trunk/qt/session.h @ 8345

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

(trunk qt) hide the network icon when the transmission session is being run inside the client. patch by stdisease

File size: 4.5 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 TR_APP_SESSION_H
14#define TR_APP_SESSION_H
15
16#include <QObject>
17#include <QSet>
18#include <QBuffer>
19#include <QFileInfoList>
20#include <QString>
21#include <QHttp>
22#include <QUrl>
23
24#include <libtransmission/transmission.h>
25
26#include "speed.h"
27
28extern "C"
29{
30    struct tr_benc;
31}
32
33class Prefs;
34
35class Session: public QObject
36{
37        Q_OBJECT
38
39    public:
40        Session( const char * configDir, Prefs& prefs );
41        ~Session( );
42
43        static const int ADD_TORRENT_TAG;
44
45    public:
46        void stop( );
47        void restart( );
48
49    private:
50        void start( );
51
52    public:
53        const QUrl& getRemoteUrl( ) const { return myUrl; }
54        const struct tr_session_stats& getStats( ) const { return myStats; }
55        const struct tr_session_stats& getCumulativeStats( ) const { return myCumulativeStats; }
56        const QString& sessionVersion( ) const { return mySessionVersion; }
57
58    public:
59        int64_t blocklistSize( ) const { return myBlocklistSize; }
60        void setBlocklistSize( int64_t i );
61        void updateBlocklist( );
62        void portTest( );
63
64    public:
65
66        /** returns true if the transmission session is being run inside this client */
67        bool isServer( ) const;
68
69        /** returns true if isServer() is true or if the remote address is the localhost */
70        bool isLocal( ) const;
71
72    private:
73        void updateStats( struct tr_benc * args );
74        void updateInfo( struct tr_benc * args );
75        void parseResponse( const char * json, size_t len );
76        static void localSessionCallback( tr_session *, const char *, size_t, void * );
77
78    public:
79        void exec( const char * request );
80        void exec( const struct tr_benc * request );
81
82    private:
83        void sessionSet( const char * key, const QVariant& variant );
84        void pumpRequests( );
85        void sendTorrentRequest( const char * request, const QSet<int>& torrentIds );
86        static void updateStats( struct tr_benc * d, struct tr_session_stats * stats );
87        void refreshTorrents( const QSet<int>& torrentIds );
88
89    public:
90        void torrentSet( const QSet<int>& ids, const QString& key, bool val );
91        void torrentSet( const QSet<int>& ids, const QString& key, int val );
92        void torrentSet( const QSet<int>& ids, const QString& key, double val );
93        void torrentSet( const QSet<int>& ids, const QString& key, const QList<int>& val );
94
95
96    public slots:
97        void pauseTorrents( const QSet<int>& torrentIds = QSet<int>() );
98        void startTorrents( const QSet<int>& torrentIds = QSet<int>() );
99        void refreshSessionInfo( );
100        void refreshSessionStats( );
101        void refreshActiveTorrents( );
102        void refreshAllTorrents( );
103        void initTorrents( const QSet<int>& ids = QSet<int>() );
104        void addTorrent( QString filename );
105        void removeTorrents( const QSet<int>& torrentIds, bool deleteFiles=false );
106        void verifyTorrents( const QSet<int>& torrentIds );
107        void reannounceTorrents( const QSet<int>& torrentIds );
108        void launchWebInterface( );
109        void updatePref( int key );
110
111        /** request a refresh for statistics, including the ones only used by the properties dialog, for a specific torrent */
112        void refreshExtraStats( const QSet<int>& ids );
113
114    private slots:
115        void onRequestStarted( int id );
116        void onRequestFinished( int id, bool error );
117
118    signals:
119        void sourceChanged( );
120        void portTested( bool isOpen );
121        void statsUpdated( );
122        void sessionUpdated( );
123        void blocklistUpdated( int );
124        void torrentsUpdated( struct tr_benc * torrentList, bool completeList );
125        void torrentsRemoved( struct tr_benc * torrentList );
126        void dataReadProgress( );
127        void dataSendProgress( );
128        void httpAuthenticationRequired( );
129
130    private:
131        int64_t myBlocklistSize;
132        Prefs& myPrefs;
133        tr_session * mySession;
134        QString myConfigDir;
135        QUrl myUrl;
136        QBuffer myBuffer;
137        QHttp myHttp;
138        struct tr_session_stats myStats;
139        struct tr_session_stats myCumulativeStats;
140        QString mySessionVersion;
141};
142
143#endif
144
Note: See TracBrowser for help on using the repository browser.