diff --git a/src/settings/appearancesettingspage.cpp b/src/settings/appearancesettingspage.cpp
index 739cf2e0..9b9cb0f8 100644
--- a/src/settings/appearancesettingspage.cpp
+++ b/src/settings/appearancesettingspage.cpp
@@ -188,6 +188,8 @@ void AppearanceSettingsPage::Load() {
s.endGroup();
+ Init(ui_->layout_appearancesettingspage->parentWidget());
+
}
void AppearanceSettingsPage::Save() {
@@ -269,6 +271,8 @@ void AppearanceSettingsPage::SelectForegroundColor() {
UpdateColorSelectorColor(ui_->select_foreground_color, color_selected);
+ set_changed();
+
}
void AppearanceSettingsPage::SelectBackgroundColor() {
@@ -281,6 +285,8 @@ void AppearanceSettingsPage::SelectBackgroundColor() {
UpdateColorSelectorColor(ui_->select_background_color, color_selected);
+ set_changed();
+
}
void AppearanceSettingsPage::UseCustomColorSetOptionChanged(bool checked) {
diff --git a/src/settings/backendsettingspage.cpp b/src/settings/backendsettingspage.cpp
index 0295c8fc..c5e21afb 100644
--- a/src/settings/backendsettingspage.cpp
+++ b/src/settings/backendsettingspage.cpp
@@ -182,6 +182,8 @@ void BackendSettingsPage::Load() {
FadingOptionsChanged();
RgPreampChanged(ui_->stickslider_replaygainpreamp->value());
+ Init(ui_->layout_backendsettings->parentWidget());
+
}
bool BackendSettingsPage::EngineInitialised() {
diff --git a/src/settings/backendsettingspage.ui b/src/settings/backendsettingspage.ui
index 112de782..003d28a1 100644
--- a/src/settings/backendsettingspage.ui
+++ b/src/settings/backendsettingspage.ui
@@ -13,7 +13,7 @@
Backend
-
+
-
diff --git a/src/settings/behavioursettingspage.cpp b/src/settings/behavioursettingspage.cpp
index f77d6a18..4631c5af 100644
--- a/src/settings/behavioursettingspage.cpp
+++ b/src/settings/behavioursettingspage.cpp
@@ -196,6 +196,8 @@ void BehaviourSettingsPage::Load() {
s.endGroup();
+ Init(ui_->layout_behavioursettingspage->parentWidget());
+
}
void BehaviourSettingsPage::Save() {
diff --git a/src/settings/collectionsettingspage.cpp b/src/settings/collectionsettingspage.cpp
index 50c396aa..725b3d55 100644
--- a/src/settings/collectionsettingspage.cpp
+++ b/src/settings/collectionsettingspage.cpp
@@ -105,10 +105,16 @@ void CollectionSettingsPage::Add() {
}
settings.setValue("last_path", path);
+
+ set_changed();
+
}
void CollectionSettingsPage::Remove() {
+
dialog()->collection_directory_model()->RemoveDirectory(ui_->list->currentIndex());
+ set_changed();
+
}
void CollectionSettingsPage::CurrentRowChanged(const QModelIndex& index) {
@@ -178,6 +184,8 @@ void CollectionSettingsPage::Load() {
ui_->disk_cache_in_use->setText((dialog()->app()->collection_model()->icon_cache_disk_size() == 0 ? "empty" : Utilities::PrettySize(dialog()->app()->collection_model()->icon_cache_disk_size())));
+ Init(ui_->layout_collectionsettingspage->parentWidget());
+
}
void CollectionSettingsPage::Save() {
diff --git a/src/settings/collectionsettingspage.ui b/src/settings/collectionsettingspage.ui
index 4772d684..ed6760b2 100644
--- a/src/settings/collectionsettingspage.ui
+++ b/src/settings/collectionsettingspage.ui
@@ -310,6 +310,12 @@ If there are no matches then it will use the largest image in the directory.
Qt::Horizontal
+
+
+ 0
+ 0
+
+
@@ -328,6 +334,12 @@ If there are no matches then it will use the largest image in the directory.
Qt::Horizontal
+
+
+ 0
+ 0
+
+
@@ -381,6 +393,12 @@ If there are no matches then it will use the largest image in the directory.
Qt::Horizontal
+
+
+ 0
+ 0
+
+
@@ -419,6 +437,12 @@ If there are no matches then it will use the largest image in the directory.
Qt::Horizontal
+
+
+ 0
+ 0
+
+
diff --git a/src/settings/contextsettingspage.cpp b/src/settings/contextsettingspage.cpp
index 26f4f41f..9479500c 100644
--- a/src/settings/contextsettingspage.cpp
+++ b/src/settings/contextsettingspage.cpp
@@ -154,6 +154,8 @@ void ContextSettingsPage::Load() {
ui_->checkbox_search_cover->setChecked(s.value("search_for_cover_auto", true).toBool());
s.endGroup();
+ Init(ui_->layout_contextsettingspage->parentWidget());
+
}
void ContextSettingsPage::Save() {
diff --git a/src/settings/contextsettingspage.ui b/src/settings/contextsettingspage.ui
index bbe5122b..9416b42f 100644
--- a/src/settings/contextsettingspage.ui
+++ b/src/settings/contextsettingspage.ui
@@ -7,7 +7,7 @@
0
0
500
- 780
+ 809
diff --git a/src/settings/coverssettingspage.cpp b/src/settings/coverssettingspage.cpp
index 4f645ebe..0cb5f08f 100644
--- a/src/settings/coverssettingspage.cpp
+++ b/src/settings/coverssettingspage.cpp
@@ -85,6 +85,8 @@ void CoversSettingsPage::Load() {
item->setForeground(provider->is_enabled() ? palette().color(QPalette::Active, QPalette::Text) : palette().color(QPalette::Disabled, QPalette::Text));
}
+ Init(ui_->layout_coverssettingspage->parentWidget());
+
}
void CoversSettingsPage::Save() {
@@ -171,12 +173,16 @@ void CoversSettingsPage::ProvidersMove(const int d) {
ui_->providers->insertItem(row + d, item);
ui_->providers->setCurrentRow(row + d);
+ set_changed();
+
}
void CoversSettingsPage::ItemChanged(QListWidgetItem *item) {
item->setForeground((item->checkState() == Qt::Checked) ? palette().color(QPalette::Active, QPalette::Text) : palette().color(QPalette::Disabled, QPalette::Text));
+ set_changed();
+
}
void CoversSettingsPage::NoProviderSelected() {
diff --git a/src/settings/coverssettingspage.ui b/src/settings/coverssettingspage.ui
index 085711fc..1b156854 100644
--- a/src/settings/coverssettingspage.ui
+++ b/src/settings/coverssettingspage.ui
@@ -13,7 +13,7 @@
Covers
-
+
-
diff --git a/src/settings/lyricssettingspage.cpp b/src/settings/lyricssettingspage.cpp
index 2381ca14..a002c011 100644
--- a/src/settings/lyricssettingspage.cpp
+++ b/src/settings/lyricssettingspage.cpp
@@ -85,6 +85,8 @@ void LyricsSettingsPage::Load() {
item->setForeground(provider->is_enabled() ? palette().color(QPalette::Active, QPalette::Text) : palette().color(QPalette::Disabled, QPalette::Text));
}
+ Init(ui_->layout_lyricssettingspage->parentWidget());
+
}
void LyricsSettingsPage::Save() {
@@ -165,12 +167,16 @@ void LyricsSettingsPage::ProvidersMove(const int d) {
ui_->providers->insertItem(row + d, item);
ui_->providers->setCurrentRow(row + d);
+ set_changed();
+
}
void LyricsSettingsPage::ItemChanged(QListWidgetItem *item) {
item->setForeground((item->checkState() == Qt::Checked) ? palette().color(QPalette::Active, QPalette::Text) : palette().color(QPalette::Disabled, QPalette::Text));
+ set_changed();
+
}
void LyricsSettingsPage::NoProviderSelected() {
diff --git a/src/settings/lyricssettingspage.ui b/src/settings/lyricssettingspage.ui
index 45bca402..c2b5aa83 100644
--- a/src/settings/lyricssettingspage.ui
+++ b/src/settings/lyricssettingspage.ui
@@ -13,7 +13,7 @@
Lyrics
-
+
-
diff --git a/src/settings/moodbarsettingspage.cpp b/src/settings/moodbarsettingspage.cpp
index da836b2f..f861a096 100644
--- a/src/settings/moodbarsettingspage.cpp
+++ b/src/settings/moodbarsettingspage.cpp
@@ -75,6 +75,8 @@ void MoodbarSettingsPage::Load() {
InitMoodbarPreviews();
+ Init(ui_->layout_moodbarsettingspage->parentWidget());
+
}
void MoodbarSettingsPage::Save() {
diff --git a/src/settings/moodbarsettingspage.ui b/src/settings/moodbarsettingspage.ui
index 7ac4912e..1c9f77e1 100644
--- a/src/settings/moodbarsettingspage.ui
+++ b/src/settings/moodbarsettingspage.ui
@@ -51,6 +51,19 @@
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
diff --git a/src/settings/networkproxysettingspage.cpp b/src/settings/networkproxysettingspage.cpp
index 74fa9f2a..050ac1c9 100644
--- a/src/settings/networkproxysettingspage.cpp
+++ b/src/settings/networkproxysettingspage.cpp
@@ -77,6 +77,8 @@ void NetworkProxySettingsPage::Load() {
ui_->proxy_password->setText(s.value("password").toString());
s.endGroup();
+ Init(ui_->layout_networkproxysettingspage->parentWidget());
+
}
void NetworkProxySettingsPage::Save() {
diff --git a/src/settings/networkproxysettingspage.ui b/src/settings/networkproxysettingspage.ui
index d7ede462..1de9c254 100644
--- a/src/settings/networkproxysettingspage.ui
+++ b/src/settings/networkproxysettingspage.ui
@@ -13,7 +13,7 @@
Network Proxy
-
+
-
diff --git a/src/settings/notificationssettingspage.cpp b/src/settings/notificationssettingspage.cpp
index ef8b203d..d1f07b64 100644
--- a/src/settings/notificationssettingspage.cpp
+++ b/src/settings/notificationssettingspage.cpp
@@ -196,6 +196,8 @@ void NotificationsSettingsPage::Load() {
ui_->notifications_disable_duration->setChecked(pretty_popup_->disable_duration());
UpdatePopupVisible();
+ Init(ui_->layout_notificationssettingspage->parentWidget());
+
}
void NotificationsSettingsPage::Save() {
diff --git a/src/settings/playlistsettingspage.cpp b/src/settings/playlistsettingspage.cpp
index a5fd1b68..8fb64abd 100644
--- a/src/settings/playlistsettingspage.cpp
+++ b/src/settings/playlistsettingspage.cpp
@@ -85,6 +85,8 @@ void PlaylistSettingsPage::Load() {
s.endGroup();
+ Init(ui_->layout_playlistsettingspage->parentWidget());
+
}
void PlaylistSettingsPage::Save() {
diff --git a/src/settings/scrobblersettingspage.cpp b/src/settings/scrobblersettingspage.cpp
index 7c2b982f..fe9fa536 100644
--- a/src/settings/scrobblersettingspage.cpp
+++ b/src/settings/scrobblersettingspage.cpp
@@ -107,6 +107,8 @@ void ScrobblerSettingsPage::Load() {
ui_->lineedit_listenbrainz_user_token->setText(listenbrainzscrobbler_->user_token());
ListenBrainz_RefreshControls(listenbrainzscrobbler_->IsAuthenticated());
+ Init(ui_->layout_scrobblersettingspage->parentWidget());
+
}
void ScrobblerSettingsPage::Save() {
diff --git a/src/settings/scrobblersettingspage.ui b/src/settings/scrobblersettingspage.ui
index d6309dd7..36ebddfb 100644
--- a/src/settings/scrobblersettingspage.ui
+++ b/src/settings/scrobblersettingspage.ui
@@ -13,7 +13,7 @@
Scrobbler
-
+
-
diff --git a/src/settings/settingsdialog.cpp b/src/settings/settingsdialog.cpp
index 2f8e4bff..b8bf5ed5 100644
--- a/src/settings/settingsdialog.cpp
+++ b/src/settings/settingsdialog.cpp
@@ -201,7 +201,11 @@ void SettingsDialog::closeEvent(QCloseEvent*) {
void SettingsDialog::accept() {
- Save();
+ for (const PageData &page : pages_.values()) {
+ page.page_->Accept();
+ }
+ emit ReloadSettings();
+
SaveGeometry();
QDialog::accept();
@@ -212,7 +216,7 @@ void SettingsDialog::reject() {
// Notify each page that user clicks on Cancel
for (const PageData &page : pages_.values()) {
- page.page_->Cancel();
+ page.page_->Reject();
}
SaveGeometry();
@@ -309,18 +313,23 @@ void SettingsDialog::AddPage(Page id, SettingsPage *page, QTreeWidgetItem *paren
void SettingsDialog::Save() {
for (const PageData &page : pages_.values()) {
- page.page_->Save();
+ page.page_->Apply();
}
emit ReloadSettings();
}
+
void SettingsDialog::DialogButtonClicked(QAbstractButton *button) {
// While we only connect Apply at the moment, this might change in the future
if (ui_->buttonBox->button(QDialogButtonBox::Apply) == button) {
- Save();
+ for (const PageData &page : pages_.values()) {
+ page.page_->Apply();
+ }
+ emit ReloadSettings();
}
+
}
void SettingsDialog::OpenAtPage(Page page) {
diff --git a/src/settings/settingsdialog.h b/src/settings/settingsdialog.h
index f033ae49..5e398aa4 100644
--- a/src/settings/settingsdialog.h
+++ b/src/settings/settingsdialog.h
@@ -133,6 +133,7 @@ class SettingsDialog : public QDialog {
QTreeWidgetItem *AddCategory(const QString &name);
void AddPage(Page id, SettingsPage *page, QTreeWidgetItem *parent = nullptr);
+ void Apply();
void Save();
signals:
diff --git a/src/settings/settingspage.cpp b/src/settings/settingspage.cpp
index 360f402d..6416cfb6 100644
--- a/src/settings/settingspage.cpp
+++ b/src/settings/settingspage.cpp
@@ -19,8 +19,119 @@
*/
#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "core/logging.h"
#include "settingsdialog.h"
#include "settingspage.h"
-SettingsPage::SettingsPage(SettingsDialog *dialog) : QWidget(dialog), dialog_(dialog) { }
+SettingsPage::SettingsPage(SettingsDialog *dialog) : QWidget(dialog), dialog_(dialog), ui_widget_(nullptr), changed_(false) {}
+
+void SettingsPage::showEvent(QShowEvent *e) {
+
+ changed_ = false;
+
+ QWidget::showEvent(e);
+
+}
+
+void SettingsPage::Init(QWidget *ui_widget) {
+
+ if (!ui_widget) return;
+
+ ui_widget_ = ui_widget;
+ changed_ = false;
+
+ checkboxes_.clear();
+ radiobuttons_.clear();
+ comboboxes_.clear();
+ spinboxes_.clear();
+ sliders_.clear();
+ lineedits_.clear();
+
+ QList list = ui_widget_->findChildren(QString(), Qt::FindChildrenRecursively);
+ for (QWidget *w : list) {
+ if (QCheckBox *checkbox = qobject_cast(w)) {
+ checkboxes_ << qMakePair(checkbox, checkbox->checkState());
+ }
+ else if (QRadioButton *radiobutton = qobject_cast(w)) {
+ radiobuttons_ << qMakePair(radiobutton, radiobutton->isChecked());
+ }
+ else if (QComboBox *combobox = qobject_cast(w)) {
+ comboboxes_ << qMakePair(combobox, combobox->currentText());
+ }
+ else if (QSpinBox *spinbox = qobject_cast(w)) {
+ spinboxes_ << qMakePair(spinbox, spinbox->value());
+ }
+ else if (QLineEdit *lineedit = qobject_cast(w)) {
+ lineedits_ << qMakePair(lineedit, lineedit->text());
+ }
+ else if (QSlider *slider = qobject_cast(w)) {
+ sliders_ << qMakePair(slider, slider->value());
+ }
+ }
+
+}
+
+void SettingsPage::Accept() {
+ Apply();
+}
+
+void SettingsPage::Reject() {
+ Cancel();
+ changed_ = false;
+}
+
+void SettingsPage::Apply() {
+
+ if (!ui_widget_) {
+ qLog(Error) << windowTitle() << "is not initialized!";
+ changed_ = true;
+ }
+
+ for (QPair &checkbox : checkboxes_) {
+ if (checkbox.first->checkState() == checkbox.second) continue;
+ changed_ = true;
+ qLog(Info) << checkbox.first->objectName() << "is changed for" << windowTitle() << "settings.";
+ }
+ for (QPair &radiobutton : radiobuttons_) {
+ if (radiobutton.first->isChecked() == radiobutton.second) continue;
+ changed_ = true;
+ qLog(Info) << radiobutton.first->objectName() << "is changed for" << windowTitle() << "settings.";
+ }
+ for (QPair &combobox : comboboxes_) {
+ if (combobox.first->currentText() == combobox.second) continue;
+ changed_ = true;
+ qLog(Info) << combobox.first->objectName() << "is changed for" << windowTitle() << "settings.";
+ }
+ for (QPair &spinbox : spinboxes_) {
+ if (spinbox.first->value() == spinbox.second) continue;
+ changed_ = true;
+ qLog(Info) << spinbox.first->objectName() << "is changed for" << windowTitle() << "settings.";
+ }
+ for (QPair &lineedit : lineedits_) {
+ if (lineedit.first->text() == lineedit.second) continue;
+ changed_ = true;
+ if (lineedit.first->objectName().isEmpty()) continue;
+ qLog(Info) << lineedit.first->objectName() << "is changed for" << windowTitle() << "settings.";
+ }
+ for (QPair &slider : sliders_) {
+ if (slider.first->value() == slider.second) continue;
+ changed_ = true;
+ qLog(Info) << slider.first->objectName() << "is changed for" << windowTitle() << "settings.";
+ }
+
+ if (changed_) {
+ qLog(Info) << "Saving settings for" << windowTitle();
+ Save();
+ Init(ui_widget_);
+ }
+
+}
diff --git a/src/settings/settingspage.h b/src/settings/settingspage.h
index 56904273..1db3557d 100644
--- a/src/settings/settingspage.h
+++ b/src/settings/settingspage.h
@@ -25,10 +25,21 @@
#include
#include
+#include
+#include
+#include
#include
#include "widgets/osd.h"
+class QCheckBox;
+class QComboBox;
+class QRadioButton;
+class QSpinBox;
+class QSlider;
+class QLineEdit;
+class QShowEvent;
+
class SettingsDialog;
class SettingsPage : public QWidget {
@@ -37,23 +48,42 @@ class SettingsPage : public QWidget {
public:
explicit SettingsPage(SettingsDialog *dialog);
+ void Init(QWidget *ui_widget);
+
// Return false to grey out the page's item in the list.
virtual bool IsEnabled() const { return true; }
- // Load is called when the dialog is shown, Save when the user clicks OK, and
- // Cancel when the user clicks on Cancel
virtual void Load() = 0;
- virtual void Save() = 0;
- virtual void Cancel() {}
+
+ void Accept();
+ void Reject();
+ void Apply();
// The dialog that this page belongs to.
SettingsDialog *dialog() const { return dialog_; }
+ void set_changed() { changed_ = true; }
+
+ protected:
+ virtual void showEvent(QShowEvent *e);
+
+ private:
+ virtual void Save() = 0;
+ virtual void Cancel() {}
+
signals:
void NotificationPreview(OSD::Behaviour, QString, QString);
private:
SettingsDialog *dialog_;
+ QWidget *ui_widget_;
+ bool changed_;
+ QList> checkboxes_;
+ QList> radiobuttons_;
+ QList> comboboxes_;
+ QList> spinboxes_;
+ QList> sliders_;
+ QList> lineedits_;
};
#endif // SETTINGSPAGE_H
diff --git a/src/settings/shortcutssettingspage.cpp b/src/settings/shortcutssettingspage.cpp
index 260ce200..70d42d0b 100644
--- a/src/settings/shortcutssettingspage.cpp
+++ b/src/settings/shortcutssettingspage.cpp
@@ -174,6 +174,8 @@ void GlobalShortcutsSettingsPage::Load() {
ui_->label_macos_mavericks->setVisible(macos_version >= 9);
#endif // Q_OS_MACOS
+ Init(ui_->layout_globalshortcutssettingspage->parentWidget());
+
}
void GlobalShortcutsSettingsPage::Save() {
@@ -279,11 +281,17 @@ void GlobalShortcutsSettingsPage::ItemClicked(QTreeWidgetItem *item) {
}
void GlobalShortcutsSettingsPage::NoneClicked() {
+
SetShortcut(current_id_, QKeySequence());
+ set_changed();
+
}
void GlobalShortcutsSettingsPage::DefaultClicked() {
+
SetShortcut(current_id_, shortcuts_[current_id_].s.default_key);
+ set_changed();
+
}
void GlobalShortcutsSettingsPage::ChangeClicked() {
@@ -303,6 +311,8 @@ void GlobalShortcutsSettingsPage::ChangeClicked() {
ui_->radio_custom->setChecked(true);
SetShortcut(current_id_, key);
+ set_changed();
+
}
void GlobalShortcutsSettingsPage::X11Warning() {
diff --git a/src/settings/subsonicsettingspage.cpp b/src/settings/subsonicsettingspage.cpp
index 4481e49f..e273b443 100644
--- a/src/settings/subsonicsettingspage.cpp
+++ b/src/settings/subsonicsettingspage.cpp
@@ -77,6 +77,8 @@ void SubsonicSettingsPage::Load() {
ui_->checkbox_download_album_covers->setChecked(s.value("downloadalbumcovers", true).toBool());
s.endGroup();
+ Init(ui_->layout_subsonicsettingspage->parentWidget());
+
}
void SubsonicSettingsPage::Save() {
diff --git a/src/settings/subsonicsettingspage.ui b/src/settings/subsonicsettingspage.ui
index cb2e1e15..e917ff97 100644
--- a/src/settings/subsonicsettingspage.ui
+++ b/src/settings/subsonicsettingspage.ui
@@ -105,15 +105,15 @@
Preferences
-
-
-
+
+
-
Verify server certificate
- -
+
-
Download album covers
diff --git a/src/settings/tidalsettingspage.cpp b/src/settings/tidalsettingspage.cpp
index 7775af81..56962696 100644
--- a/src/settings/tidalsettingspage.cpp
+++ b/src/settings/tidalsettingspage.cpp
@@ -117,6 +117,8 @@ void TidalSettingsPage::Load() {
OAuthClicked(ui_->oauth->isChecked());
if (service_->authenticated()) ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn);
+ Init(ui_->layout_tidalsettingspage->parentWidget());
+
}
void TidalSettingsPage::Save() {
diff --git a/src/settings/transcodersettingspage.cpp b/src/settings/transcodersettingspage.cpp
index b32801a4..19530c5e 100644
--- a/src/settings/transcodersettingspage.cpp
+++ b/src/settings/transcodersettingspage.cpp
@@ -35,17 +35,28 @@
class SettingsDialog;
-TranscoderSettingsPage::TranscoderSettingsPage(SettingsDialog* dialog)
+TranscoderSettingsPage::TranscoderSettingsPage(SettingsDialog *dialog)
: SettingsPage(dialog), ui_(new Ui_TranscoderSettingsPage) {
+
ui_->setupUi(this);
setWindowIcon(IconLoader::Load("tools-wizard"));
+
}
TranscoderSettingsPage::~TranscoderSettingsPage() {
delete ui_;
}
+void TranscoderSettingsPage::showEvent(QShowEvent *e) {
+
+ set_changed();
+
+ QWidget::showEvent(e);
+
+}
+
void TranscoderSettingsPage::Load() {
+
ui_->transcoding_flac->Load();
ui_->transcoding_wavpack->Load();
ui_->transcoding_vorbis->Load();
@@ -54,9 +65,14 @@ void TranscoderSettingsPage::Load() {
ui_->transcoding_aac->Load();
ui_->transcoding_asf->Load();
ui_->transcoding_mp3->Load();
+
+ Init(ui_->layout_transcodersettingspage->parentWidget());
+ if (isVisible()) set_changed();
+
}
void TranscoderSettingsPage::Save() {
+
ui_->transcoding_flac->Save();
ui_->transcoding_wavpack->Save();
ui_->transcoding_vorbis->Save();
@@ -65,4 +81,5 @@ void TranscoderSettingsPage::Save() {
ui_->transcoding_aac->Save();
ui_->transcoding_asf->Save();
ui_->transcoding_mp3->Save();
+
}
diff --git a/src/settings/transcodersettingspage.h b/src/settings/transcodersettingspage.h
index e90eb9b8..a389f1fd 100644
--- a/src/settings/transcodersettingspage.h
+++ b/src/settings/transcodersettingspage.h
@@ -43,6 +43,9 @@ class TranscoderSettingsPage : public SettingsPage {
void Load();
void Save();
+ protected:
+ void showEvent(QShowEvent *e);
+
private:
Ui_TranscoderSettingsPage* ui_;
};
diff --git a/src/transcoder/transcoderoptionsaac.cpp b/src/transcoder/transcoderoptionsaac.cpp
index ab085cdc..2ff46fc6 100644
--- a/src/transcoder/transcoderoptionsaac.cpp
+++ b/src/transcoder/transcoderoptionsaac.cpp
@@ -43,23 +43,27 @@ TranscoderOptionsAAC::~TranscoderOptionsAAC() {
}
void TranscoderOptionsAAC::Load() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
ui_->bitrate_slider->setValue(s.value("bitrate", 320000).toInt() / 1000);
ui_->profile->setCurrentIndex(s.value("profile", 2).toInt() - 1);
ui_->tns->setChecked(s.value("tns", false).toBool());
ui_->midside->setChecked(s.value("midside", true).toBool());
ui_->shortctl->setCurrentIndex(s.value("shortctl", 0).toInt());
+ s.endGroup();
+
}
void TranscoderOptionsAAC::Save() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
s.setValue("bitrate", ui_->bitrate_slider->value() * 1000);
s.setValue("profile", ui_->profile->currentIndex() + 1);
s.setValue("tns", ui_->tns->isChecked());
s.setValue("midside", ui_->midside->isChecked());
s.setValue("shortctl", ui_->shortctl->currentIndex());
+ s.endGroup();
+
}
diff --git a/src/transcoder/transcoderoptionsasf.cpp b/src/transcoder/transcoderoptionsasf.cpp
index f6698a17..d9b175cf 100644
--- a/src/transcoder/transcoderoptionsasf.cpp
+++ b/src/transcoder/transcoderoptionsasf.cpp
@@ -46,8 +46,8 @@ void TranscoderOptionsASF::Load() {
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
ui_->bitrate_slider->setValue(s.value("bitrate", 320000).toInt() / 1000);
+ s.endGroup();
}
@@ -55,7 +55,7 @@ void TranscoderOptionsASF::Save() {
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
s.setValue("bitrate", ui_->bitrate_slider->value() * 1000);
+ s.endGroup();
}
diff --git a/src/transcoder/transcoderoptionsdialog.cpp b/src/transcoder/transcoderoptionsdialog.cpp
index 9ece593b..dc15f809 100644
--- a/src/transcoder/transcoderoptionsdialog.cpp
+++ b/src/transcoder/transcoderoptionsdialog.cpp
@@ -75,21 +75,27 @@ TranscoderOptionsDialog::~TranscoderOptionsDialog() {
}
void TranscoderOptionsDialog::showEvent(QShowEvent *e) {
+
Q_UNUSED(e);
if (options_) {
options_->Load();
}
+
}
void TranscoderOptionsDialog::accept() {
+
if (options_) {
options_->Save();
}
QDialog::accept();
+
}
void TranscoderOptionsDialog::set_settings_postfix(const QString &settings_postfix) {
+
if (options_) {
options_->settings_postfix_ = settings_postfix;
}
+
}
diff --git a/src/transcoder/transcoderoptionsflac.cpp b/src/transcoder/transcoderoptionsflac.cpp
index c6c574d8..2902ac0d 100644
--- a/src/transcoder/transcoderoptionsflac.cpp
+++ b/src/transcoder/transcoderoptionsflac.cpp
@@ -43,15 +43,19 @@ TranscoderOptionsFLAC::~TranscoderOptionsFLAC() {
}
void TranscoderOptionsFLAC::Load() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
ui_->quality->setValue(s.value("quality", 5).toInt());
+ s.endGroup();
+
}
void TranscoderOptionsFLAC::Save() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
s.setValue("quality", ui_->quality->value());
+ s.endGroup();
+
}
diff --git a/src/transcoder/transcoderoptionsmp3.cpp b/src/transcoder/transcoderoptionsmp3.cpp
index c90b7553..163a6333 100644
--- a/src/transcoder/transcoderoptionsmp3.cpp
+++ b/src/transcoder/transcoderoptionsmp3.cpp
@@ -56,7 +56,8 @@ void TranscoderOptionsMP3::Load() {
if (s.value("target", 1).toInt() == 0) {
ui_->target_quality->setChecked(true);
- } else {
+ }
+ else {
ui_->target_bitrate->setChecked(true);
}
@@ -66,6 +67,8 @@ void TranscoderOptionsMP3::Load() {
ui_->encoding_engine_quality->setCurrentIndex(s.value("encoding-engine-quality", 1).toInt());
ui_->mono->setChecked(s.value("mono", false).toBool());
+ s.endGroup();
+
}
void TranscoderOptionsMP3::Save() {
@@ -80,6 +83,8 @@ void TranscoderOptionsMP3::Save() {
s.setValue("encoding-engine-quality", ui_->encoding_engine_quality->currentIndex());
s.setValue("mono", ui_->mono->isChecked());
+ s.endGroup();
+
}
void TranscoderOptionsMP3::QualitySliderChanged(int value) {
diff --git a/src/transcoder/transcoderoptionsopus.cpp b/src/transcoder/transcoderoptionsopus.cpp
index c3a03c08..04be4bb7 100644
--- a/src/transcoder/transcoderoptionsopus.cpp
+++ b/src/transcoder/transcoderoptionsopus.cpp
@@ -44,15 +44,19 @@ TranscoderOptionsOpus::~TranscoderOptionsOpus() {
}
void TranscoderOptionsOpus::Load() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
ui_->bitrate_slider->setValue(s.value("bitrate", 320000).toInt() / 1000);
+ s.endGroup();
+
}
void TranscoderOptionsOpus::Save() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
-
s.setValue("bitrate", ui_->bitrate_slider->value() * 1000);
+ s.endGroup();
+
}
diff --git a/src/transcoder/transcoderoptionsspeex.cpp b/src/transcoder/transcoderoptionsspeex.cpp
index 1eb2aee2..353224c7 100644
--- a/src/transcoder/transcoderoptionsspeex.cpp
+++ b/src/transcoder/transcoderoptionsspeex.cpp
@@ -60,6 +60,8 @@ void TranscoderOptionsSpeex::Load() {
ui_->complexity->setValue(s.value("complexity", 3).toInt());
ui_->nframes->setValue(s.value("nframes", 1).toInt());
+ s.endGroup();
+
}
void TranscoderOptionsSpeex::Save() {
@@ -77,4 +79,6 @@ void TranscoderOptionsSpeex::Save() {
s.setValue("complexity", ui_->complexity->value());
s.setValue("nframes", ui_->nframes->value());
+ s.endGroup();
+
}
diff --git a/src/transcoder/transcoderoptionsvorbis.cpp b/src/transcoder/transcoderoptionsvorbis.cpp
index 61c7aff0..aa97fc72 100644
--- a/src/transcoder/transcoderoptionsvorbis.cpp
+++ b/src/transcoder/transcoderoptionsvorbis.cpp
@@ -63,6 +63,8 @@ void TranscoderOptionsVorbis::Load() {
ui_->min_bitrate_slider->setValue(min_bitrate);
ui_->bitrate_slider->setValue(bitrate);
+ s.endGroup();
+
}
void TranscoderOptionsVorbis::Save() {
@@ -85,4 +87,6 @@ void TranscoderOptionsVorbis::Save() {
s.setValue("min-bitrate", min_bitrate);
s.setValue("max-bitrate", max_bitrate);
+ s.endGroup();
+
}
diff --git a/src/transcoder/transcoderoptionswavpack.cpp b/src/transcoder/transcoderoptionswavpack.cpp
index 15547d11..de6f0583 100644
--- a/src/transcoder/transcoderoptionswavpack.cpp
+++ b/src/transcoder/transcoderoptionswavpack.cpp
@@ -39,13 +39,17 @@ TranscoderOptionsWavPack::~TranscoderOptionsWavPack() {
}
void TranscoderOptionsWavPack::Load() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
s.endGroup();
+
}
void TranscoderOptionsWavPack::Save() {
+
QSettings s;
s.beginGroup(kSettingsGroup + settings_postfix_);
s.endGroup();
+
}