From c76b7cbf3f765e26d2578d59b1c1f819c54b1177 Mon Sep 17 00:00:00 2001 From: Socapex Date: Fri, 9 May 2014 18:04:39 -0400 Subject: [PATCH] Improved settings usability. Don't ask user to save changes every item switch. Apply button greyed out when there are no changes. --- obs/window-basic-settings.cpp | 30 ++++++++++++++++++++---------- obs/window-basic-settings.hpp | 6 ++++++ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index 09f9cec91..4877581ce 100644 --- a/obs/window-basic-settings.cpp +++ b/obs/window-basic-settings.cpp @@ -158,6 +158,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->fpsNumerator, SCROLL_CHANGED, VIDEO_CHANGED); HookWidget(ui->fpsDenominator, SCROLL_CHANGED, VIDEO_CHANGED); + //Apply button disabled until change. + EnableApplyButton(false); + LoadServiceTypes(); LoadServiceInfo(); LoadSettings(false); @@ -664,11 +667,6 @@ void OBSBasicSettings::on_listWidget_itemSelectionChanged() if (loading || row == pageIndex) return; - if (Changed() && !QueryChanges()) { - ui->listWidget->setCurrentRow(pageIndex); - return; - } - pageIndex = row; } @@ -744,20 +742,26 @@ void OBSBasicSettings::on_baseResolution_editTextChanged(const QString &text) void OBSBasicSettings::GeneralChanged() { - if (!loading) + if (!loading) { generalChanged = true; + EnableApplyButton(true); + } } void OBSBasicSettings::OutputsChanged() { - if (!loading) + if (!loading) { outputsChanged = true; + EnableApplyButton(true); + } } void OBSBasicSettings::AudioChanged() { - if (!loading) + if (!loading) { audioChanged = true; + EnableApplyButton(true); + } } void OBSBasicSettings::AudioChangedRestart() @@ -765,6 +769,7 @@ void OBSBasicSettings::AudioChangedRestart() if (!loading) { audioChanged = true; ui->audioMsg->setText(QTStr("Basic.Settings.ProgramRestart")); + EnableApplyButton(true); } } @@ -773,17 +778,22 @@ void OBSBasicSettings::VideoChangedRestart() if (!loading) { videoChanged = true; ui->videoMsg->setText(QTStr("Basic.Settings.ProgramRestart")); + EnableApplyButton(true); } } void OBSBasicSettings::VideoChangedResolution() { - if (!loading && ValidResolutions(ui.get())) + if (!loading && ValidResolutions(ui.get())) { videoChanged = true; + EnableApplyButton(true); + } } void OBSBasicSettings::VideoChanged() { - if (!loading) + if (!loading) { videoChanged = true; + EnableApplyButton(true); + } } diff --git a/obs/window-basic-settings.hpp b/obs/window-basic-settings.hpp index ef54be101..937e1dd72 100644 --- a/obs/window-basic-settings.hpp +++ b/obs/window-basic-settings.hpp @@ -53,12 +53,18 @@ private: audioChanged || videoChanged; } + inline void EnableApplyButton(bool en) + { + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(en); + } + inline void ClearChanged() { generalChanged = false; outputsChanged = false; audioChanged = false; videoChanged = false; + EnableApplyButton(false); } void HookWidget(QWidget *widget, const char *signal, const char *slot); -- GitLab