source: trunk/qt/Prefs.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: 4.2 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: Prefs.h 14539 2015-06-12 22:12:12Z mikedld $
8 */
9
10#ifndef QTR_PREFS_H
11#define QTR_PREFS_H
12
13#include <QObject>
14#include <QSet>
15#include <QString>
16#include <QVariant>
17
18#include <libtransmission/quark.h>
19
20#include "Filters.h"
21
22class QDateTime;
23
24extern "C"
25{
26  struct tr_variant;
27}
28
29class Prefs: public QObject
30{
31    Q_OBJECT
32
33  public:
34    enum
35    {
36      /* client prefs */
37      OPTIONS_PROMPT,
38      OPEN_DIALOG_FOLDER,
39      INHIBIT_HIBERNATION,
40      DIR_WATCH,
41      DIR_WATCH_ENABLED,
42      SHOW_TRAY_ICON,
43      START_MINIMIZED,
44      SHOW_NOTIFICATION_ON_ADD,
45      SHOW_NOTIFICATION_ON_COMPLETE,
46      ASKQUIT,
47      SORT_MODE,
48      SORT_REVERSED,
49      COMPACT_VIEW,
50      FILTERBAR,
51      STATUSBAR,
52      STATUSBAR_STATS,
53      SHOW_TRACKER_SCRAPES,
54      SHOW_BACKUP_TRACKERS,
55      TOOLBAR,
56      BLOCKLIST_DATE,
57      BLOCKLIST_UPDATES_ENABLED,
58      MAIN_WINDOW_LAYOUT_ORDER,
59      MAIN_WINDOW_HEIGHT,
60      MAIN_WINDOW_WIDTH,
61      MAIN_WINDOW_X,
62      MAIN_WINDOW_Y,
63      FILTER_MODE,
64      FILTER_TRACKERS,
65      FILTER_TEXT,
66      SESSION_IS_REMOTE,
67      SESSION_REMOTE_HOST,
68      SESSION_REMOTE_PORT,
69      SESSION_REMOTE_AUTH,
70      SESSION_REMOTE_USERNAME,
71      SESSION_REMOTE_PASSWORD,
72      COMPLETE_SOUND_COMMAND,
73      COMPLETE_SOUND_ENABLED,
74      USER_HAS_GIVEN_INFORMED_CONSENT,
75
76      /* core prefs */
77      FIRST_CORE_PREF,
78      ALT_SPEED_LIMIT_UP = FIRST_CORE_PREF,
79      ALT_SPEED_LIMIT_DOWN,
80      ALT_SPEED_LIMIT_ENABLED,
81      ALT_SPEED_LIMIT_TIME_BEGIN,
82      ALT_SPEED_LIMIT_TIME_END,
83      ALT_SPEED_LIMIT_TIME_ENABLED,
84      ALT_SPEED_LIMIT_TIME_DAY,
85      BLOCKLIST_ENABLED,
86      BLOCKLIST_URL,
87      DSPEED,
88      DSPEED_ENABLED,
89      DOWNLOAD_DIR,
90      DOWNLOAD_QUEUE_ENABLED,
91      DOWNLOAD_QUEUE_SIZE,
92      ENCRYPTION,
93      IDLE_LIMIT,
94      IDLE_LIMIT_ENABLED,
95      INCOMPLETE_DIR,
96      INCOMPLETE_DIR_ENABLED,
97      MSGLEVEL,
98      PEER_LIMIT_GLOBAL,
99      PEER_LIMIT_TORRENT,
100      PEER_PORT,
101      PEER_PORT_RANDOM_ON_START,
102      PEER_PORT_RANDOM_LOW,
103      PEER_PORT_RANDOM_HIGH,
104      QUEUE_STALLED_MINUTES,
105      SCRIPT_TORRENT_DONE_ENABLED,
106      SCRIPT_TORRENT_DONE_FILENAME,
107      SOCKET_TOS,
108      START,
109      TRASH_ORIGINAL,
110      PEX_ENABLED,
111      DHT_ENABLED,
112      UTP_ENABLED,
113      LPD_ENABLED,
114      PORT_FORWARDING,
115      PREALLOCATION,
116      RATIO,
117      RATIO_ENABLED,
118      RENAME_PARTIAL_FILES,
119      RPC_AUTH_REQUIRED,
120      RPC_ENABLED,
121      RPC_PASSWORD,
122      RPC_PORT,
123      RPC_USERNAME,
124      RPC_WHITELIST_ENABLED,
125      RPC_WHITELIST,
126      USPEED_ENABLED,
127      USPEED,
128      UPLOAD_SLOTS_PER_TORRENT,
129      LAST_CORE_PREF = UPLOAD_SLOTS_PER_TORRENT,
130
131      PREFS_COUNT
132    };
133
134  public:
135    Prefs (const QString& configDir);
136    virtual ~Prefs ();
137
138    bool isCore (int key) const { return FIRST_CORE_PREF <= key && key <= LAST_CORE_PREF; }
139    bool isClient (int key) const { return !isCore (key); }
140    const char * keyStr (int i) const { return tr_quark_get_string (myItems[i].key,NULL); }
141    tr_quark getKey (int i) const { return myItems[i].key; }
142    int type (int i) const { return myItems[i].type; }
143    const QVariant& variant (int i) const { return myValues[i]; }
144
145    int getInt (int key) const;
146    bool getBool (int key) const;
147    QString getString (int key) const;
148    double getDouble (int key) const;
149    QDateTime getDateTime (int key) const;
150
151    template<typename T> T get (int key) const { return myValues[key].value<T>(); }
152
153    template<typename T> void set (int key, const T& value)
154    {
155      QVariant& v (myValues[key]);
156      const QVariant tmp = QVariant::fromValue (value);
157      if (v.isNull() || v != tmp)
158        {
159          v = tmp;
160          emit changed (key);
161        }
162    }
163
164    void toggleBool (int key);
165
166  signals:
167    void changed (int key);
168
169  private:
170    struct PrefItem
171    {
172      int id;
173      tr_quark key;
174      int type;
175    };
176
177  private:
178    void initDefaults (tr_variant *);
179
180    // Intentionally not implemented
181    void set (int key, const char * value);
182
183  private:
184    const QString myConfigDir;
185
186    QSet<int> myTemporaryPrefs;
187    mutable QVariant myValues[PREFS_COUNT];
188
189    static PrefItem myItems[];
190};
191
192#endif // QTR_PREFS_H
Note: See TracBrowser for help on using the repository browser.