summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/base/rbsettings.h
blob: ba0c39393917600c915f7c5b5797f760e09c7fe0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 *
 *   Copyright (C) 2007 by Dominik Wenger
 *   $Id$
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/

#ifndef RBSETTINGS_H
#define RBSETTINGS_H

#include <QtCore>

class QSettings;

class RbSettings : public QObject
{
    Q_OBJECT
    public:
        //! Type of requested usb-id map
        enum MapType {
            MapDevice,
            MapError,
            MapIncompatible,
        };
        
        //! All user settings
        enum UserSettings {
            RbutilVersion,
            CurrentPlatform,
            Mountpoint,
            CachePath,
            Build,
            ProxyType,
            Proxy,
            OfPath,
            Platform,
            Language,
            Tts,
            LastTalkedFolder,
            VoiceLanguage,
            TtsLanguage,
            TtsOptions,
            TtsPath,
            TtsVoice,
            EncoderPath,
            EncoderOptions,
            WavtrimThreshold,
            EncoderComplexity,
            TtsSpeed,
            CacheOffline,
            CacheDisabled,
            TtsUseSapi4,
            EncoderNarrowBand,
            EncoderQuality,
            EncoderVolume,
        };
        
        //! All system settings
        enum SystemSettings {
            ManualUrl,
            BleedingUrl,
            BootloaderUrl,
            BootloaderInfoUrl,
            FontUrl,
            VoiceUrl,
            DoomUrl,
            ReleaseUrl,
            DailyUrl,
            ServerConfUrl,
            GenlangUrl,
            ThemesUrl,
            RbutilUrl,
            BleedingInfo,
            CurPlatformName,
            CurManual,
            CurBootloaderMethod,
            CurBootloaderName,
            CurBootloaderFile,
            CurEncoder,
            CurBrand,
            CurName,
            CurBuildserverModel,
            CurConfigureModel,
        };
        
        //! All Server settings
        enum ServerSettings {
            CurReleaseVersion,
            CurStatus,
            DailyRevision,
            DailyDate,
            BleedingRevision,
            BleedingDate,
        };
        
        //! call this to flush the user Settings
        static void sync();
        //! returns the filename of the usersettings file
        static QString userSettingFilename();
        //! return a list of all platforms (rbutil internal names)
        static QStringList platforms(void);
        //! returns a list of all languages
        static QStringList languages(void);
        //! maps a platform to its name
        static QString name(QString plattform);
        //! maps a platform to its brand
        static QString brand(QString plattform);
        //! returns a map of usb-ids and their targets
        static QMap<int, QString> usbIdMap(enum MapType);
        //! get a value from system settings
        static QVariant value(enum SystemSettings setting);
        //! get a value from user settings
        static QVariant value(enum UserSettings setting);
        //! get a value from server settings
        static QVariant value(enum ServerSettings setting);
        //! set a user setting value
        static void setValue(enum UserSettings setting , QVariant value);
        //! set a server setting value
        static void setValue(enum ServerSettings setting , QVariant value);
        //! get a user setting from a subvalue (ie for encoders and tts engines)
        static QVariant subValue(QString sub, enum UserSettings setting);
        //! set a user setting from a subvalue (ie for encoders and tts engines)
        static void setSubValue(QString sub, enum UserSettings setting, QVariant value);
        //! set a value for a server settings for a named platform.
        static void setPlatformValue(QString platform, enum ServerSettings setting, QVariant value);
        //! get a value from system settings for a named platform.
        static QVariant platformValue(QString platform, enum SystemSettings setting);

    private:
        //! you shouldnt call this, its a fully static calls
        RbSettings() {}
        //! create the setting objects if neccessary
        static void ensureRbSettingsExists();
        //! create a settings path, substitute platform, tts and encoder
        static QString constructSettingPath(QString path, QString substitute = QString());

        //! pointers to our setting objects
        static QSettings *systemSettings;
        static QSettings *userSettings;
        //! global volatile settings
        static QMap<QString, QVariant> serverSettings;
};

#endif