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(); + }