Segregated equalizer settings to separate ini file
authorNikolay Tischenko <niktischenko@gmail.com>
Fri, 12 Nov 2010 18:00:35 +0000 (00:00 +0600)
committerNikolay Tischenko <niktischenko@gmail.com>
Fri, 12 Nov 2010 18:00:35 +0000 (00:00 +0600)
src/config.cpp
src/config.h
src/equalizerdialog.cpp
src/player/player.cpp

index 6695510..4703152 100644 (file)
@@ -36,10 +36,12 @@ Config::Config()
                _settings->setValue("ui/language", "en");
        if (_settings->value("ui/trackcolor").toString() == "")
                _settings->setValue("ui/trackcolor", "blue");
+       _equalizer_settings = new QSettings(QString(applicationDir())+"/equalizer.ini", QSettings::IniFormat);
 }
 
 Config::~Config() {
        delete _settings;
+       delete _equalizer_settings;
 }
 
 QString Config::applicationDir() {
@@ -58,3 +60,41 @@ QVariant Config::getValue(QString key) {
 void Config::setValue(QString key, QVariant value) {
        _settings->setValue(key, value);
 }
+
+QStringList Config::getEqualizerPresets() {
+       QStringList presets = _equalizer_settings->value("equalizer/presets").toStringList();
+       return presets;
+}
+
+double Config::getEqualizerValue(QString band, QString preset) {
+       QString section;
+       if (preset.isEmpty()) {
+               section = "equalizer";
+       } else {
+               section = "equalizer_preset_"+preset;
+       }
+       return _equalizer_settings->value(section+"/"+band).toDouble();
+}
+
+void Config::setEqualizerValue(QString band, double value) {
+       _equalizer_settings->setValue("equalizer/"+band, value);
+}
+
+void Config::saveEqualizer(QString preset) {
+       QString section = QString("equalizer_preset_%1/%2").arg(preset);
+       QStringList presets = getEqualizerPresets();
+       if (!presets.contains(preset)) presets.append(preset);
+       _equalizer_settings->setValue("equalizer/presets", presets);
+       for (int i = 0; i < 10; i++) {
+               QString band = QString("band%1").arg(i);
+               _equalizer_settings->setValue(section.arg(band), getEqualizerValue(band));
+       }
+}
+
+bool Config::equalizerEnabled() {
+       return _equalizer_settings->value("equalizer/enabled").toBool();
+}
+
+void Config::setEqualizerEnabled(bool enabled) {
+       _equalizer_settings->setValue("equalizer/enabled", enabled);
+}
index 3eeb279..97e6c1c 100644 (file)
@@ -32,8 +32,15 @@ namespace SomePlayer {
                    QString applicationDir();
                    QVariant getValue(QString key);
                    void setValue(QString key, QVariant value);
+                   QStringList getEqualizerPresets();
+                   double getEqualizerValue(QString band, QString preset="");
+                   void setEqualizerValue(QString band, double value);
+                   void saveEqualizer(QString preset);
+                   bool equalizerEnabled();
+                   void setEqualizerEnabled(bool);
                private:
                    QSettings *_settings;
+                   QSettings *_equalizer_settings;
                };
        };
 };
