From 6cea3308d05c21aabe073f77c3d013485b0429a0 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Tue, 11 Aug 2009 17:02:35 +0000 Subject: Clean up accessing system setting values for a specific player. Remove the ugly "save, change and restore platform" accesses and extend the settings class to allow accessing player specific system values. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22254 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/base/rbsettings.cpp | 20 +++++++++++++++++ rbutil/rbutilqt/base/rbsettings.h | 5 ++++- rbutil/rbutilqt/configure.cpp | 44 +++++++++++++++++-------------------- 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/rbutil/rbutilqt/base/rbsettings.cpp b/rbutil/rbutilqt/base/rbsettings.cpp index 8ab340faa3..150640f010 100644 --- a/rbutil/rbutilqt/base/rbsettings.cpp +++ b/rbutil/rbutilqt/base/rbsettings.cpp @@ -220,6 +220,25 @@ void RbSettings::setSubValue(QString sub, enum UserSettings setting, QVariant va userSettings->setValue(s, value); } + +QVariant RbSettings::platformValue(QString platform, enum SystemSettings setting) +{ + ensureRbSettingsExists(); + + // locate setting item + int i = 0; + while(SystemSettingsList[i].setting != setting) + i++; + + QString s = SystemSettingsList[i].name; + s.replace(":platform:", platform); + QString d = SystemSettingsList[i].def; + d.replace(":platform:", platform); + qDebug() << "[Settings] GET P:" << s << systemSettings->value(s, d).toString(); + return systemSettings->value(s, d); +} + + QStringList RbSettings::platforms() { ensureRbSettingsExists(); @@ -250,6 +269,7 @@ QStringList RbSettings::languages() return result; } + QString RbSettings::name(QString platform) { ensureRbSettingsExists(); diff --git a/rbutil/rbutilqt/base/rbsettings.h b/rbutil/rbutilqt/base/rbsettings.h index 4f2a5c3617..c9aceb4039 100644 --- a/rbutil/rbutilqt/base/rbsettings.h +++ b/rbutil/rbutilqt/base/rbsettings.h @@ -114,7 +114,7 @@ class RbSettings : public QObject static QMap usbIdMap(enum MapType); //! get a value from system settings static QVariant value(enum SystemSettings setting); - //! get a vaulue from user settings + //! get a value from user settings static QVariant value(enum UserSettings setting); //! set a user setting value static void setValue(enum UserSettings setting , QVariant value); @@ -122,6 +122,8 @@ class RbSettings : public QObject 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); + //! 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 @@ -137,3 +139,4 @@ class RbSettings : public QObject }; #endif + diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 23d275dd6e..43406c00e7 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp @@ -367,18 +367,14 @@ void Config::updateTtsState(int index) void Config::updateEncState() { - // FIXME: this is a workaround to make the encoder follow the device selection - // even with the settings (and thus the device) being saved. Needs to be redone - // properly later by extending the settings object if(ui.treeDevices->selectedItems().size() == 0) return; QString devname = ui.treeDevices->selectedItems().at(0)->data(0, Qt::UserRole).toString(); - QString olddevice = RbSettings::value(RbSettings::Platform).toString(); - RbSettings::setValue(RbSettings::Platform, devname); - QString encoder = RbSettings::value(RbSettings::CurEncoder).toString(); - ui.encoderName->setText(EncBase::getEncoderName(RbSettings::value(RbSettings::CurEncoder).toString())); - RbSettings::setValue(RbSettings::Platform, olddevice); + QString encoder = RbSettings::platformValue(devname, + RbSettings::CurEncoder).toString(); + ui.encoderName->setText(EncBase::getEncoderName(RbSettings::platformValue(devname, + RbSettings::CurEncoder).toString())); EncBase* enc = EncBase::getEncoder(this,encoder); @@ -673,14 +669,16 @@ void Config::testTts() TTSBase* tts = TTSBase::getTTS(this,ui.comboTts->itemData(index).toString()); if(!tts->configOk()) { - QMessageBox::warning(this,tr("TTS configuration invalid"),tr("TTS configuration invalid. \n Please configure TTS engine.")); + QMessageBox::warning(this,tr("TTS configuration invalid"), + tr("TTS configuration invalid. \n Please configure TTS engine.")); return; } if(!tts->start(&errstr)) { - QMessageBox::warning(this,tr("Could not start TTS engine"),tr("Could not start TTS engine.\n") + errstr - +tr("\nPlease configure TTS engine.")); + QMessageBox::warning(this,tr("Could not start TTS engine"), + tr("Could not start TTS engine.\n") + errstr + + tr("\nPlease configure TTS engine.")); return; } @@ -692,11 +690,12 @@ void Config::testTts() if(tts->voice(tr("Rockbox Utility Voice Test"),filename,&errstr) == FatalError) { tts->stop(); - QMessageBox::warning(this,tr("Could not voice test string"),tr("Could not voice test string.\n") + errstr - +tr("\nPlease configure TTS engine.")); + QMessageBox::warning(this,tr("Could not voice test string"), + tr("Could not voice test string.\n") + errstr + + tr("\nPlease configure TTS engine.")); return; } - tts->stop(); + tts->stop(); #if defined(Q_OS_LINUX) QString exe = findExecutable("aplay"); if(exe == "") exe = findExecutable("play"); @@ -704,25 +703,21 @@ void Config::testTts() { QProcess::execute(exe+" "+filename); } -#else +#else QSound::play(filename); -#endif +#endif } void Config::configEnc() { - // FIXME: this is a workaround to make the encoder follow the device selection - // even with the settings (and thus the device) being saved. Needs to be redone - // properly later by extending the settings object if(ui.treeDevices->selectedItems().size() == 0) return; QString devname = ui.treeDevices->selectedItems().at(0)->data(0, Qt::UserRole).toString(); - QString olddevice = RbSettings::value(RbSettings::CurrentPlatform).toString(); - RbSettings::setValue(RbSettings::CurrentPlatform,devname); - QString encoder = RbSettings::value(RbSettings::CurEncoder).toString(); - ui.encoderName->setText(EncBase::getEncoderName(RbSettings::value(RbSettings::CurEncoder).toString())); - RbSettings::setValue(RbSettings::CurrentPlatform,olddevice); + QString encoder = RbSettings::platformValue(devname, + RbSettings::CurEncoder).toString(); + ui.encoderName->setText(EncBase::getEncoderName(RbSettings::platformValue(devname, + RbSettings::CurEncoder).toString())); EncBase* enc = EncBase::getEncoder(this,encoder); @@ -732,3 +727,4 @@ void Config::configEnc() updateEncState(); } + -- cgit v1.2.3