From cc8ee46efe178ec583cee6278eaa9ff2e14c74ac Mon Sep 17 00:00:00 2001 From: Le Tan Date: Fri, 1 Apr 2022 21:28:01 +0800 Subject: [PATCH] SettingsDialog: finer grain restart prompt --- src/unitedentry/iunitedentry.cpp | 4 ++-- src/widgets/dialogs/settings/appearancepage.cpp | 4 ++-- src/widgets/dialogs/settings/generalpage.cpp | 4 ++-- src/widgets/dialogs/settings/settingspage.cpp | 10 ++++++++-- src/widgets/dialogs/settings/settingspage.h | 2 ++ src/widgets/dialogs/settings/themepage.cpp | 2 +- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/unitedentry/iunitedentry.cpp b/src/unitedentry/iunitedentry.cpp index 30fc0cc0..3aa7fdc5 100644 --- a/src/unitedentry/iunitedentry.cpp +++ b/src/unitedentry/iunitedentry.cpp @@ -13,9 +13,9 @@ IUnitedEntry::IUnitedEntry(const QString &p_name, const UnitedEntryMgr *p_mgr, QObject *p_parent) : QObject(p_parent), + m_mgr(p_mgr), m_name(p_name), - m_description(p_description), - m_mgr(p_mgr) + m_description(p_description) { } diff --git a/src/widgets/dialogs/settings/appearancepage.cpp b/src/widgets/dialogs/settings/appearancepage.cpp index 555302ce..60f82198 100644 --- a/src/widgets/dialogs/settings/appearancepage.cpp +++ b/src/widgets/dialogs/settings/appearancepage.cpp @@ -35,7 +35,7 @@ void AppearancePage::setupUI() mainLayout->addRow(m_systemTitleBarCheckBox); addSearchItem(label, m_systemTitleBarCheckBox->toolTip(), m_systemTitleBarCheckBox); connect(m_systemTitleBarCheckBox, &QCheckBox::stateChanged, - this, &AppearancePage::pageIsChanged); + this, &AppearancePage::pageIsChangedWithRestartNeeded); } { @@ -49,7 +49,7 @@ void AppearancePage::setupUI() mainLayout->addRow(label, m_toolBarIconSizeSpinBox); addSearchItem(label, m_toolBarIconSizeSpinBox->toolTip(), m_toolBarIconSizeSpinBox); connect(m_toolBarIconSizeSpinBox, QOverload::of(&QSpinBox::valueChanged), - this, &AppearancePage::pageIsChanged); + this, &AppearancePage::pageIsChangedWithRestartNeeded); } { diff --git a/src/widgets/dialogs/settings/generalpage.cpp b/src/widgets/dialogs/settings/generalpage.cpp index 35956d87..1a9f571d 100644 --- a/src/widgets/dialogs/settings/generalpage.cpp +++ b/src/widgets/dialogs/settings/generalpage.cpp @@ -37,7 +37,7 @@ void GeneralPage::setupUI() mainLayout->addRow(label, m_localeComboBox); addSearchItem(label, m_localeComboBox->toolTip(), m_localeComboBox); connect(m_localeComboBox, QOverload::of(&QComboBox::currentIndexChanged), - this, &GeneralPage::pageIsChanged); + this, &GeneralPage::pageIsChangedWithRestartNeeded); } #if defined(Q_OS_WIN) @@ -54,7 +54,7 @@ void GeneralPage::setupUI() mainLayout->addRow(label, m_openGLComboBox); addSearchItem(label, m_openGLComboBox->toolTip(), m_openGLComboBox); connect(m_openGLComboBox, QOverload::of(&QComboBox::currentIndexChanged), - this, &GeneralPage::pageIsChanged); + this, &GeneralPage::pageIsChangedWithRestartNeeded); } #endif diff --git a/src/widgets/dialogs/settings/settingspage.cpp b/src/widgets/dialogs/settings/settingspage.cpp index 34a895d9..46e3863f 100644 --- a/src/widgets/dialogs/settings/settingspage.cpp +++ b/src/widgets/dialogs/settings/settingspage.cpp @@ -64,10 +64,18 @@ void SettingsPage::pageIsChanged() emit changed(); } +void SettingsPage::pageIsChangedWithRestartNeeded() +{ + m_changed = true; + m_restartNeeded = true; + emit changed(); +} + void SettingsPage::load() { loadInternal(); m_changed = false; + m_restartNeeded = false; } bool SettingsPage::save() @@ -78,8 +86,6 @@ bool SettingsPage::save() if (saveInternal()) { m_changed = false; - // TODO: may need finer-grain check. - m_restartNeeded = true; return true; } diff --git a/src/widgets/dialogs/settings/settingspage.h b/src/widgets/dialogs/settings/settingspage.h index fe663f69..9f22553f 100644 --- a/src/widgets/dialogs/settings/settingspage.h +++ b/src/widgets/dialogs/settings/settingspage.h @@ -47,6 +47,8 @@ namespace vnotex protected slots: void pageIsChanged(); + void pageIsChangedWithRestartNeeded(); + private: struct SearchItem { diff --git a/src/widgets/dialogs/settings/themepage.cpp b/src/widgets/dialogs/settings/themepage.cpp index ca167fc5..c00867ae 100644 --- a/src/widgets/dialogs/settings/themepage.cpp +++ b/src/widgets/dialogs/settings/themepage.cpp @@ -43,7 +43,7 @@ void ThemePage::setupUI() this, [this](QListWidgetItem *p_current, QListWidgetItem *p_previous) { Q_UNUSED(p_previous); loadThemePreview(p_current ? p_current->data(Qt::UserRole).toString() : QString()); - pageIsChanged(); + pageIsChangedWithRestartNeeded(); }); auto refreshBtn = new QPushButton(tr("Refresh"), this);