source: trunk/qt/session.h @ 13864

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

(qt) #5252 'File-renaming causes QObject::startTimer error': probable fix.

  • Property svn:keywords set to Date Rev Author Id
File size: 5.7 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: session.h 13864 2013-01-25 05:43:22Z jordan $
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 <QNetworkAccessManager>
21#include <QString>
22#include <QStringList>
23#include <QUrl>
24
25class QStringList;
26
27class AddData;
28
29#include <libtransmission/transmission.h>
30#include <libtransmission/quark.h>
31
32extern "C"
33{
34    struct evbuffer;
35    struct tr_variant;
36}
37
38class Prefs;
39
40class Session: public QObject
41{
42        Q_OBJECT
43
44    public:
45        Session( const char * configDir, Prefs& prefs );
46        ~Session( );
47
48    public:
49        void stop( );
50        void restart( );
51
52    private:
53        void start( );
54
55    public:
56        const QUrl& getRemoteUrl( ) const { return myUrl; }
57        const struct tr_session_stats& getStats( ) const { return myStats; }
58        const struct tr_session_stats& getCumulativeStats( ) const { return myCumulativeStats; }
59        const QString& sessionVersion( ) const { return mySessionVersion; }
60
61    public:
62        int64_t blocklistSize( ) const { return myBlocklistSize; }
63        void setBlocklistSize( int64_t i );
64        void updateBlocklist( );
65        void portTest( );
66        void copyMagnetLinkToClipboard( int torrentId );
67
68    public:
69
70        /** returns true if the transmission session is being run inside this client */
71        bool isServer( ) const;
72
73        /** returns true if isServer() is true or if the remote address is the localhost */
74        bool isLocal( ) const;
75
76    private:
77        void updateStats( struct tr_variant * args );
78        void updateInfo( struct tr_variant * args );
79        void parseResponse( const char * json, size_t len );
80        static void localSessionCallback( tr_session *, struct evbuffer *, void * );
81
82    public:
83        void exec( const char * json );
84        void exec( const struct tr_variant * request );
85
86    public:
87        int64_t getUniqueTag( ) { return nextUniqueTag++; }
88
89    private:
90        void sessionSet( const tr_quark key, const QVariant& variant );
91        void pumpRequests( );
92        void sendTorrentRequest( const char * request, const QSet<int>& torrentIds );
93        static void updateStats( struct tr_variant * d, struct tr_session_stats * stats );
94        void refreshTorrents( const QSet<int>& torrentIds );
95        QNetworkAccessManager * networkAccessManager( );
96
97    public:
98        void torrentSet( const QSet<int>& ids, const tr_quark key, bool val );
99        void torrentSet( const QSet<int>& ids, const tr_quark key, int val );
100        void torrentSet( const QSet<int>& ids, const tr_quark key, double val );
101        void torrentSet( const QSet<int>& ids, const tr_quark key, const QList<int>& val );
102        void torrentSet( const QSet<int>& ids, const tr_quark key, const QStringList& val );
103        void torrentSet( const QSet<int>& ids, const tr_quark key, const QPair<int,QString>& val);
104        void torrentSetLocation( const QSet<int>& ids, const QString& path, bool doMove );
105        void torrentRenamePath( const QSet<int>& ids, const QString& oldpath, const QString& newname );
106
107    public slots:
108        void pauseTorrents( const QSet<int>& torrentIds = QSet<int>() );
109        void startTorrents( const QSet<int>& torrentIds = QSet<int>() );
110        void startTorrentsNow( const QSet<int>& torrentIds = QSet<int>() );
111        void queueMoveTop( const QSet<int>& torrentIds = QSet<int>() );
112        void queueMoveUp( const QSet<int>& torrentIds = QSet<int>() );
113        void queueMoveDown( const QSet<int>& torrentIds = QSet<int>() );
114        void queueMoveBottom( const QSet<int>& torrentIds = QSet<int>() );
115        void refreshSessionInfo( );
116        void refreshSessionStats( );
117        void refreshActiveTorrents( );
118        void refreshAllTorrents( );
119        void initTorrents( const QSet<int>& ids = QSet<int>() );
120        void addNewlyCreatedTorrent( const QString& filename, const QString& localPath );
121        void addTorrent( const AddData& addme );
122        void removeTorrents( const QSet<int>& torrentIds, bool deleteFiles=false );
123        void verifyTorrents( const QSet<int>& torrentIds );
124        void reannounceTorrents( const QSet<int>& torrentIds );
125        void launchWebInterface( );
126        void updatePref( int key );
127
128        /** request a refresh for statistics, including the ones only used by the properties dialog, for a specific torrent */
129        void refreshExtraStats( const QSet<int>& ids );
130
131    private slots:
132        void onFinished( QNetworkReply * reply );
133        void onResponseReceived (const QByteArray& json);
134
135    signals:
136        void responseReceived (const QByteArray& json);
137        void executed( int64_t tag, const QString& result, struct tr_variant * arguments );
138        void sourceChanged( );
139        void portTested( bool isOpen );
140        void statsUpdated( );
141        void sessionUpdated( );
142        void blocklistUpdated( int );
143        void torrentsUpdated( struct tr_variant * torrentList, bool completeList );
144        void torrentsRemoved( struct tr_variant * torrentList );
145        void dataReadProgress( );
146        void dataSendProgress( );
147        void httpAuthenticationRequired( );
148
149    private:
150        int64_t nextUniqueTag;
151        int64_t myBlocklistSize;
152        Prefs& myPrefs;
153        tr_session * mySession;
154        QString myConfigDir;
155        QString mySessionId;
156        QStringList myIdleJSON;
157        QUrl myUrl;
158        QNetworkAccessManager * myNAM;
159        struct tr_session_stats myStats;
160        struct tr_session_stats myCumulativeStats;
161        QString mySessionVersion;
162};
163
164#endif
165
Note: See TracBrowser for help on using the repository browser.