source: trunk/qt/session.h @ 8255

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

(trunk qt) handle multiple torrent selection in the properties dialog

File size: 4.2 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, const char * remoteUrl, bool paused );
41        ~Session( );
42
43        static const int ADD_TORRENT_TAG;
44
45    public:
46        const QUrl& getRemoteUrl( ) const { return myUrl; }
47        const struct tr_session_stats& getStats( ) const { return myStats; }
48        const struct tr_session_stats& getCumulativeStats( ) const { return myCumulativeStats; }
49        const QString& sessionVersion( ) const { return mySessionVersion; }
50
51    public:
52        int64_t blocklistSize( ) const { return myBlocklistSize; }
53        void setBlocklistSize( int64_t i );
54        void updateBlocklist( );
55        void portTest( );
56
57    public:
58        bool isRemote( ) const { return !isLocal( ); }
59        bool isLocal( ) const;
60        bool isServer( ) const;
61
62    private:
63        void updateStats( struct tr_benc * args );
64        void updateInfo( struct tr_benc * args );
65        void parseResponse( const char * json, size_t len );
66        static void localSessionCallback( tr_session *, const char *, size_t, void * );
67
68    public:
69        void exec( const char * request );
70        void exec( const struct tr_benc * request );
71
72    private:
73        void sessionSet( const char * key, const QVariant& variant );
74        void pumpRequests( );
75        void sendTorrentRequest( const char * request, const QSet<int>& torrentIds );
76        static void updateStats( struct tr_benc * d, struct tr_session_stats * stats );
77        void refreshTorrents( const QSet<int>& torrentIds );
78
79    public:
80        void torrentSet( const QSet<int>& ids, const QString& key, bool val );
81        void torrentSet( const QSet<int>& ids, const QString& key, int val );
82        void torrentSet( const QSet<int>& ids, const QString& key, double val );
83        void torrentSet( const QSet<int>& ids, const QString& key, const QList<int>& val );
84
85
86    public slots:
87        void pause( const QSet<int>& torrentIds = QSet<int>() );
88        void start( const QSet<int>& torrentIds = QSet<int>() );
89        void refreshSessionInfo( );
90        void refreshSessionStats( );
91        void refreshActiveTorrents( );
92        void refreshAllTorrents( );
93        void initTorrents( const QSet<int>& ids = QSet<int>() );
94        void addTorrent( QString filename );
95        void removeTorrents( const QSet<int>& torrentIds, bool deleteFiles=false );
96        void verifyTorrents( const QSet<int>& torrentIds );
97        void reannounceTorrents( const QSet<int>& torrentIds );
98        void launchWebInterface( );
99        void updatePref( int key );
100
101        /** request a refresh for statistics, including the ones only used by the properties dialog, for a specific torrent */
102        void refreshExtraStats( const QSet<int>& ids );
103
104    private slots:
105        void onRequestStarted( int id );
106        void onRequestFinished( int id, bool error );
107
108    signals:
109        void portTested( bool isOpen );
110        void statsUpdated( );
111        void sessionUpdated( );
112        void blocklistUpdated( int );
113        void torrentsUpdated( struct tr_benc * torrentList, bool completeList );
114        void torrentsRemoved( struct tr_benc * torrentList );
115        void dataReadProgress( );
116        void dataSendProgress( );
117
118    private:
119        int64_t myBlocklistSize;
120        Prefs& myPrefs;
121        tr_session * mySession;
122        QUrl myUrl;
123        QBuffer myBuffer;
124        QHttp myHttp;
125        struct tr_session_stats myStats;
126        struct tr_session_stats myCumulativeStats;
127        QString mySessionVersion;
128};
129
130#endif
131
Note: See TracBrowser for help on using the repository browser.