1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
9 * Copyright (C) 2007 by Dominik Wenger
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
18 ****************************************************************************/
20 #include "rbsettings.h"
24 #if defined(Q_OS_LINUX)
28 void RbSettings::open()
30 // only use built-in rbutil.ini
31 devices
= new QSettings(":/ini/rbutil.ini", QSettings::IniFormat
, 0);
32 // portable installation:
33 // check for a configuration file in the program folder.
35 config
.setFile(QCoreApplication::instance()->applicationDirPath()
36 + "/RockboxUtility.ini");
39 userSettings
= new QSettings(QCoreApplication::instance()->applicationDirPath()
40 + "/RockboxUtility.ini", QSettings::IniFormat
, this);
41 qDebug() << "config: portable";
45 userSettings
= new QSettings(QSettings::IniFormat
,
46 QSettings::UserScope
, "rockbox.org", "RockboxUtility",this);
47 qDebug() << "config: system";
51 void RbSettings::sync()
54 #if defined(Q_OS_LINUX)
55 // when using sudo it runs rbutil with uid 0 but unfortunately without a
56 // proper login shell, thus the configuration file gets placed in the
57 // calling users $HOME. This in turn will cause issues if trying to
58 // run rbutil later as user. Try to detect this case via the environment
59 // variable SUDO_UID and SUDO_GID and if set chown the user config file.
62 char* realuser
= getenv("SUDO_UID");
63 char* realgroup
= getenv("SUDO_GID");
64 if(realuser
!= NULL
&& realgroup
!= NULL
)
66 int realuid
= atoi(realuser
);
67 int realgid
= atoi(realgroup
);
68 chown(qPrintable(userSettings
->fileName()), realuid
, realgid
);
74 QVariant
RbSettings::deviceSettingCurGet(QString entry
,QString def
)
76 QString platform
= userSettings
->value("platform").toString();
77 devices
->beginGroup(platform
);
78 QVariant result
= devices
->value(entry
,def
);
83 QVariant
RbSettings::userSettingsGroupGet(QString group
,QString entry
,QVariant def
)
85 userSettings
->beginGroup(group
);
86 QVariant result
= userSettings
->value(entry
,def
);
87 userSettings
->endGroup();
91 void RbSettings::userSettingsGroupSet(QString group
,QString entry
,QVariant value
)
93 userSettings
->beginGroup(group
);
94 userSettings
->setValue(entry
,value
);
95 userSettings
->endGroup();
98 QString
RbSettings::userSettingFilename()
100 return userSettings
->fileName();
103 QString
RbSettings::curVersion()
105 return userSettings
->value("rbutil_version").toString();
108 bool RbSettings::cacheOffline()
110 return userSettings
->value("offline").toBool();
113 QString
RbSettings::mountpoint()
115 return userSettings
->value("mountpoint").toString();
118 QString
RbSettings::manualUrl()
120 return devices
->value("manual_url").toString();
123 QString
RbSettings::bleedingUrl()
125 return devices
->value("bleeding_url").toString();
128 QString
RbSettings::cachePath()
130 return userSettings
->value("cachepath", QDir::tempPath()).toString();
133 QString
RbSettings::build()
135 return userSettings
->value("build").toString();
138 QString
RbSettings::bootloaderUrl()
140 return devices
->value("bootloader_url").toString();
143 QString
RbSettings::bootloaderInfoUrl()
145 return devices
->value("bootloader_info_url").toString();
148 QString
RbSettings::fontUrl()
150 return devices
->value("font_url").toString();
153 QString
RbSettings::voiceUrl()
155 return devices
->value("voice_url").toString();
158 QString
RbSettings::doomUrl()
160 return devices
->value("doom_url").toString();
163 QString
RbSettings::releaseUrl()
165 return devices
->value("release_url").toString();
168 QString
RbSettings::dailyUrl()
170 return devices
->value("daily_url").toString();
173 QString
RbSettings::serverConfUrl()
175 return devices
->value("server_conf_url").toString();
178 QString
RbSettings::genlangUrl()
180 return devices
->value("genlang_url").toString();
183 QString
RbSettings::themeUrl()
185 return devices
->value("themes_url").toString();
188 QString
RbSettings::bleedingInfo()
190 return devices
->value("bleeding_info").toString();
193 bool RbSettings::cacheDisabled()
195 return userSettings
->value("cachedisable").toBool();
198 QString
RbSettings::proxyType()
200 return userSettings
->value("proxytype", "none").toString();
203 QString
RbSettings::proxy()
205 return userSettings
->value("proxy").toString();
208 QString
RbSettings::ofPath()
210 return userSettings
->value("ofpath").toString();
213 QString
RbSettings::curBrand()
215 QString platform
= userSettings
->value("platform").toString();
216 return brand(platform
);
219 QString
RbSettings::curName()
221 QString platform
= userSettings
->value("platform").toString();
222 return name(platform
);
225 QString
RbSettings::curPlatform()
227 return userSettings
->value("platform").toString();
230 QString
RbSettings::curPlatformName()
232 return deviceSettingCurGet("platform").toString();
235 QString
RbSettings::curManual()
237 return deviceSettingCurGet("manualname","rockbox-" +
238 devices
->value("platform").toString()).toString();
241 QString
RbSettings::curBootloaderMethod()
243 return deviceSettingCurGet("bootloadermethod", "none").toString();
246 QString
RbSettings::curBootloaderName()
248 return deviceSettingCurGet("bootloadername").toString();
251 QString
RbSettings::curBootloaderFile()
253 return deviceSettingCurGet("bootloaderfile").toString();
256 QString
RbSettings::curVoiceName()
258 return deviceSettingCurGet("voicename").toString();
261 QString
RbSettings::curLang()
263 // QSettings::value only returns the default when the setting
264 // doesn't exist. Make sure to return the system language if
265 // the language in the configuration is present but empty too.
266 QString lang
= userSettings
->value("lang").toString();
268 lang
= QLocale::system().name();
272 QString
RbSettings::curEncoder()
274 return deviceSettingCurGet("encoder").toString();
277 QString
RbSettings::curTTS()
279 return userSettings
->value("tts").toString();
282 QString
RbSettings::lastTalkedFolder()
284 return userSettings
->value("last_talked_folder").toString();
287 QString
RbSettings::voiceLanguage()
289 return userSettings
->value("voicelanguage").toString();
292 int RbSettings::wavtrimTh()
294 return userSettings
->value("wavtrimthreshold",500).toInt();
297 QString
RbSettings::ttsPath(QString tts
)
299 return userSettingsGroupGet(tts
,"ttspath").toString();
301 QString
RbSettings::ttsOptions(QString tts
)
303 return userSettingsGroupGet(tts
,"ttsoptions").toString();
305 QString
RbSettings::ttsVoice(QString tts
)
307 return userSettingsGroupGet(tts
,"ttsvoice","Microsoft Sam").toString();
309 int RbSettings::ttsSpeed(QString tts
)
311 return userSettingsGroupGet(tts
,"ttsspeed",0).toInt();
313 QString
RbSettings::ttsLang(QString tts
)
315 return userSettingsGroupGet(tts
,"ttslanguage","english").toString();
318 bool RbSettings::ttsUseSapi4()
320 return userSettingsGroupGet("sapi","useSapi4",false).toBool();
323 QString
RbSettings::encoderPath(QString enc
)
325 return userSettingsGroupGet(enc
,"encoderpath").toString();
327 QString
RbSettings::encoderOptions(QString enc
)
329 return userSettingsGroupGet(enc
,"encoderoptions").toString();
332 double RbSettings::encoderQuality(QString enc
)
334 return userSettingsGroupGet(enc
,"quality",8.f
).toDouble();
336 int RbSettings::encoderComplexity(QString enc
)
338 return userSettingsGroupGet(enc
,"complexity",10).toInt();
340 double RbSettings::encoderVolume(QString enc
)
342 return userSettingsGroupGet(enc
,"volume",1.f
).toDouble();
344 bool RbSettings::encoderNarrowband(QString enc
)
346 return userSettingsGroupGet(enc
,"narrowband",false).toBool();
349 QStringList
RbSettings::allPlatforms()
352 devices
->beginGroup("platforms");
353 QStringList a
= devices
->childKeys();
354 for(int i
= 0; i
< a
.size(); i
++)
356 result
.append(devices
->value(a
.at(i
), "null").toString());
362 QStringList
RbSettings::allLanguages()
365 devices
->beginGroup("languages");
366 QStringList a
= devices
->childKeys();
367 for(int i
= 0; i
< a
.size(); i
++)
369 result
.append(devices
->value(a
.at(i
), "null").toString());
375 QString
RbSettings::name(QString plattform
)
377 devices
->beginGroup(plattform
);
378 QString name
= devices
->value("name").toString();
383 QString
RbSettings::brand(QString plattform
)
385 devices
->beginGroup(plattform
);
386 QString brand
= devices
->value("brand").toString();
391 QMap
<int, QString
> RbSettings::usbIdMap()
393 QMap
<int, QString
> map
;
394 // get a list of ID -> target name
395 QStringList platforms
;
396 devices
->beginGroup("platforms");
397 platforms
= devices
->childKeys();
400 for(int i
= 0; i
< platforms
.size(); i
++)
402 devices
->beginGroup("platforms");
403 QString target
= devices
->value(platforms
.at(i
)).toString();
405 devices
->beginGroup(target
);
406 QStringList ids
= devices
->value("usbid").toStringList();
409 map
.insert(ids
.at(j
).toInt(0, 16), target
);
416 QMap
<int, QString
> RbSettings::usbIdErrorMap()
419 QMap
<int, QString
> map
;
420 // get a list of ID -> target name
421 QStringList platforms
;
422 devices
->beginGroup("platforms");
423 platforms
= devices
->childKeys();
426 for(int i
= 0; i
< platforms
.size(); i
++)
428 devices
->beginGroup("platforms");
429 QString target
= devices
->value(platforms
.at(i
)).toString();
431 devices
->beginGroup(target
);
432 QStringList ids
= devices
->value("usberror").toStringList();
435 map
.insert(ids
.at(j
).toInt(0, 16), target
);
442 QMap
<int, QString
> RbSettings::usbIdIncompatMap()
445 QMap
<int, QString
> map
;
446 // get a list of ID -> target name
447 QStringList platforms
;
448 devices
->beginGroup("platforms");
449 platforms
= devices
->childKeys();
452 for(int i
= 0; i
< platforms
.size(); i
++)
454 devices
->beginGroup("platforms");
455 QString target
= devices
->value(platforms
.at(i
)).toString();
457 devices
->beginGroup(target
);
458 QStringList ids
= devices
->value("usbincompat").toStringList();
461 map
.insert(ids
.at(j
).toInt(0, 16), target
);
468 QString
RbSettings::curResolution()
470 return deviceSettingCurGet("resolution").toString();
473 int RbSettings::curTargetId()
475 return deviceSettingCurGet("targetid").toInt();
478 void RbSettings::setCurVersion(QString version
)
480 userSettings
->setValue("rbutil_version",version
);
483 void RbSettings::setOfPath(QString path
)
485 userSettings
->setValue("ofpath",path
);
488 void RbSettings::setCachePath(QString path
)
490 userSettings
->setValue("cachepath", path
);
493 void RbSettings::setBuild(QString build
)
495 userSettings
->setValue("build", build
);
498 void RbSettings::setLastTalkedDir(QString dir
)
500 userSettings
->setValue("last_talked_folder", dir
);
503 void RbSettings::setVoiceLanguage(QString dir
)
505 userSettings
->setValue("voicelanguage", dir
);
508 void RbSettings::setWavtrimTh(int th
)
510 userSettings
->setValue("wavtrimthreshold", th
);
513 void RbSettings::setProxy(QString proxy
)
515 userSettings
->setValue("proxy", proxy
);
518 void RbSettings::setProxyType(QString proxytype
)
520 userSettings
->setValue("proxytype", proxytype
);
523 void RbSettings::setLang(QString lang
)
525 userSettings
->setValue("lang", lang
);
528 void RbSettings::setMountpoint(QString mp
)
530 userSettings
->setValue("mountpoint",mp
);
533 void RbSettings::setCurPlatform(QString platt
)
535 userSettings
->setValue("platform",platt
);
539 void RbSettings::setCacheDisable(bool on
)
541 userSettings
->setValue("cachedisable",on
);
544 void RbSettings::setCacheOffline(bool on
)
546 userSettings
->setValue("offline",on
);
549 void RbSettings::setCurTTS(QString tts
)
551 userSettings
->setValue("tts",tts
);
554 void RbSettings::setTTSPath(QString tts
, QString path
)
556 userSettingsGroupSet(tts
,"ttspath",path
);
559 void RbSettings::setTTSOptions(QString tts
, QString options
)
561 userSettingsGroupSet(tts
,"ttsoptions",options
);
564 void RbSettings::setTTSVoice(QString tts
, QString voice
)
566 userSettingsGroupSet(tts
,"ttsvoice",voice
);
569 void RbSettings::setTTSSpeed(QString tts
, int speed
)
571 userSettingsGroupSet(tts
,"ttsspeed",speed
);
574 void RbSettings::setTTSLang(QString tts
, QString lang
)
576 userSettingsGroupSet(tts
,"ttslanguage",lang
);
579 void RbSettings::setTTSUseSapi4(bool value
)
581 userSettingsGroupSet("sapi","useSapi4",value
);
584 void RbSettings::setEncoderPath(QString enc
, QString path
)
586 userSettingsGroupSet(enc
,"encoderpath",path
);
589 void RbSettings::setEncoderOptions(QString enc
, QString options
)
591 userSettingsGroupSet(enc
,"encoderoptions",options
);
594 void RbSettings::setEncoderQuality(QString enc
, double q
)
596 userSettingsGroupSet(enc
,"quality",q
);
598 void RbSettings::setEncoderComplexity(QString enc
, int c
)
600 userSettingsGroupSet(enc
,"complexity",c
);
602 void RbSettings::setEncoderVolume(QString enc
,double v
)
604 userSettingsGroupSet(enc
,"volume",v
);
606 void RbSettings::setEncoderNarrowband(QString enc
,bool nb
)
608 userSettingsGroupSet(enc
,"narrowband",nb
);