index ecdeaa2..dd0a8e5 100644 (file)
@@ -156,7 +156,7 @@ void EqualizerDialog::_value_master_changed(int v) {
 
 void EqualizerDialog::reloadPresets() {
        Config config;
-       QStringList presets = config.getValue("equalizer/presets").toStringList();
+       QStringList presets = config.getEqualizerPresets();
        ui->presetComboBox->clear();
        ui->presetComboBox->addItems(presets);
 }
@@ -164,44 +164,34 @@ void EqualizerDialog::reloadPresets() {
 void EqualizerDialog::_save_preset() {
        Config config;
        QString name = ui->presetComboBox->currentText().trimmed();
-       QStringList presets = config.getValue("equalizer/presets").toStringList();
+       QStringList presets = config.getEqualizerPresets();
        if (!presets.contains(name))
                presets.append(name);
-       config.setValue("equalizer/presets", presets);
-       config.setValue(QString("equalizer_preset_")+name+"/band0", ui->band0Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band1", ui->band1Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band2", ui->band2Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band3", ui->band3Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band4", ui->band4Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band5", ui->band5Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band6", ui->band6Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band7", ui->band7Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band8", ui->band8Slider->value());
-       config.setValue(QString("equalizer_preset_")+name+"/band9", ui->band9Slider->value());
+       config.saveEqualizer(name);
        reloadPresets();
 }
 
 void EqualizerDialog::_load_preset(QString name) {
        Config config;
-       ui->band0Slider->setValue(config.getValue("equalizer_preset_"+name+"/band0").toInt());
+       ui->band0Slider->setValue((int)(config.getEqualizerValue("band0", name)*10 + 0.5));
        _value0_changed(ui->band0Slider->value());
-       ui->band1Slider->setValue(config.getValue("equalizer_preset_"+name+"/band1").toInt());
+       ui->band1Slider->setValue((int)(config.getEqualizerValue("band1", name)*10 + 0.5));
        _value1_changed(ui->band1Slider->value());
-       ui->band2Slider->setValue(config.getValue("equalizer_preset_"+name+"/band2").toInt());
+       ui->band2Slider->setValue((int)(config.getEqualizerValue("band2", name)*10 + 0.5));
        _value2_changed(ui->band2Slider->value());
-       ui->band3Slider->setValue(config.getValue("equalizer_preset_"+name+"/band3").toInt());
+       ui->band3Slider->setValue((int)(config.getEqualizerValue("band3", name)*10 + 0.5));
        _value3_changed(ui->band3Slider->value());
-       ui->band4Slider->setValue(config.getValue("equalizer_preset_"+name+"/band4").toInt());
+       ui->band4Slider->setValue((int)(config.getEqualizerValue("band4", name)*10 + 0.5));
        _value4_changed(ui->band4Slider->value());
-       ui->band5Slider->setValue(config.getValue("equalizer_preset_"+name+"/band5").toInt());
+       ui->band5Slider->setValue((int)(config.getEqualizerValue("band5", name)*10 + 0.5));
        _value5_changed(ui->band5Slider->value());
-       ui->band6Slider->setValue(config.getValue("equalizer_preset_"+name+"/band6").toInt());
+       ui->band6Slider->setValue((int)(config.getEqualizerValue("band6", name)*10 + 0.5));
        _value6_changed(ui->band6Slider->value());
-       ui->band7Slider->setValue(config.getValue("equalizer_preset_"+name+"/band7").toInt());
+       ui->band7Slider->setValue((int)(config.getEqualizerValue("band7", name)*10 + 0.5));
        _value7_changed(ui->band7Slider->value());
-       ui->band8Slider->setValue(config.getValue("equalizer_preset_"+name+"/band8").toInt());
+       ui->band8Slider->setValue((int)(config.getEqualizerValue("band8", name)*10 + 0.5));
        _value8_changed(ui->band8Slider->value());
-       ui->band9Slider->setValue(config.getValue("equalizer_preset_"+name+"/band9").toInt());
+       ui->band9Slider->setValue((int)(config.getEqualizerValue("band9", name)*10 + 0.5));
        _value9_changed(ui->band9Slider->value());
 }
 
index 481ad6f..1a83844 100644 (file)
@@ -90,16 +90,12 @@ Player::Player(QObject *parent) :
                if (desc.name() == "equalizer-10bands") {
                        _equalizer = new Phonon::Effect(desc, this);
                        Config config;
-                       if (config.getValue("equalizer/equalizer").toString() == "enabled") {
+                       if (config.equalizerEnabled()) {
                                for (int i = 0; i < 10; i++) {
-                                       QVariant var = config.getValue(QString("equalizer/band%1").arg(i));
+                                       QVariant var = config.getEqualizerValue(QString("band%1").arg(i));
                                        setEqualizerValue(i, var.toDouble());
                                }
                                enableEqualizer();
-                       } else if (config.getValue("equalizer/equalizer") == "") {
-                               for (int i = 0; i < 10; i++) {
-                                       config.setValue(QString("equalizer/band%1").arg(i), 0);
-                               }
                        }
                }
        }
@@ -289,7 +285,7 @@ void Player::enableEqualizer() {
        _equalizer_enabled = true;
        _path.insertEffect(_equalizer);
        Config config;
-       config.setValue("equalizer/equalizer", "enabled");
+       config.setEqualizerEnabled(true);
 }
 
 void Player::disableEqualizer() {
@@ -298,7 +294,7 @@ void Player::disableEqualizer() {
        _equalizer_enabled = false;
        _path.removeEffect(_equalizer);
        Config config;
-       config.setValue("equalizer/equalizer", "disabled");
+       config.setEqualizerEnabled(false);
 }
 
 void Player::setEqualizerValue(int band, double value) {
@@ -310,7 +306,7 @@ void Player::setEqualizerValue(int band, double value) {
        QList<Phonon::EffectParameter> plist = _equalizer->parameters();
        _equalizer->setParameterValue(plist[band], QVariant::fromValue(value));
        Config config;
-       config.setValue(QString("equalizer/band%1").arg(band), value);
+       config.setEqualizerValue(QString("band%1").arg(band), value);
 }
 
 QString Player::artist() {