From b0cad6cee9f9b561892121e49637518398861a07 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Wed, 3 Feb 2010 16:51:56 +0000 Subject: [PATCH] Make the playback settings work properly --- src/analyzers/analyzerbase.cpp | 2 +- src/engine_fwd.h | 3 ++- src/enginebase.cpp | 1 + src/enginebase.h | 2 ++ src/mainwindow.cpp | 3 +++ src/player.cpp | 4 ++++ src/player.h | 2 ++ src/settingsdialog.cpp | 30 ++++++++++++++++++++++++++++-- src/settingsdialog.h | 6 ++++++ src/settingsdialog.ui | 29 +++++++++++++++++++---------- src/xine-engine.cpp | 2 +- 11 files changed, 69 insertions(+), 15 deletions(-) diff --git a/src/analyzers/analyzerbase.cpp b/src/analyzers/analyzerbase.cpp index c2049ca00..06f8ffd00 100644 --- a/src/analyzers/analyzerbase.cpp +++ b/src/analyzers/analyzerbase.cpp @@ -150,7 +150,7 @@ int Analyzer::Base::resizeForBands( int bands ) return m_fht->size() / 2; } -void Analyzer::Base::paused(QPainter& p) //virtual +void Analyzer::Base::paused(QPainter&) //virtual {} void Analyzer::Base::demo(QPainter& p) //virtual diff --git a/src/engine_fwd.h b/src/engine_fwd.h index 30068a8ba..95f665e36 100644 --- a/src/engine_fwd.h +++ b/src/engine_fwd.h @@ -1,7 +1,8 @@ - #ifndef ENGINE_FWD_H #define ENGINE_FWD_H +#include + /// Used by eg engineobserver.h, and thus we reduce header dependencies on enginebase.h namespace Engine diff --git a/src/enginebase.cpp b/src/enginebase.cpp index 909f1cb08..ae99fcd0e 100644 --- a/src/enginebase.cpp +++ b/src/enginebase.cpp @@ -6,6 +6,7 @@ #include +const char* Engine::Base::kSettingsGroup = "Player"; Engine::Base::Base() : m_xfadeLength( 0 ) diff --git a/src/enginebase.h b/src/enginebase.h index 6ab2c6c40..5dfaa67fd 100644 --- a/src/enginebase.h +++ b/src/enginebase.h @@ -237,6 +237,8 @@ namespace Engine virtual void reloadSettings() {}; + static const char* kSettingsGroup; + protected: Base(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index eb67132d1..445c332dc 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -226,6 +226,9 @@ MainWindow::MainWindow(QWidget *parent) connect(next, SIGNAL(activated()), ui_.action_next_track, SLOT(trigger())); connect(prev, SIGNAL(activated()), ui_.action_previous_track, SLOT(trigger())); + // Settings + connect(settings_dialog_, SIGNAL(accepted()), player_, SLOT(ReloadSettings())); + // Analyzer ui_.analyzer->set_engine(player_->GetEngine()); diff --git a/src/player.cpp b/src/player.cpp index 2edeb62c3..5518f62ec 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -23,6 +23,10 @@ Player::Player(Playlist* playlist, LastFMService* lastfm, QObject* parent) connect(engine_, SIGNAL(trackEnded()), SLOT(TrackEnded())); } +void Player::ReloadSettings() { + engine_->reloadSettings(); +} + void Player::Next() { if (playlist_->current_item_options() & PlaylistItem::ContainsMultipleTracks) { playlist_->current_item()->LoadNext(); diff --git a/src/player.h b/src/player.h index fd9591ae8..ed3ac262b 100644 --- a/src/player.h +++ b/src/player.h @@ -26,6 +26,8 @@ class Player : public QObject { Song GetCurrentItem() const { return current_item_; } public slots: + void ReloadSettings(); + void PlayAt(int index); void PlayPause(); void Next(); diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 5af93706b..e1d523f92 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -1,5 +1,7 @@ #include "settingsdialog.h" -#include "ui_settingsdialog.h" +#include "enginebase.h" + +#include SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent) @@ -7,7 +9,6 @@ SettingsDialog::SettingsDialog(QWidget* parent) ui_.setupUi(this); connect(ui_.list, SIGNAL(currentTextChanged(QString)), SLOT(CurrentTextChanged(QString))); - ui_.list->setCurrentRow(0); } @@ -18,3 +19,28 @@ void SettingsDialog::CurrentTextChanged(const QString &text) { void SettingsDialog::SetLibraryDirectoryModel(LibraryDirectoryModel* model) { ui_.library_config->SetModel(model); } + +void SettingsDialog::accept() { + QSettings s; + + // Playback + s.beginGroup(Engine::Base::kSettingsGroup); + s.setValue("FadeoutEnabled", ui_.fadeout->isChecked()); + s.setValue("FadeoutDuration", ui_.fadeout_duration->value()); + s.endGroup(); + + QDialog::accept(); +} + +void SettingsDialog::showEvent(QShowEvent*) { + QSettings s; + + // Playback + s.beginGroup(Engine::Base::kSettingsGroup); + if (s.value("FadeoutEnabled", true).toBool()) + ui_.fadeout->setChecked(true); + else + ui_.no_fadeout->setChecked(true); + ui_.fadeout_duration->setValue(s.value("FadeoutDuration", 2000).toInt()); + s.endGroup(); +} diff --git a/src/settingsdialog.h b/src/settingsdialog.h index e49b9ddaf..f289b2339 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -15,6 +15,12 @@ class SettingsDialog : public QDialog { void SetLibraryDirectoryModel(LibraryDirectoryModel* model); + // QDialog + void accept(); + + // QWidget + void showEvent(QShowEvent* e); + private slots: void CurrentTextChanged(const QString& text); diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 8d9449a8e..84a547391 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -104,14 +104,14 @@ - + No fadeout - + Fadeout @@ -121,6 +121,9 @@ + + false + Fadeout duration @@ -130,13 +133,19 @@ - + + + false + - ms + ms 10000 + + 1000 + 2000 @@ -218,9 +227,9 @@ list - radioButton - radioButton_2 - spinBox + no_fadeout + fadeout + fadeout_duration buttonBox @@ -244,9 +253,9 @@ - radioButton_2 + fadeout toggled(bool) - spinBox + fadeout_duration setEnabled(bool) @@ -260,7 +269,7 @@ - radioButton_2 + fadeout toggled(bool) label setEnabled(bool) diff --git a/src/xine-engine.cpp b/src/xine-engine.cpp index d535d7569..9840df37f 100644 --- a/src/xine-engine.cpp +++ b/src/xine-engine.cpp @@ -67,7 +67,7 @@ XineEngine::XineEngine() , m_fadeOutRunning ( false ) , m_equalizerEnabled( false ) { - m_settings.beginGroup("Player"); + m_settings.beginGroup(kSettingsGroup); reloadSettings(); }