From e6d574ee775f724aac0e4ea0e1175649281d6f22 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 15 May 2023 10:24:35 +0200 Subject: [PATCH] Fossil: Consolidate optionpage/apply further Change-Id: I345c6f38421864630d99a45fd2176ba0836536e9 Reviewed-by: Orgad Shaneh --- src/plugins/fossil/fossilplugin.cpp | 5 +- src/plugins/fossil/fossilsettings.cpp | 110 +++++++++++--------------- src/plugins/fossil/fossilsettings.h | 12 ++- 3 files changed, 55 insertions(+), 72 deletions(-) diff --git a/src/plugins/fossil/fossilplugin.cpp b/src/plugins/fossil/fossilplugin.cpp index 4386c4a6a47..825a81bbcab 100644 --- a/src/plugins/fossil/fossilplugin.cpp +++ b/src/plugins/fossil/fossilplugin.cpp @@ -190,7 +190,7 @@ public: FossilSettings m_fossilSettings; FossilClient m_client{&m_fossilSettings}; - OptionsPage optionPage{[this] { configurationChanged(); }, &m_fossilSettings}; + OptionsPage optionPage{&m_fossilSettings}; VcsSubmitEditorFactory submitEditorFactory { submitEditorParameters, @@ -300,6 +300,9 @@ FossilPluginPrivate::FossilPluginPrivate() return new FossilJsExtension(&m_fossilSettings); }); + connect(&m_fossilSettings, &AspectContainer::changed, + this, &IVersionControl::configurationChanged); + createMenu(context); } diff --git a/src/plugins/fossil/fossilsettings.cpp b/src/plugins/fossil/fossilsettings.cpp index 130ff5c2c56..7fdea5f075d 100644 --- a/src/plugins/fossil/fossilsettings.cpp +++ b/src/plugins/fossil/fossilsettings.cpp @@ -15,8 +15,7 @@ using namespace Utils; -namespace Fossil { -namespace Internal { +namespace Fossil::Internal { FossilSettings::FossilSettings() { @@ -95,80 +94,63 @@ FossilSettings::FossilSettings() logCount.setLabelText(Tr::tr("Log count:")); logCount.setToolTip(Tr::tr("The number of recent commit log entries to show. " "Choose 0 to see all entries.")); -}; +} // OptionsPage class OptionsPageWidget final : public Core::IOptionsPageWidget { public: - OptionsPageWidget(const std::function &onApply, FossilSettings *settings); - void apply() final; + OptionsPageWidget(FossilSettings *settings) + { + FossilSettings &s = *settings; -private: - const std::function m_onApply; - FossilSettings *m_settings; + using namespace Layouting; + + Column { + Group { + title(Tr::tr("Configuration")), + Row { s.binaryPath } + }, + + Group { + title(Tr::tr("Local Repositories")), + Row { s.defaultRepoPath } + }, + Group { + title(Tr::tr("User")), + Form { + s.userName, br, + s.sslIdentityFile + } + }, + + Group { + title(Tr::tr("Miscellaneous")), + Column { + Row { + s.logCount, + s.timelineWidth, + s.timeout, + st + }, + s.disableAutosync + }, + }, + st + + }.attachTo(this); + + setOnApply([settings] { settings->apply(); }); + } }; -void OptionsPageWidget::apply() -{ - if (!m_settings->isDirty()) - return; - - m_settings->apply(); - m_onApply(); -} - -OptionsPageWidget::OptionsPageWidget(const std::function &onApply, FossilSettings *settings) : - m_onApply(onApply), - m_settings(settings) -{ - FossilSettings &s = *m_settings; - - using namespace Layouting; - - Column { - Group { - title(Tr::tr("Configuration")), - Row { s.binaryPath } - }, - - Group { - title(Tr::tr("Local Repositories")), - Row { s.defaultRepoPath } - }, - Group { - title(Tr::tr("User")), - Form { - s.userName, br, - s.sslIdentityFile - } - }, - - Group { - title(Tr::tr("Miscellaneous")), - Column { - Row { - s.logCount, - s.timelineWidth, - s.timeout, - st - }, - s.disableAutosync - }, - }, - st - - }.attachTo(this); -} - -OptionsPage::OptionsPage(const std::function &onApply, FossilSettings *settings) +OptionsPage::OptionsPage(FossilSettings *settings) { setId(Constants::VCS_ID_FOSSIL); setDisplayName(Tr::tr("Fossil")); - setWidgetCreator([onApply, settings]() { return new OptionsPageWidget(onApply, settings); }); + setWidgetCreator([settings] { return new OptionsPageWidget(settings); }); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); } -} // Internal -} // Fossil +} // Fossil::Internal diff --git a/src/plugins/fossil/fossilsettings.h b/src/plugins/fossil/fossilsettings.h index e4133393f66..f1a872ee0d1 100644 --- a/src/plugins/fossil/fossilsettings.h +++ b/src/plugins/fossil/fossilsettings.h @@ -6,12 +6,13 @@ #include #include -namespace Fossil { -namespace Internal { +namespace Fossil::Internal { class FossilSettings : public VcsBase::VcsBaseSettings { public: + FossilSettings(); + Utils::StringAspect defaultRepoPath; Utils::StringAspect sslIdentityFile; Utils::BoolAspect diffIgnoreAllWhiteSpace; @@ -23,8 +24,6 @@ public: Utils::BoolAspect timelineVerbose; Utils::StringAspect timelineItemType; Utils::BoolAspect disableAutosync; - - FossilSettings(); }; struct RepositorySettings @@ -46,8 +45,7 @@ inline bool operator==(const RepositorySettings &lh, const RepositorySettings &r class OptionsPage : public Core::IOptionsPage { public: - OptionsPage(const std::function &onApply, FossilSettings *settings); + explicit OptionsPage(FossilSettings *settings); }; -} // namespace Internal -} // namespace Fossil +} // Fossil::Internal