#include "equalizerdialog.h"
#include "ui_equalizerdialog.h"
+#include "config.h"
+
+using namespace SomePlayer::Storage;
EqualizerDialog::EqualizerDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::EqualizerDialog)
{
ui->setupUi(this);
- ui->band0Slider->setMinimum(-240);
+ ui->band0Slider->setMinimum(-120);
ui->band0Slider->setValue(0);
- ui->band1Slider->setMinimum(-240);
+ ui->band1Slider->setMinimum(-120);
ui->band1Slider->setValue(0);
- ui->band2Slider->setMinimum(-240);
+ ui->band2Slider->setMinimum(-120);
ui->band2Slider->setValue(0);
- ui->band3Slider->setMinimum(-240);
+ ui->band3Slider->setMinimum(-120);
ui->band3Slider->setValue(0);
- ui->band4Slider->setMinimum(-240);
+ ui->band4Slider->setMinimum(-120);
ui->band4Slider->setValue(0);
- ui->band5Slider->setMinimum(-240);
+ ui->band5Slider->setMinimum(-120);
ui->band5Slider->setValue(0);
- ui->band6Slider->setMinimum(-240);
+ ui->band6Slider->setMinimum(-120);
ui->band6Slider->setValue(0);
- ui->band7Slider->setMinimum(-240);
+ ui->band7Slider->setMinimum(-120);
ui->band7Slider->setValue(0);
- ui->band8Slider->setMinimum(-240);
+ ui->band8Slider->setMinimum(-120);
ui->band8Slider->setValue(0);
- ui->band9Slider->setMinimum(-240);
+ ui->band9Slider->setMinimum(-120);
ui->band9Slider->setValue(0);
ui->band0Slider->setMaximum(120);
ui->band8Slider->setMaximum(120);
ui->band9Slider->setMaximum(120);
+ ui->masterSlider->setMinimum(-120);
+ ui->masterSlider->setMaximum(120);
+ ui->masterSlider->setValue(0);
+
connect(ui->band0Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value0_changed(int)));
connect(ui->band1Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value1_changed(int)));
connect(ui->band2Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value2_changed(int)));
connect(ui->band7Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value7_changed(int)));
connect(ui->band8Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value8_changed(int)));
connect(ui->band9Slider, SIGNAL(sliderMoved(int)), this, SLOT(_value9_changed(int)));
-
+ connect(ui->masterSlider, SIGNAL(valueChanged(int)), this, SLOT(_value_master_changed(int)));
connect(ui->enableToggleButton, SIGNAL(clicked()), this, SLOT(_state_changed()));
-
+ connect(ui->saveButton, SIGNAL(clicked()), this, SLOT(_save_preset()));
+ connect(ui->presetComboBox, SIGNAL(activated(QString)), this, SLOT(_load_preset(QString)));
}
EqualizerDialog::~EqualizerDialog()
ui->band7Slider->setEnabled(enabled);
ui->band8Slider->setEnabled(enabled);
ui->band9Slider->setEnabled(enabled);
+ ui->masterSlider->setEnabled(enabled);
+ ui->saveButton->setEnabled(enabled);
+ ui->presetComboBox->setEnabled(enabled);
ui->enableToggleButton->setChecked(enabled);
}
+
+void EqualizerDialog::_value_master_changed(int v) {
+ ui->band0Slider->setValue(v);
+ ui->band1Slider->setValue(v);
+ ui->band2Slider->setValue(v);
+ ui->band3Slider->setValue(v);
+ ui->band4Slider->setValue(v);
+ ui->band5Slider->setValue(v);
+ ui->band6Slider->setValue(v);
+ ui->band7Slider->setValue(v);
+ ui->band8Slider->setValue(v);
+ ui->band9Slider->setValue(v);
+ for (int i = 0; i < 10; i++) {
+ emit valueChanged(i, v);
+ }
+}
+
+void EqualizerDialog::reloadPresets() {
+ Config config;
+ QStringList presets = config.getValue("equalizer/presets").toStringList();
+ ui->presetComboBox->clear();
+ ui->presetComboBox->addItems(presets);
+}
+
+void EqualizerDialog::_save_preset() {
+ Config config;
+ QString name = ui->presetComboBox->currentText();
+ QStringList presets = config.getValue("equalizer/presets").toStringList();
+ 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());
+ reloadPresets();
+}
+
+void EqualizerDialog::_load_preset(QString name) {
+ Config config;
+ ui->band0Slider->setValue(config.getValue("equalizer_preset_"+name+"/band0").toInt());
+ _value0_changed(ui->band0Slider->value());
+ ui->band1Slider->setValue(config.getValue("equalizer_preset_"+name+"/band1").toInt());
+ _value1_changed(ui->band1Slider->value());
+ ui->band2Slider->setValue(config.getValue("equalizer_preset_"+name+"/band2").toInt());
+ _value2_changed(ui->band2Slider->value());
+ ui->band3Slider->setValue(config.getValue("equalizer_preset_"+name+"/band3").toInt());
+ _value3_changed(ui->band3Slider->value());
+ ui->band4Slider->setValue(config.getValue("equalizer_preset_"+name+"/band4").toInt());
+ _value4_changed(ui->band4Slider->value());
+ ui->band5Slider->setValue(config.getValue("equalizer_preset_"+name+"/band5").toInt());
+ _value5_changed(ui->band5Slider->value());
+ ui->band6Slider->setValue(config.getValue("equalizer_preset_"+name+"/band6").toInt());
+ _value6_changed(ui->band6Slider->value());
+ ui->band7Slider->setValue(config.getValue("equalizer_preset_"+name+"/band7").toInt());
+ _value7_changed(ui->band7Slider->value());
+ ui->band8Slider->setValue(config.getValue("equalizer_preset_"+name+"/band8").toInt());
+ _value8_changed(ui->band8Slider->value());
+ ui->band9Slider->setValue(config.getValue("equalizer_preset_"+name+"/band9").toInt());
+ _value9_changed(ui->band9Slider->value());
+}
_player = new Phonon::MediaObject(this);
_output = new Phonon::AudioOutput(Phonon::MusicCategory, this);
_player->setTickInterval(1000);
- _equalizer == NULL;
- _equalizer_enabled == false;
+ _equalizer = NULL;
+ _equalizer_enabled = false;
+ connect(_player, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(_stateChanged(Phonon::State,Phonon::State)));
+ connect(_player, SIGNAL(tick(qint64)), this, SLOT(_tick(qint64)));
+ _path = Phonon::createPath(_player, _output);
QList<Phonon::EffectDescription> effects = Phonon::BackendCapabilities::availableAudioEffects();
foreach (Phonon::EffectDescription desc, effects) {
if (desc.name() == "equalizer-10bands") {
QVariant var = config.getValue(QString("equalizer/band%1").arg(i));
setEqualizerValue(i, var.toDouble());
}
- _equalizer_enabled = true;
+ enableEqualizer();
} else if (config.getValue("equalizer/equalizer") == "") {
for (int i = 0; i < 10; i++) {
config.setValue(QString("equalizer/band%1").arg(i), 0);
}
}
}
- connect(_player, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(_stateChanged(Phonon::State,Phonon::State)));
- connect(_player, SIGNAL(tick(qint64)), this, SLOT(_tick(qint64)));
- _path = Phonon::createPath(_player, _output);
int seed = QTime::currentTime().msec();
qsrand(seed);
_random = _config.getValue("playback/random").toBool();
case Phonon::BufferingState:
break;
case Phonon::ErrorState:
- _state = PLAYER_ERROR;
+ play(); // force
+// _state = PLAYER_ERROR;
break;
}
}
}
void Player::equalizerValue(int band, double *val) {
+ if (_equalizer == NULL) {
+ *val = 0;
+ return;
+ }
if (band < 0 || band > 9) {
*val = -24;
return;
}
void Player::enableEqualizer() {
+ if (_equalizer == NULL)
+ return;
_equalizer_enabled = true;
_path.insertEffect(_equalizer);
Config config;
}
void Player::disableEqualizer() {
+ if (_equalizer == NULL)
+ return;
_equalizer_enabled = false;
_path.removeEffect(_equalizer);
Config config;
}
void Player::setEqualizerValue(int band, double value) {
+ if (_equalizer == NULL)
+ return;
if (band < 0 || band > 9 || value < -24 || value > 12) {
return;
}
<number>0</number>
</property>
<item>
+ <widget class="QSlider" name="masterSlider">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>+12dB</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>-12dB</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
<widget class="QSlider" name="band0Slider">
<property name="orientation">
<enum>Qt::Vertical</enum>
<property name="minimumSize">
<size>
<width>150</width>
- <height>0</height>
+ <height>70</height>
</size>
</property>
<property name="text">
</spacer>
</item>
<item>
- <widget class="QDialogButtonBox" name="buttonBox">
+ <widget class="QComboBox" name="presetComboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>70</height>
+ </size>
+ </property>
+ <property name="editable">
+ <bool>true</bool>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="saveButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>70</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Save</string>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>EqualizerDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel">
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>EqualizerDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel">
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
+ <connections/>
</ui>