source: trunk/qt/session.h @ 8221

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

(trunk qt) first stab at getting the properties dialog's "options" controls operational.

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