summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base/rbsettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/base/rbsettings.cpp')
-rw-r--r--rbutil/rbutilqt/base/rbsettings.cpp86
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
29const static struct { 30const 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
97void RbSettings::open() 98//! pointer to setting object to NULL
99QSettings* RbSettings::systemSettings = NULL;
100QSettings* RbSettings::userSettings = NULL;
101
102void 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
120void RbSettings::sync() 133void 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
161QString RbSettings::userSettingFilename()
162{
163 ensureRbSettingsExists();
164 return userSettings->fileName();
165}
146 166
147QVariant RbSettings::value(enum SystemSettings setting) 167QVariant 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 183QVariant RbSettings::value(enum UserSettings setting)
162QString RbSettings::userSettingFilename() 184{
163{ 185 QString empty;
164 return userSettings->fileName(); 186 return subValue(empty, setting);
165} 187}
166 188
167 189QVariant RbSettings::subValue(QString sub, enum UserSettings setting)
168QVariant 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
203void RbSettings::setValue(enum UserSettings setting , QVariant value)
204{
205 QString empty;
206 return setSubValue(empty, setting, value);
207}
180 208
181void RbSettings::setSubValue(QString& sub, enum UserSettings setting, QVariant value) 209void 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
195QStringList RbSettings::platforms() 223QStringList 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
208QStringList RbSettings::languages() 238QStringList 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
221QString RbSettings::name(QString platform) 253QString 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
226QString RbSettings::brand(QString platform) 259QString 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
231QMap<int, QString> RbSettings::usbIdMap(enum MapType type) 265QMap<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;