source: trunk/qt/Session.h @ 14539

Last change on this file since 14539 was 14539, checked in by mikedld, 6 years ago

Unify/prettify Qt client headers style

  • Property svn:keywords set to Date Rev Author Id
File size: 5.3 KB
Line 
1/*
2 * This file Copyright (C) 2009-2015 Mnemosyne LLC
3 *
4 * It may be used under the GNU GPL versions 2 or 3
5 * or any future license endorsed by Mnemosyne LLC.
6 *
7 * $Id: Session.h 14539 2015-06-12 22:12:12Z mikedld $
8 */
9
10#ifndef QTR_SESSION_H
11#define QTR_SESSION_H
12
13#include <QObject>
14#include <QSet>
15#include <QString>
16#include <QStringList>
17
18#include <libtransmission/transmission.h>
19#include <libtransmission/quark.h>
20
21#include "RpcClient.h"
22
23class AddData;
24class Prefs;
25
26extern "C"
27{
28  struct tr_variant;
29}
30
31class FileAdded: public QObject
32{
33    Q_OBJECT
34
35  public:
36    FileAdded (int64_t tag, const QString& name): myTag (tag), myName (name) {}
37    virtual ~FileAdded () {}
38
39    void setFileToDelete (const QString& file) { myDelFile = file; }
40
41  public slots:
42    void executed (int64_t tag, const QString& result, tr_variant * arguments);
43
44  private:
45    const int64_t myTag;
46    const QString myName;
47
48    QString myDelFile;
49};
50
51class Session: public QObject
52{
53    Q_OBJECT
54
55  public:
56    Session (const QString& configDir, Prefs& prefs);
57    virtual ~Session ();
58
59    void stop ();
60    void restart ();
61
62    const QUrl& getRemoteUrl () const { return myRpc.url (); }
63    const tr_session_stats& getStats () const { return myStats; }
64    const tr_session_stats& getCumulativeStats () const { return myCumulativeStats; }
65    const QString& sessionVersion () const { return mySessionVersion; }
66
67    int64_t blocklistSize () const { return myBlocklistSize; }
68    void setBlocklistSize (int64_t i);
69    void updateBlocklist ();
70    void portTest ();
71    void copyMagnetLinkToClipboard (int torrentId);
72
73    /** returns true if the transmission session is being run inside this client */
74    bool isServer () const;
75
76    /** returns true if isServer () is true or if the remote address is the localhost */
77    bool isLocal () const;
78
79    void exec (tr_quark method, tr_variant * args, int64_t tag = -1);
80    void exec (const char * method, tr_variant * args, int64_t tag = -1);
81
82    int64_t getUniqueTag () { return nextUniqueTag++; }
83
84    void torrentSet (const QSet<int>& ids, const tr_quark key, bool val);
85    void torrentSet (const QSet<int>& ids, const tr_quark key, int val);
86    void torrentSet (const QSet<int>& ids, const tr_quark key, double val);
87    void torrentSet (const QSet<int>& ids, const tr_quark key, const QList<int>& val);
88    void torrentSet (const QSet<int>& ids, const tr_quark key, const QStringList& val);
89    void torrentSet (const QSet<int>& ids, const tr_quark key, const QPair<int,QString>& val);
90    void torrentSetLocation (const QSet<int>& ids, const QString& path, bool doMove);
91    void torrentRenamePath (const QSet<int>& ids, const QString& oldpath, const QString& newname);
92    void addTorrent (const AddData& addme, tr_variant * top, bool trashOriginal);
93
94  public slots:
95    void pauseTorrents (const QSet<int>& torrentIds = QSet<int> ());
96    void startTorrents (const QSet<int>& torrentIds = QSet<int> ());
97    void startTorrentsNow (const QSet<int>& torrentIds = QSet<int> ());
98    void queueMoveTop (const QSet<int>& torrentIds = QSet<int> ());
99    void queueMoveUp (const QSet<int>& torrentIds = QSet<int> ());
100    void queueMoveDown (const QSet<int>& torrentIds = QSet<int> ());
101    void queueMoveBottom (const QSet<int>& torrentIds = QSet<int> ());
102    void refreshSessionInfo ();
103    void refreshSessionStats ();
104    void refreshActiveTorrents ();
105    void refreshAllTorrents ();
106    void initTorrents (const QSet<int>& ids = QSet<int> ());
107    void addNewlyCreatedTorrent (const QString& filename, const QString& localPath);
108    void addTorrent (const AddData& addme);
109    void removeTorrents (const QSet<int>& torrentIds, bool deleteFiles = false);
110    void verifyTorrents (const QSet<int>& torrentIds);
111    void reannounceTorrents (const QSet<int>& torrentIds);
112    void launchWebInterface ();
113    void updatePref (int key);
114 
115    /** request a refresh for statistics, including the ones only used by the properties dialog, for a specific torrent */
116    void refreshExtraStats (const QSet<int>& ids);
117
118  signals:
119    void executed (int64_t tag, const QString& result, tr_variant * arguments);
120    void sourceChanged ();
121    void portTested (bool isOpen);
122    void statsUpdated ();
123    void sessionUpdated ();
124    void blocklistUpdated (int);
125    void torrentsUpdated (tr_variant * torrentList, bool completeList);
126    void torrentsRemoved (tr_variant * torrentList);
127    void dataReadProgress ();
128    void dataSendProgress ();
129    void error (QNetworkReply::NetworkError);
130    void errorMessage (const QString&);
131    void httpAuthenticationRequired ();
132
133  private:
134    void start ();
135
136    void updateStats (tr_variant * args);
137    void updateInfo (tr_variant * args);
138
139    void sessionSet (const tr_quark key, const QVariant& variant);
140    void pumpRequests ();
141    void sendTorrentRequest (const char * request, const QSet<int>& torrentIds);
142    void refreshTorrents (const QSet<int>& torrentIds);
143
144    static void updateStats (tr_variant * d, tr_session_stats * stats);
145
146  private slots:
147    void responseReceived (int64_t tag, const QString& result, tr_variant * args);
148
149  private:
150    QString const myConfigDir;
151    Prefs& myPrefs;
152
153    int64_t nextUniqueTag;
154    int64_t myBlocklistSize;
155    tr_session * mySession;
156    QStringList myIdleJSON;
157    tr_session_stats myStats;
158    tr_session_stats myCumulativeStats;
159    QString mySessionVersion;
160    RpcClient myRpc;
161};
162
163#endif // QTR_SESSION_H
Note: See TracBrowser for help on using the repository browser.