source: trunk/qt/Session.h @ 14537

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

Use PascalCase? for Qt client filenames

Split FileTree?.{h,cc} and FilterBar?.{h,cc} files so that each class
is in its own file.

This breaks translations (some classes got renamed => context changed),
to be fixed by next commit (along with Tx sync).

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