From 2004399f38eb7a76b5778032828a1235d87f5958 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 31 Mar 2021 17:01:34 +0200 Subject: [PATCH] Git: Use the new AspectContainer::applied signal Change-Id: Ib40e206e84228e91e4816c5b91800a5611f441a1 Reviewed-by: Orgad Shaneh --- src/plugins/git/gitplugin.cpp | 3 +- src/plugins/git/gitsettings.cpp | 99 +++++++++++---------------------- src/plugins/git/gitsettings.h | 2 +- 3 files changed, 37 insertions(+), 67 deletions(-) diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 254263203f1..1d5f84535ae 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -408,7 +408,7 @@ public: QString m_commitMessageFileName; bool m_submitActionTriggered = false; - GitSettingsPage settingPage{&m_settings, std::bind(&GitPluginPrivate::onApplySettings, this)}; + GitSettingsPage settingPage{&m_settings}; GitGrep gitGrep{&m_gitClient}; @@ -1022,6 +1022,7 @@ GitPluginPrivate::GitPluginPrivate() m_gerritPlugin->updateActions(currentState()); m_gerritPlugin->addToLocator(m_commandLocator); + connect(&m_settings, &AspectContainer::applied, this, &GitPluginPrivate::onApplySettings); } void GitPluginPrivate::diffCurrentFile() diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index d2c13506da7..a8e4a97785c 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -25,9 +25,6 @@ #include "gitsettings.h" -#include -#include -#include #include #include @@ -153,73 +150,45 @@ FilePath GitSettings::gitExecutable(bool *ok, QString *errorMessage) const return binPath; } - -// GitSettingsPageWidget - -class GitSettingsPageWidget final : public Core::IOptionsPageWidget -{ - Q_DECLARE_TR_FUNCTIONS(Git::Internal::SettingsPageWidget) - -public: - GitSettingsPageWidget(GitSettings *settings, const std::function &onChange); - - void apply() final; - -private: - std::function m_onChange; - GitSettings *m_settings; -}; - -GitSettingsPageWidget::GitSettingsPageWidget(GitSettings *settings, const std::function &onChange) - : m_onChange(onChange), m_settings(settings) -{ - GitSettings &s = *m_settings; - using namespace Layouting; - - Column { - Group { - Title(tr("Configuration")), - Row { s.path }, - s.winSetHomeEnvironment, - }, - - Group { - Title(tr("Miscellaneous")), - Row { s.logCount, s.timeout, Stretch() }, - s.pullRebase - }, - - Group { - Title(tr("Gitk")), - Row { s.gitkOptions } - }, - - Group { - Title(tr("Repository Browser")), - Row { s.repositoryBrowserCmd } - }, - - Stretch() - }.attachTo(this); -} - -void GitSettingsPageWidget::apply() -{ - if (m_settings->isDirty()) { - m_settings->apply(); - m_onChange(); - } -} - - // GitSettingsPage -GitSettingsPage::GitSettingsPage(GitSettings *settings, const std::function &onChange) +GitSettingsPage::GitSettingsPage(GitSettings *settings) { setId(VcsBase::Constants::VCS_ID_GIT); - setDisplayName(GitSettingsPageWidget::tr("Git")); + setDisplayName(GitSettings::tr("Git")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetCreator([settings, onChange] { return new GitSettingsPageWidget(settings, onChange); }); + setSettings(settings); + + setLayouter([settings](QWidget *widget) { + GitSettings &s = *settings; + using namespace Layouting; + + Column { + Group { + Title(GitSettings::tr("Configuration")), + Row { s.path }, + s.winSetHomeEnvironment, + }, + + Group { + Title(GitSettings::tr("Miscellaneous")), + Row { s.logCount, s.timeout, Stretch() }, + s.pullRebase + }, + + Group { + Title(GitSettings::tr("Gitk")), + Row { s.gitkOptions } + }, + + Group { + Title(GitSettings::tr("Repository Browser")), + Row { s.repositoryBrowserCmd } + }, + + Stretch() + }.attachTo(widget); + }); } } // namespace Internal diff --git a/src/plugins/git/gitsettings.h b/src/plugins/git/gitsettings.h index 5e06c52f46c..4949c4b98f6 100644 --- a/src/plugins/git/gitsettings.h +++ b/src/plugins/git/gitsettings.h @@ -70,7 +70,7 @@ public: class GitSettingsPage final : public Core::IOptionsPage { public: - GitSettingsPage(GitSettings *settings, const std::function &onChange); + explicit GitSettingsPage(GitSettings *settings); }; } // namespace Internal