diff options
Diffstat (limited to 'rbutil/rbutilqt/base/rbsettings.cpp')
-rw-r--r-- | rbutil/rbutilqt/base/rbsettings.cpp | 86 |
1 files changed, 61 insertions, 25 deletions
diff --git a/rbutil/rbutilqt/base/rbsettings.cpp b/rbutil/rbutilqt/base/rbsettings.cpp index 12654cd288..8e2e7c26d2 100644 --- a/rbutil/rbutilqt/base/rbsettings.cpp +++ b/rbutil/rbutilqt/base/rbsettings.cpp | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <unistd.h> | 25 | #include <unistd.h> |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | |||
28 | // device settings | 29 | // device settings |
29 | const static struct { | 30 | const static struct { |
30 | RbSettings::SystemSettings setting; | 31 | RbSettings::SystemSettings setting; |
@@ -94,31 +95,45 @@ const static struct { | |||
94 | { RbSettings::EncoderVolume, ":encoder:/volume", "1.0" }, | 95 | { RbSettings::EncoderVolume, ":encoder:/volume", "1.0" }, |
95 | }; | 96 | }; |
96 | 97 | ||
97 | void RbSettings::open() | 98 | //! pointer to setting object to NULL |
99 | QSettings* RbSettings::systemSettings = NULL; | ||
100 | QSettings* RbSettings::userSettings = NULL; | ||
101 | |||
102 | void RbSettings::ensureRbSettingsExists() | ||
98 | { | 103 | { |
99 | // only use built-in rbutil.ini | 104 | //check and create settings object |
100 | systemSettings = new QSettings(":/ini/rbutil.ini", QSettings::IniFormat, 0); | 105 | if(systemSettings == NULL) |
101 | // portable installation: | ||
102 | // check for a configuration file in the program folder. | ||
103 | QFileInfo config; | ||
104 | config.setFile(QCoreApplication::instance()->applicationDirPath() | ||
105 | + "/RockboxUtility.ini"); | ||
106 | if(config.isFile()) | ||
107 | { | 106 | { |
108 | userSettings = new QSettings(QCoreApplication::instance()->applicationDirPath() | 107 | // only use built-in rbutil.ini |
109 | + "/RockboxUtility.ini", QSettings::IniFormat, this); | 108 | systemSettings = new QSettings(":/ini/rbutil.ini", QSettings::IniFormat, 0); |
110 | qDebug() << "config: portable"; | ||
111 | } | 109 | } |
112 | else | 110 | |
111 | if(userSettings == NULL) | ||
113 | { | 112 | { |
114 | userSettings = new QSettings(QSettings::IniFormat, | 113 | // portable installation: |
115 | QSettings::UserScope, "rockbox.org", "RockboxUtility",this); | 114 | // check for a configuration file in the program folder. |
116 | qDebug() << "config: system"; | 115 | QFileInfo config; |
116 | config.setFile(QCoreApplication::instance()->applicationDirPath() | ||
117 | + "/RockboxUtility.ini"); | ||
118 | if(config.isFile()) | ||
119 | { | ||
120 | userSettings = new QSettings(QCoreApplication::instance()->applicationDirPath() | ||
121 | + "/RockboxUtility.ini", QSettings::IniFormat, NULL); | ||
122 | qDebug() << "config: portable"; | ||
123 | } | ||
124 | else | ||
125 | { | ||
126 | userSettings = new QSettings(QSettings::IniFormat, | ||
127 | QSettings::UserScope, "rockbox.org", "RockboxUtility",NULL); | ||
128 | qDebug() << "config: system"; | ||
129 | } | ||
117 | } | 130 | } |
118 | } | 131 | } |
119 | 132 | ||
120 | void RbSettings::sync() | 133 | void RbSettings::sync() |
121 | { | 134 | { |
135 | ensureRbSettingsExists(); | ||
136 | |||
122 | userSettings->sync(); | 137 | userSettings->sync(); |
123 | #if defined(Q_OS_LINUX) | 138 | #if defined(Q_OS_LINUX) |
124 | // when using sudo it runs rbutil with uid 0 but unfortunately without a | 139 | // when using sudo it runs rbutil with uid 0 but unfortunately without a |
@@ -143,9 +158,16 @@ void RbSettings::sync() | |||
143 | #endif | 158 | #endif |
144 | } | 159 | } |
145 | 160 | ||
161 | QString RbSettings::userSettingFilename() | ||
162 | { | ||
163 | ensureRbSettingsExists(); | ||
164 | return userSettings->fileName(); | ||
165 | } | ||
146 | 166 | ||
147 | QVariant RbSettings::value(enum SystemSettings setting) | 167 | QVariant RbSettings::value(enum SystemSettings setting) |
148 | { | 168 | { |
169 | ensureRbSettingsExists(); | ||
170 | |||
149 | // locate setting item | 171 | // locate setting item |
150 | int i = 0; | 172 | int i = 0; |
151 | while(SystemSettingsList[i].setting != setting) | 173 | while(SystemSettingsList[i].setting != setting) |
@@ -158,15 +180,16 @@ QVariant RbSettings::value(enum SystemSettings setting) | |||
158 | return systemSettings->value(s, d); | 180 | return systemSettings->value(s, d); |
159 | } | 181 | } |
160 | 182 | ||
161 | 183 | QVariant RbSettings::value(enum UserSettings setting) | |
162 | QString RbSettings::userSettingFilename() | 184 | { |
163 | { | 185 | QString empty; |
164 | return userSettings->fileName(); | 186 | return subValue(empty, setting); |
165 | } | 187 | } |
166 | 188 | ||
167 | 189 | QVariant RbSettings::subValue(QString sub, enum UserSettings setting) | |
168 | QVariant RbSettings::subValue(QString& sub, enum UserSettings setting) | ||
169 | { | 190 | { |
191 | ensureRbSettingsExists(); | ||
192 | |||
170 | // locate setting item | 193 | // locate setting item |
171 | int i = 0; | 194 | int i = 0; |
172 | while(UserSettingsList[i].setting != setting) | 195 | while(UserSettingsList[i].setting != setting) |
@@ -177,9 +200,16 @@ QVariant RbSettings::subValue(QString& sub, enum UserSettings setting) | |||
177 | return userSettings->value(s, UserSettingsList[i].def); | 200 | return userSettings->value(s, UserSettingsList[i].def); |
178 | } | 201 | } |
179 | 202 | ||
203 | void RbSettings::setValue(enum UserSettings setting , QVariant value) | ||
204 | { | ||
205 | QString empty; | ||
206 | return setSubValue(empty, setting, value); | ||
207 | } | ||
180 | 208 | ||
181 | void RbSettings::setSubValue(QString& sub, enum UserSettings setting, QVariant value) | 209 | void RbSettings::setSubValue(QString sub, enum UserSettings setting, QVariant value) |
182 | { | 210 | { |
211 | ensureRbSettingsExists(); | ||
212 | |||
183 | // locate setting item | 213 | // locate setting item |
184 | int i = 0; | 214 | int i = 0; |
185 | while(UserSettingsList[i].setting != setting) | 215 | while(UserSettingsList[i].setting != setting) |
@@ -190,10 +220,10 @@ void RbSettings::setSubValue(QString& sub, enum UserSettings setting, QVariant v | |||
190 | userSettings->setValue(s, value); | 220 | userSettings->setValue(s, value); |
191 | } | 221 | } |
192 | 222 | ||
193 | |||
194 | |||
195 | QStringList RbSettings::platforms() | 223 | QStringList RbSettings::platforms() |
196 | { | 224 | { |
225 | ensureRbSettingsExists(); | ||
226 | |||
197 | QStringList result; | 227 | QStringList result; |
198 | systemSettings->beginGroup("platforms"); | 228 | systemSettings->beginGroup("platforms"); |
199 | QStringList a = systemSettings->childKeys(); | 229 | QStringList a = systemSettings->childKeys(); |
@@ -207,6 +237,8 @@ QStringList RbSettings::platforms() | |||
207 | 237 | ||
208 | QStringList RbSettings::languages() | 238 | QStringList RbSettings::languages() |
209 | { | 239 | { |
240 | ensureRbSettingsExists(); | ||
241 | |||
210 | QStringList result; | 242 | QStringList result; |
211 | systemSettings->beginGroup("languages"); | 243 | systemSettings->beginGroup("languages"); |
212 | QStringList a = systemSettings->childKeys(); | 244 | QStringList a = systemSettings->childKeys(); |
@@ -220,16 +252,20 @@ QStringList RbSettings::languages() | |||
220 | 252 | ||
221 | QString RbSettings::name(QString platform) | 253 | QString RbSettings::name(QString platform) |
222 | { | 254 | { |
255 | ensureRbSettingsExists(); | ||
223 | return systemSettings->value(platform + "/name").toString(); | 256 | return systemSettings->value(platform + "/name").toString(); |
224 | } | 257 | } |
225 | 258 | ||
226 | QString RbSettings::brand(QString platform) | 259 | QString RbSettings::brand(QString platform) |
227 | { | 260 | { |
261 | ensureRbSettingsExists(); | ||
228 | return systemSettings->value(platform + "/brand").toString(); | 262 | return systemSettings->value(platform + "/brand").toString(); |
229 | } | 263 | } |
230 | 264 | ||
231 | QMap<int, QString> RbSettings::usbIdMap(enum MapType type) | 265 | QMap<int, QString> RbSettings::usbIdMap(enum MapType type) |
232 | { | 266 | { |
267 | ensureRbSettingsExists(); | ||
268 | |||
233 | QMap<int, QString> map; | 269 | QMap<int, QString> map; |
234 | // get a list of ID -> target name | 270 | // get a list of ID -> target name |
235 | QStringList platforms; | 271 | QStringList platforms; |