source: trunk/qt/prefs.h @ 8232

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

(trunk qt) clean up #includes

File size: 4.4 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 "filters.h"
22
23extern "C"
24{
25    struct tr_benc;
26}
27
28class Prefs: public QObject
29{
30        Q_OBJECT;
31
32    public:
33
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            SHOW_DESKTOP_NOTIFICATION,
44            START,
45            TRASH_ORIGINAL,
46            ASKQUIT,
47            SORT_MODE,
48            SORT_REVERSED,
49            MINIMAL_VIEW,
50            FILTERBAR,
51            STATUSBAR,
52            STATUSBAR_STATS,
53            TOOLBAR,
54            BLOCKLIST_DATE,
55            BLOCKLIST_UPDATES_ENABLED,
56            MAIN_WINDOW_LAYOUT_ORDER,
57            MAIN_WINDOW_HEIGHT,
58            MAIN_WINDOW_WIDTH,
59            MAIN_WINDOW_X,
60            MAIN_WINDOW_Y,
61            FILTER_MODE,
62
63            /* core prefs */
64            FIRST_CORE_PREF,
65            ALT_SPEED_LIMIT_UP = FIRST_CORE_PREF,
66            ALT_SPEED_LIMIT_DOWN,
67            ALT_SPEED_LIMIT_ENABLED,
68            ALT_SPEED_LIMIT_TIME_BEGIN,
69            ALT_SPEED_LIMIT_TIME_END,
70            ALT_SPEED_LIMIT_TIME_ENABLED,
71            ALT_SPEED_LIMIT_TIME_DAY,
72            BLOCKLIST_ENABLED,
73            DSPEED,
74            DSPEED_ENABLED,
75            DOWNLOAD_DIR,
76            ENCRYPTION,
77            LAZY_BITFIELD,
78            MSGLEVEL,
79            OPEN_FILE_LIMIT,
80            PEER_LIMIT_GLOBAL,
81            PEER_LIMIT_TORRENT,
82            PEER_PORT,
83            PEER_PORT_RANDOM_ON_START,
84            PEER_PORT_RANDOM_LOW,
85            PEER_PORT_RANDOM_HIGH,
86            SOCKET_TOS,
87            PEX_ENABLED,
88            PORT_FORWARDING,
89            PROXY_AUTH_ENABLED,
90            PREALLOCATION,
91            PROXY_ENABLED,
92            PROXY_PASSWORD,
93            PROXY_PORT,
94            PROXY,
95            PROXY_TYPE,
96            PROXY_USERNAME,
97            RATIO,
98            RATIO_ENABLED,
99            RPC_AUTH_REQUIRED,
100            RPC_ENABLED,
101            RPC_PASSWORD,
102            RPC_PORT,
103            RPC_USERNAME,
104            RPC_WHITELIST_ENABLED,
105            RPC_WHITELIST,
106            SEED_RATIO_LIMIT,
107            SEED_RATIO_LIMITED,
108            USPEED_ENABLED,
109            USPEED,
110            UPLOAD_SLOTS_PER_TORRENT,
111            LAST_CORE_PREF = UPLOAD_SLOTS_PER_TORRENT,
112
113            PREFS_COUNT
114        };
115
116    private:
117
118        struct PrefItem {
119            int id;
120            const char * key;
121            int type;
122        };
123
124        static PrefItem myItems[];
125
126    private:
127        QString myConfigDir;
128        QVariant myValues[PREFS_COUNT];
129        void initDefaults( struct tr_benc* );
130
131    public:
132        bool isCore( int key ) const { return FIRST_CORE_PREF<=key && key<=LAST_CORE_PREF; }
133        bool isClient( int key ) const { return !isCore( key ); }
134        const char * keyStr( int i ) const { return myItems[i].key; }
135        int type( int i ) const { return myItems[i].type; }
136        const QVariant& variant( int i ) const { return myValues[i]; }
137
138        Prefs( const char * configDir );
139        ~Prefs( );
140
141        int getInt( int key ) const;
142        bool getBool( int key) const;
143        QString getString( int key ) const;
144        double getDouble( int key) const;
145        QDateTime getDateTime( int key ) const;
146
147        template<typename T> T get( int key ) const {
148            return myValues[key].value<T>();
149        }
150
151        void set( int key, char * value ) { set( key, QString::fromUtf8(value) ); }
152        void set( int key, const char * value ) { set( key, QString::fromUtf8(value) ); }
153
154        template<typename T> void set( int key, const T& value ) {
155            QVariant& v( myValues[key] );
156            const QVariant tmp = QVariant::fromValue(value);
157            if( v.isNull() || (v!=tmp) ) {
158                v = tmp;
159                emit changed( key );
160            }
161        }
162
163        void toggleBool( int key );
164
165     signals:
166        void changed( int key );
167};
168
169#endif
Note: See TracBrowser for help on using the repository browser.