source: trunk/qt/session.h @ 13883

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

(qt) #4076 'free space indicator' -- added.

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