Added cyrillic glyphs to 10-Artwiz-Snap; also added the default char
[kugel-rb.git] / rbutil / rbutilqt / rbsettings.cpp
blob5f8664e7eaf994cffb5c503af8065e789be4bda0
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
9 * Copyright (C) 2007 by Dominik Wenger
10 * $Id$
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"
22 #include <QSettings>
24 #if defined(Q_OS_LINUX)
25 #include <unistd.h>
26 #endif
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.
34 QFileInfo config;
35 config.setFile(QCoreApplication::instance()->applicationDirPath()
36 + "/RockboxUtility.ini");
37 if(config.isFile())
39 userSettings = new QSettings(QCoreApplication::instance()->applicationDirPath()
40 + "/RockboxUtility.ini", QSettings::IniFormat, this);
41 qDebug() << "config: portable";
43 else
45 userSettings = new QSettings(QSettings::IniFormat,
46 QSettings::UserScope, "rockbox.org", "RockboxUtility",this);
47 qDebug() << "config: system";
51 void RbSettings::sync()
53 userSettings->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.
60 if(getuid() == 0)
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);
71 #endif
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);
79 devices->endGroup();
80 return result;
83 QVariant RbSettings::userSettingsGroupGet(QString group,QString entry,QVariant def)
85 userSettings->beginGroup(group);
86 QVariant result = userSettings->value(entry,def);
87 userSettings->endGroup();
88 return result;
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();
267 if(lang.isEmpty())
268 lang = QLocale::system().name();
269 return lang;
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()
351 QStringList result;
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());
358 devices->endGroup();
359 return result;
362 QStringList RbSettings::allLanguages()
364 QStringList result;
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());
371 devices->endGroup();
372 return result;
375 QString RbSettings::name(QString plattform)
377 devices->beginGroup(plattform);
378 QString name = devices->value("name").toString();
379 devices->endGroup();
380 return name;
383 QString RbSettings::brand(QString plattform)
385 devices->beginGroup(plattform);
386 QString brand = devices->value("brand").toString();
387 devices->endGroup();
388 return brand;
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();
398 devices->endGroup();
400 for(int i = 0; i < platforms.size(); i++)
402 devices->beginGroup("platforms");
403 QString target = devices->value(platforms.at(i)).toString();
404 devices->endGroup();
405 devices->beginGroup(target);
406 QStringList ids = devices->value("usbid").toStringList();
407 int j = ids.size();
408 while(j--)
409 map.insert(ids.at(j).toInt(0, 16), target);
411 devices->endGroup();
413 return map;
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();
424 devices->endGroup();
426 for(int i = 0; i < platforms.size(); i++)
428 devices->beginGroup("platforms");
429 QString target = devices->value(platforms.at(i)).toString();
430 devices->endGroup();
431 devices->beginGroup(target);
432 QStringList ids = devices->value("usberror").toStringList();
433 int j = ids.size();
434 while(j--)
435 map.insert(ids.at(j).toInt(0, 16), target);
436 devices->endGroup();
438 return map;
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();
450 devices->endGroup();
452 for(int i = 0; i < platforms.size(); i++)
454 devices->beginGroup("platforms");
455 QString target = devices->value(platforms.at(i)).toString();
456 devices->endGroup();
457 devices->beginGroup(target);
458 QStringList ids = devices->value("usbincompat").toStringList();
459 int j = ids.size();
460 while(j--)
461 map.insert(ids.at(j).toInt(0, 16), target);
462 devices->endGroup();
464 return map;
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);