~ubuntu-branches/ubuntu/natty/transmission/natty

« back to all changes in this revision

Viewing changes to qt/.svn/text-base/prefs.h.svn-base

  • Committer: Bazaar Package Importer
  • Author(s): Jamie Strandboge
  • Date: 2010-01-07 10:50:13 UTC
  • Revision ID: james.westby@ubuntu.com-20100107105013-gcb78xrsnjr0jzb4
Tags: 1.80~b1-0ubuntu2
* SECURITY UPDATE: fix arbitrary file overwrite via crafted torrent file
  - debian/patches/CVE-2010-0012.patch: adjust metainfo.c to check for '../'
  - CVE-2010-0012
  - LP: #500625

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * This file Copyright (C) 2009 Mnemosyne LLC
 
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
 
 
23
extern "C"
 
24
{
 
25
    struct tr_benc;
 
26
}
 
27
 
 
28
class 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
            SESSION_IS_REMOTE,
 
63
            SESSION_REMOTE_HOST,
 
64
            SESSION_REMOTE_PORT,
 
65
            SESSION_REMOTE_AUTH,
 
66
            SESSION_REMOTE_USERNAME,
 
67
            SESSION_REMOTE_PASSWORD,
 
68
            USER_HAS_GIVEN_INFORMED_CONSENT,
 
69
 
 
70
            /* core prefs */
 
71
            FIRST_CORE_PREF,
 
72
            ALT_SPEED_LIMIT_UP = FIRST_CORE_PREF,
 
73
            ALT_SPEED_LIMIT_DOWN,
 
74
            ALT_SPEED_LIMIT_ENABLED,
 
75
            ALT_SPEED_LIMIT_TIME_BEGIN,
 
76
            ALT_SPEED_LIMIT_TIME_END,
 
77
            ALT_SPEED_LIMIT_TIME_ENABLED,
 
78
            ALT_SPEED_LIMIT_TIME_DAY,
 
79
            BLOCKLIST_ENABLED,
 
80
            DSPEED,
 
81
            DSPEED_ENABLED,
 
82
            DOWNLOAD_DIR,
 
83
            ENCRYPTION,
 
84
            INCOMPLETE_DIR,
 
85
            INCOMPLETE_DIR_ENABLED,
 
86
            LAZY_BITFIELD,
 
87
            MSGLEVEL,
 
88
            OPEN_FILE_LIMIT,
 
89
            PEER_LIMIT_GLOBAL,
 
90
            PEER_LIMIT_TORRENT,
 
91
            PEER_PORT,
 
92
            PEER_PORT_RANDOM_ON_START,
 
93
            PEER_PORT_RANDOM_LOW,
 
94
            PEER_PORT_RANDOM_HIGH,
 
95
            SOCKET_TOS,
 
96
            PEX_ENABLED,
 
97
            DHT_ENABLED,
 
98
            PORT_FORWARDING,
 
99
            PROXY_AUTH_ENABLED,
 
100
            PREALLOCATION,
 
101
            PROXY_ENABLED,
 
102
            PROXY_PASSWORD,
 
103
            PROXY_PORT,
 
104
            PROXY,
 
105
            PROXY_TYPE,
 
106
            PROXY_USERNAME,
 
107
            RATIO,
 
108
            RATIO_ENABLED,
 
109
            RPC_AUTH_REQUIRED,
 
110
            RPC_ENABLED,
 
111
            RPC_PASSWORD,
 
112
            RPC_PORT,
 
113
            RPC_USERNAME,
 
114
            RPC_WHITELIST_ENABLED,
 
115
            RPC_WHITELIST,
 
116
            USPEED_ENABLED,
 
117
            USPEED,
 
118
            UPLOAD_SLOTS_PER_TORRENT,
 
119
            LAST_CORE_PREF = UPLOAD_SLOTS_PER_TORRENT,
 
120
 
 
121
            PREFS_COUNT
 
122
        };
 
123
 
 
124
    private:
 
125
 
 
126
        struct PrefItem {
 
127
            int id;
 
128
            const char * key;
 
129
            int type;
 
130
        };
 
131
 
 
132
        static PrefItem myItems[];
 
133
 
 
134
    private:
 
135
        QString myConfigDir;
 
136
        QVariant myValues[PREFS_COUNT];
 
137
        void initDefaults( struct tr_benc* );
 
138
 
 
139
    public:
 
140
        bool isCore( int key ) const { return FIRST_CORE_PREF<=key && key<=LAST_CORE_PREF; }
 
141
        bool isClient( int key ) const { return !isCore( key ); }
 
142
        const char * keyStr( int i ) const { return myItems[i].key; }
 
143
        int type( int i ) const { return myItems[i].type; }
 
144
        const QVariant& variant( int i ) const { return myValues[i]; }
 
145
 
 
146
        Prefs( const char * configDir );
 
147
        ~Prefs( );
 
148
 
 
149
        int getInt( int key ) const;
 
150
        bool getBool( int key) const;
 
151
        QString getString( int key ) const;
 
152
        double getDouble( int key) const;
 
153
        QDateTime getDateTime( int key ) const;
 
154
 
 
155
        template<typename T> T get( int key ) const {
 
156
            return myValues[key].value<T>();
 
157
        }
 
158
 
 
159
        void set( int key, char * value ) { set( key, QString::fromUtf8(value) ); }
 
160
        void set( int key, const char * value ) { set( key, QString::fromUtf8(value) ); }
 
161
 
 
162
        template<typename T> void set( int key, const T& value ) {
 
163
            QVariant& v( myValues[key] );
 
164
            const QVariant tmp = QVariant::fromValue(value);
 
165
            if( v.isNull() || (v!=tmp) ) {
 
166
                v = tmp;
 
167
                emit changed( key );
 
168
            }
 
169
        }
 
170
 
 
171
        void toggleBool( int key );
 
172
 
 
173
     signals:
 
174
        void changed( int key );
 
175
};
 
176
 
 
177
#endif