Version bump
[someplayer] / src / equalizerdialog.cpp
1 /*
2  * SomePlayer - An alternate music player for Maemo 5
3  * Copyright (C) 2010 Nikolay (somebody) Tischenko <niktischenko@gmail.com>
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18  */
19
20 #include "equalizerdialog.h"
21 #include "ui_equalizerdialog.h"
22 #include "config.h"
23
24 using namespace SomePlayer::Storage;
25
26 EqualizerDialog::EqualizerDialog(QWidget *parent) :
27                 QDialog(parent),
28                 ui(new Ui::EqualizerDialog)
29 {
30         ui->setupUi(this);
31         ui->band0Slider->setMinimum(-120);
32         ui->band0Slider->setValue(0);
33         ui->band1Slider->setMinimum(-120);
34         ui->band1Slider->setValue(0);
35         ui->band2Slider->setMinimum(-120);
36         ui->band2Slider->setValue(0);
37         ui->band3Slider->setMinimum(-120);
38         ui->band3Slider->setValue(0);
39         ui->band4Slider->setMinimum(-120);
40         ui->band4Slider->setValue(0);
41         ui->band5Slider->setMinimum(-120);
42         ui->band5Slider->setValue(0);
43         ui->band6Slider->setMinimum(-120);
44         ui->band6Slider->setValue(0);
45         ui->band7Slider->setMinimum(-120);
46         ui->band7Slider->setValue(0);
47         ui->band8Slider->setMinimum(-120);
48         ui->band8Slider->setValue(0);
49         ui->band9Slider->setMinimum(-120);
50         ui->band9Slider->setValue(0);
51
52         ui->band0Slider->setMaximum(120);
53         ui->band1Slider->setMaximum(120);
54         ui->band2Slider->setMaximum(120);
55         ui->band3Slider->setMaximum(120);
56         ui->band4Slider->setMaximum(120);
57         ui->band5Slider->setMaximum(120);
58         ui->band6Slider->setMaximum(120);
59         ui->band7Slider->setMaximum(120);
60         ui->band8Slider->setMaximum(120);
61         ui->band9Slider->setMaximum(120);
62
63         ui->masterSlider->setMinimum(-120);
64         ui->masterSlider->setMaximum(120);
65         ui->masterSlider->setValue(0);
66
67         connect(ui->band0Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value0_changed(int)));
68         connect(ui->band1Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value1_changed(int)));
69         connect(ui->band2Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value2_changed(int)));
70         connect(ui->band3Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value3_changed(int)));
71         connect(ui->band4Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value4_changed(int)));
72         connect(ui->band5Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value5_changed(int)));
73         connect(ui->band6Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value6_changed(int)));
74         connect(ui->band7Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value7_changed(int)));
75         connect(ui->band8Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value8_changed(int)));
76         connect(ui->band9Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value9_changed(int)));
77         connect(ui->masterSlider, SIGNAL(valueChanged(int)), this, SLOT(_value_master_changed(int)));
78         connect(ui->enableToggleButton, SIGNAL(clicked()), this, SLOT(_state_changed()));
79         connect(ui->saveButton, SIGNAL(clicked()), this, SLOT(_save_preset()));
80         connect(ui->presetComboBox, SIGNAL(activated(QString)), this, SLOT(_load_preset(QString)));
81 }
82
83 EqualizerDialog::~EqualizerDialog()
84 {
85         delete ui;
86 }
87
88 void EqualizerDialog::setValue(int band, int val) {
89         switch (band) {
90         case 0:
91                 ui->band0Slider->setValue(val); break;
92         case 1:
93                 ui->band1Slider->setValue(val); break;
94         case 2:
95                 ui->band2Slider->setValue(val); break;
96         case 3:
97                 ui->band3Slider->setValue(val); break;
98         case 4:
99                 ui->band4Slider->setValue(val); break;
100         case 5:
101                 ui->band5Slider->setValue(val); break;
102         case 6:
103                 ui->band6Slider->setValue(val); break;
104         case 7:
105                 ui->band7Slider->setValue(val); break;
106         case 8:
107                 ui->band8Slider->setValue(val); break;
108         case 9:
109                 ui->band9Slider->setValue(val); break;
110         }
111
112 }
113
114 void EqualizerDialog::_state_changed() {
115         if (ui->enableToggleButton->isChecked()) {
116                 setEqualizerEnabled(true);
117                 emit equalizerEnabled();
118         } else {
119                 setEqualizerEnabled(false);
120                 emit equalizerDisabled();
121         }
122 }
123
124 void EqualizerDialog::setEqualizerEnabled(bool enabled) {
125         ui->band0Slider->setEnabled(enabled);
126         ui->band1Slider->setEnabled(enabled);
127         ui->band2Slider->setEnabled(enabled);
128         ui->band3Slider->setEnabled(enabled);
129         ui->band4Slider->setEnabled(enabled);
130         ui->band5Slider->setEnabled(enabled);
131         ui->band6Slider->setEnabled(enabled);
132         ui->band7Slider->setEnabled(enabled);
133         ui->band8Slider->setEnabled(enabled);
134         ui->band9Slider->setEnabled(enabled);
135         ui->masterSlider->setEnabled(enabled);
136         ui->saveButton->setEnabled(enabled);
137         ui->presetComboBox->setEnabled(enabled);
138         ui->enableToggleButton->setChecked(enabled);
139 }
140
141 void EqualizerDialog::_value_master_changed(int v) {
142         ui->band0Slider->setValue(v);
143         ui->band1Slider->setValue(v);
144         ui->band2Slider->setValue(v);
145         ui->band3Slider->setValue(v);
146         ui->band4Slider->setValue(v);
147         ui->band5Slider->setValue(v);
148         ui->band6Slider->setValue(v);
149         ui->band7Slider->setValue(v);
150         ui->band8Slider->setValue(v);
151         ui->band9Slider->setValue(v);
152         for (int i = 0; i < 10; i++) {
153                 emit valueChanged(i, v);
154         }
155 }
156
157 void EqualizerDialog::reloadPresets() {
158         Config config;
159         QStringList presets = config.getValue("equalizer/presets").toStringList();
160         ui->presetComboBox->clear();
161         ui->presetComboBox->addItems(presets);
162 }
163
164 void EqualizerDialog::_save_preset() {
165         Config config;
166         QString name = ui->presetComboBox->currentText();
167         QStringList presets = config.getValue("equalizer/presets").toStringList();
168         if (!presets.contains(name))
169                 presets.append(name);
170         config.setValue("equalizer/presets", presets);
171         config.setValue(QString("equalizer_preset_")+name+"/band0", ui->band0Slider->value());
172         config.setValue(QString("equalizer_preset_")+name+"/band1", ui->band1Slider->value());
173         config.setValue(QString("equalizer_preset_")+name+"/band2", ui->band2Slider->value());
174         config.setValue(QString("equalizer_preset_")+name+"/band3", ui->band3Slider->value());
175         config.setValue(QString("equalizer_preset_")+name+"/band4", ui->band4Slider->value());
176         config.setValue(QString("equalizer_preset_")+name+"/band5", ui->band5Slider->value());
177         config.setValue(QString("equalizer_preset_")+name+"/band6", ui->band6Slider->value());
178         config.setValue(QString("equalizer_preset_")+name+"/band7", ui->band7Slider->value());
179         config.setValue(QString("equalizer_preset_")+name+"/band8", ui->band8Slider->value());
180         config.setValue(QString("equalizer_preset_")+name+"/band9", ui->band9Slider->value());
181         reloadPresets();
182 }
183
184 void EqualizerDialog::_load_preset(QString name) {
185         Config config;
186         ui->band0Slider->setValue(config.getValue("equalizer_preset_"+name+"/band0").toInt());
187         _value0_changed(ui->band0Slider->value());
188         ui->band1Slider->setValue(config.getValue("equalizer_preset_"+name+"/band1").toInt());
189         _value1_changed(ui->band1Slider->value());
190         ui->band2Slider->setValue(config.getValue("equalizer_preset_"+name+"/band2").toInt());
191         _value2_changed(ui->band2Slider->value());
192         ui->band3Slider->setValue(config.getValue("equalizer_preset_"+name+"/band3").toInt());
193         _value3_changed(ui->band3Slider->value());
194         ui->band4Slider->setValue(config.getValue("equalizer_preset_"+name+"/band4").toInt());
195         _value4_changed(ui->band4Slider->value());
196         ui->band5Slider->setValue(config.getValue("equalizer_preset_"+name+"/band5").toInt());
197         _value5_changed(ui->band5Slider->value());
198         ui->band6Slider->setValue(config.getValue("equalizer_preset_"+name+"/band6").toInt());
199         _value6_changed(ui->band6Slider->value());
200         ui->band7Slider->setValue(config.getValue("equalizer_preset_"+name+"/band7").toInt());
201         _value7_changed(ui->band7Slider->value());
202         ui->band8Slider->setValue(config.getValue("equalizer_preset_"+name+"/band8").toInt());
203         _value8_changed(ui->band8Slider->value());
204         ui->band9Slider->setValue(config.getValue("equalizer_preset_"+name+"/band9").toInt());
205         _value9_changed(ui->band9Slider->value());
206 }