From 1ba18b7f78c99bf2840b492bef7189ed65a9e739 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 6 Apr 2021 12:10:29 +0200 Subject: [PATCH] Mercurial: Use the new AspectContainer::applied signal Change-Id: I5c3a60b316f74b4c1fd96d5ddd955f31f18d3010 Reviewed-by: Orgad Shaneh --- src/plugins/mercurial/mercurialplugin.cpp | 5 +- src/plugins/mercurial/mercurialsettings.cpp | 93 ++++++++------------- src/plugins/mercurial/mercurialsettings.h | 4 +- 3 files changed, 40 insertions(+), 62 deletions(-) diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index 9b208283add..c3494fbcfb9 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -196,8 +196,7 @@ private: // Variables MercurialSettings m_settings; MercurialClient m_client{&m_settings}; - - OptionsPage m_optionsPage{[this] { configurationChanged(); }, &m_settings}; + MercurialSettingsPage m_settingsPage{&m_settings}; Core::CommandLocator *m_commandLocator = nullptr; Core::ActionContainer *m_mercurialContainer = nullptr; @@ -282,6 +281,8 @@ MercurialPluginPrivate::MercurialPluginPrivate() m_commandLocator->setDescription(tr("Triggers a Mercurial version control operation.")); createMenu(context); + + connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged); } void MercurialPluginPrivate::createMenu(const Core::Context &context) diff --git a/src/plugins/mercurial/mercurialsettings.cpp b/src/plugins/mercurial/mercurialsettings.cpp index 949b6854a94..94734464828 100644 --- a/src/plugins/mercurial/mercurialsettings.cpp +++ b/src/plugins/mercurial/mercurialsettings.cpp @@ -66,68 +66,45 @@ MercurialSettings::MercurialSettings() diffIgnoreBlankLines.setSettingsKey("diffIgnoreBlankLines"); } -// Optionpage +// MercurialSettingsPage -class OptionsPageWidget final : public Core::IOptionsPageWidget -{ - Q_DECLARE_TR_FUNCTIONS(Mercurial::Internal::OptionsPageWidget) - -public: - OptionsPageWidget(const std::function &onApply, MercurialSettings *settings); - void apply() final; - -private: - std::function m_onApply; - MercurialSettings *m_settings; -}; - -OptionsPageWidget::OptionsPageWidget(const std::function &onApply, MercurialSettings *settings) - : m_onApply(onApply), m_settings(settings) -{ - MercurialSettings &s = *settings; - using namespace Layouting; - - Column { - Group { - Title(tr("Configuration")), - Row { s.binaryPath } - }, - - Group { - Title(tr("User")), - Form { - s.userName, - s.userEmail - } - }, - - Group { - Title(tr("Miscellaneous")), - Row { - s.logCount, - s.timeout, - Stretch() - } - }, - Stretch() - - }.attachTo(this); -} - -void OptionsPageWidget::apply() -{ - if (!m_settings->isDirty()) - return; - m_settings->apply(); - m_onApply(); -} - -OptionsPage::OptionsPage(const std::function &onApply, MercurialSettings *settings) +MercurialSettingsPage::MercurialSettingsPage(MercurialSettings *settings) { setId(VcsBase::Constants::VCS_ID_MERCURIAL); - setDisplayName(OptionsPageWidget::tr("Mercurial")); + setDisplayName(MercurialSettings::tr("Mercurial")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetCreator([onApply, settings] { return new OptionsPageWidget(onApply, settings); }); + setSettings(m_settings); + + setLayouter([settings](QWidget *widget) { + MercurialSettings &s = *settings; + using namespace Layouting; + + Column { + Group { + Title(MercurialSettings::tr("Configuration")), + Row { s.binaryPath } + }, + + Group { + Title(MercurialSettings::tr("User")), + Form { + s.userName, + s.userEmail + } + }, + + Group { + Title(MercurialSettings::tr("Miscellaneous")), + Row { + s.logCount, + s.timeout, + Stretch() + } + }, + Stretch() + + }.attachTo(widget); + }); } } // namespace Internal diff --git a/src/plugins/mercurial/mercurialsettings.h b/src/plugins/mercurial/mercurialsettings.h index 5dd17832952..14af6d92bdb 100644 --- a/src/plugins/mercurial/mercurialsettings.h +++ b/src/plugins/mercurial/mercurialsettings.h @@ -41,10 +41,10 @@ public: MercurialSettings(); }; -class OptionsPage final : public Core::IOptionsPage +class MercurialSettingsPage final : public Core::IOptionsPage { public: - OptionsPage(const std::function &onApply, MercurialSettings *settings); + explicit MercurialSettingsPage(MercurialSettings *settings); }; } // namespace Internal