source: trunk/qt/prefs.h @ 8194

Last change on this file since 8194 was 8194, checked in by charles, 13 years ago

(trunk qt) remember sorting & filtering mode between sessions

File size: 4.1 KB
Line 
1/*
2 * This file Copyright (C) 2009 Charles Kerr <charles@transmissionbt.com>
3 *
4 * This file is licensed by the GPL version 2.  Works owned by the
5 * Transmission project are granted a special exemption to clause 2(b)
6 * so that the bulk of its code can remain under the MIT license.
7 * This exemption does not extend to derived works not owned by
8 * the Transmission project.
9 *
10 * $Id:$
11 */
12
13#ifndef QTR_PREFS_H
14#define QTR_PREFS_H
15
16#include <QDateTime>
17#include <QObject>
18#include <QString>
19#include <QVariant>
20
21#include <libtransmission/transmission.h>
22#include <libtransmission/bencode.h>
23
24class Prefs: public QObject
25{
26        Q_OBJECT;
27
28    public:
29
30        enum
31        {
32            /* client prefs */
33            OPTIONS_PROMPT,
34            OPEN_DIALOG_FOLDER,
35            INHIBIT_HIBERNATION,
36            DIR_WATCH,
37            DIR_WATCH_ENABLED,
38            SHOW_TRAY_ICON,
39            SHOW_DESKTOP_NOTIFICATION,
40            START,
41            TRASH_ORIGINAL,
42            ASKQUIT,
43            SORT_MODE,
44            SORT_REVERSED,
45            MINIMAL_VIEW,
46            FILTERBAR,
47            STATUSBAR,
48            STATUSBAR_STATS,
49            TOOLBAR,
50            BLOCKLIST_DATE,
51            BLOCKLIST_UPDATES_ENABLED,
52            MAIN_WINDOW_LAYOUT_ORDER,
53            MAIN_WINDOW_HEIGHT,
54            MAIN_WINDOW_WIDTH,
55            MAIN_WINDOW_X,
56            MAIN_WINDOW_Y,
57            FILTER_MODE,
58
59            /* core prefs */
60            FIRST_CORE_PREF,
61            ALT_SPEED_LIMIT_UP = FIRST_CORE_PREF,
62            ALT_SPEED_LIMIT_DOWN,
63            ALT_SPEED_LIMIT_ENABLED,
64            ALT_SPEED_LIMIT_TIME_BEGIN,
65            ALT_SPEED_LIMIT_TIME_END,
66            ALT_SPEED_LIMIT_TIME_ENABLED,
67            ALT_SPEED_LIMIT_TIME_DAY,
68            BLOCKLIST_ENABLED,
69            DSPEED,
70            DSPEED_ENABLED,
71            DOWNLOAD_DIR,
72            ENCRYPTION,
73            LAZY_BITFIELD,
74            MSGLEVEL,
75            OPEN_FILE_LIMIT,
76            PEER_LIMIT_GLOBAL,
77            PEER_LIMIT_TORRENT,
78            PEER_PORT,
79            PEER_PORT_RANDOM_ON_START,
80            PEER_PORT_RANDOM_LOW,
81            PEER_PORT_RANDOM_HIGH,
82            SOCKET_TOS,
83            PEX_ENABLED,
84            PORT_FORWARDING,
85            PROXY_AUTH_ENABLED,
86            PREALLOCATION,
87            PROXY_ENABLED,
88            PROXY_PASSWORD,
89            PROXY_PORT,
90            PROXY,
91            PROXY_TYPE,
92            PROXY_USERNAME,
93            RATIO,
94            RATIO_ENABLED,
95            RPC_AUTH_REQUIRED,
96            RPC_ENABLED,
97            RPC_PASSWORD,
98            RPC_PORT,
99            RPC_USERNAME,
100            RPC_WHITELIST_ENABLED,
101            RPC_WHITELIST,
102            SEED_RATIO_LIMIT,
103            SEED_RATIO_LIMITED,
104            USPEED_ENABLED,
105            USPEED,
106            UPLOAD_SLOTS_PER_TORRENT,
107            LAST_CORE_PREF = UPLOAD_SLOTS_PER_TORRENT,
108
109            PREFS_COUNT
110        };
111
112    private:
113
114        struct PrefItem {
115            int id;
116            const char * key;
117            QVariant::Type type;
118        };
119
120        static PrefItem myItems[];
121
122    private:
123        QString myConfigDir;
124        QVariant myValues[PREFS_COUNT];
125        void initDefaults( tr_benc* );
126
127    public:
128        bool isCore( int key ) const { return FIRST_CORE_PREF<=key && key<=LAST_CORE_PREF; }
129        bool isClient( int key ) const { return !isCore( key ); }
130        const char * keyStr( int i ) const { return myItems[i].key; }
131        QVariant::Type type( int i ) const { return myItems[i].type; }
132        const QVariant& variant( int i ) const { return myValues[i]; }
133
134        Prefs( const char * configDir );
135        ~Prefs( );
136
137        int getInt( int key ) const;
138        bool getBool( int key) const;
139        QString getString( int key ) const;
140        double getDouble( int key) const;
141        QDateTime getDateTime( int key ) const;
142
143        template<typename T> void set( int key, const T& value ) {
144            QVariant& v( myValues[key] );
145            const QVariant tmp( value );
146            if( v.isNull() || (v!=tmp) ) {
147                v = tmp;
148                emit changed( key );
149            }
150        }
151
152        void toggleBool( int key );
153
154     signals:
155        void changed( int key );
156};
157
158#endif
Note: See TracBrowser for help on using the repository browser.