source: trunk/qt/session.h @ 8327

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

(trunk qt) session dialog improvements from W4pp

File size: 4.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 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        bool isRemote( ) const { return !isLocal( ); }
66        bool isLocal( ) const;
67        bool isServer( ) const;
68
69    private:
70        void updateStats( struct tr_benc * args );
71        void updateInfo( struct tr_benc * args );
72        void parseResponse( const char * json, size_t len );
73        static void localSessionCallback( tr_session *, const char *, size_t, void * );
74
75    public:
76        void exec( const char * request );
77        void exec( const struct tr_benc * request );
78
79    private:
80        void sessionSet( const char * key, const QVariant& variant );
81        void pumpRequests( );
82        void sendTorrentRequest( const char * request, const QSet<int>& torrentIds );
83        static void updateStats( struct tr_benc * d, struct tr_session_stats * stats );
84        void refreshTorrents( const QSet<int>& torrentIds );
85
86    public:
87        void torrentSet( const QSet<int>& ids, const QString& key, bool val );
88        void torrentSet( const QSet<int>& ids, const QString& key, int val );
89        void torrentSet( const QSet<int>& ids, const QString& key, double val );
90        void torrentSet( const QSet<int>& ids, const QString& key, const QList<int>& val );
91
92
93    public slots:
94        void pauseTorrents( const QSet<int>& torrentIds = QSet<int>() );
95        void startTorrents( const QSet<int>& torrentIds = QSet<int>() );
96        void refreshSessionInfo( );
97        void refreshSessionStats( );
98        void refreshActiveTorrents( );
99        void refreshAllTorrents( );
100        void initTorrents( const QSet<int>& ids = QSet<int>() );
101        void addTorrent( QString filename );
102        void removeTorrents( const QSet<int>& torrentIds, bool deleteFiles=false );
103        void verifyTorrents( const QSet<int>& torrentIds );
104        void reannounceTorrents( const QSet<int>& torrentIds );
105        void launchWebInterface( );
106        void updatePref( int key );
107
108        /** request a refresh for statistics, including the ones only used by the properties dialog, for a specific torrent */
109        void refreshExtraStats( const QSet<int>& ids );
110
111    private slots:
112        void onRequestStarted( int id );
113        void onRequestFinished( int id, bool error );
114
115    signals:
116        void sourceChanged( );
117        void portTested( bool isOpen );
118        void statsUpdated( );
119        void sessionUpdated( );
120        void blocklistUpdated( int );
121        void torrentsUpdated( struct tr_benc * torrentList, bool completeList );
122        void torrentsRemoved( struct tr_benc * torrentList );
123        void dataReadProgress( );
124        void dataSendProgress( );
125        void httpAuthenticationRequired( );
126
127    private:
128        int64_t myBlocklistSize;
129        Prefs& myPrefs;
130        tr_session * mySession;
131        QString myConfigDir;
132        QUrl myUrl;
133        QBuffer myBuffer;
134        QHttp myHttp;
135        struct tr_session_stats myStats;
136        struct tr_session_stats myCumulativeStats;
137        QString mySessionVersion;
138};
139
140#endif
141
Note: See TracBrowser for help on using the repository browser.