source: trunk/qt/session.h @ 13810

Last change on this file since 13810 was 13810, checked in by jordan, 8 years ago

(trunk) #1220 'change top folder names' -- add file-renaming to the Qt client

  • 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 13810 2013-01-20 01:31:58Z 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 <QTimer>
24#include <QUrl>
25
26class QStringList;
27
28class AddData;
29
30#include <libtransmission/transmission.h>
31#include <libtransmission/quark.h>
32
33extern "C"
34{
35    struct evbuffer;
36    struct tr_variant;
37}
38
39class Prefs;
40
41class Session: public QObject
42{
43        Q_OBJECT
44
45    public:
46        Session( const char * configDir, Prefs& prefs );
47        ~Session( );
48
49    public:
50        void stop( );
51        void restart( );
52
53    private:
54        void start( );
55
56    public:
57        const QUrl& getRemoteUrl( ) const { return myUrl; }
58        const struct tr_session_stats& getStats( ) const { return myStats; }
59        const struct tr_session_stats& getCumulativeStats( ) const { return myCumulativeStats; }
60        const QString& sessionVersion( ) const { return mySessionVersion; }
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 onResponseTimer( );
135
136    signals:
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        QTimer myResponseTimer;
163};
164
165#endif
166
Note: See TracBrowser for help on using the repository browser.