diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 9016719b9b4..6e71ab3d6d1 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -321,7 +321,7 @@ private: QAction *m_menuAction = nullptr; bool m_submitActionTriggered = false; - SubversionSettingsPage m_settingsPage{[this] { configurationChanged(); }, &m_settings}; + SubversionSettingsPage m_settingsPage{&m_settings}; public: VcsSubmitEditorFactory submitEditorFactory { @@ -557,6 +557,8 @@ SubversionPluginPrivate::SubversionPluginPrivate() connect(m_revertRepositoryAction, &QAction::triggered, this, &SubversionPluginPrivate::revertAll); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); + + connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged); } bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp index b75e23486a8..b720dfd5aa5 100644 --- a/src/plugins/subversion/subversionsettings.cpp +++ b/src/plugins/subversion/subversionsettings.cpp @@ -108,66 +108,41 @@ bool SubversionSettings::hasAuthentication() const return useAuthentication.value() && !userName.value().isEmpty(); } -// SubversionSettingsPage - -class SubversionSettingsPageWidget final : public Core::IOptionsPageWidget -{ - Q_DECLARE_TR_FUNCTIONS(Subversion::Internal::SettingsPageWidget) - -public: - SubversionSettingsPageWidget(const std::function &onApply, SubversionSettings *settings); - - void apply() final; - -private: - std::function m_onApply; - SubversionSettings *m_settings; -}; - -SubversionSettingsPageWidget::SubversionSettingsPageWidget(const std::function &onApply, - SubversionSettings *settings) - : m_onApply(onApply), m_settings(settings) -{ - SubversionSettings &s = *m_settings; - using namespace Layouting; - - Column { - Group { - Title(tr("Configuration")), - s.binaryPath - }, - - Group { - Title(tr("Authentication"), &s.useAuthentication), - Form { - s.userName, - s.password, - } - }, - - Group { - Title(tr("Miscellaneous")), - Row { s.logCount, s.timeout, Stretch() }, - s.promptOnSubmit, - s.spaceIgnorantAnnotation, - }, - - Stretch() - }.attachTo(this); -} - -void SubversionSettingsPageWidget::apply() -{ - m_settings->apply(); - m_onApply(); -} - -SubversionSettingsPage::SubversionSettingsPage(const std::function &onApply, SubversionSettings *settings) +SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings) { setId(VcsBase::Constants::VCS_ID_SUBVERSION); - setDisplayName(SubversionSettingsPageWidget::tr("Subversion")); + setDisplayName(SubversionSettings::tr("Subversion")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetCreator([onApply, settings] { return new SubversionSettingsPageWidget(onApply, settings); }); + setSettings(settings); + + setLayouter([settings](QWidget *widget) { + SubversionSettings &s = *settings; + using namespace Layouting; + + Column { + Group { + Title(SubversionSettings::tr("Configuration")), + s.binaryPath + }, + + Group { + Title(SubversionSettings::tr("Authentication"), &s.useAuthentication), + Form { + s.userName, + s.password, + } + }, + + Group { + Title(SubversionSettings::tr("Miscellaneous")), + Row { s.logCount, s.timeout, Stretch() }, + s.promptOnSubmit, + s.spaceIgnorantAnnotation, + }, + + Stretch() + }.attachTo(widget); + }); } } // Internal diff --git a/src/plugins/subversion/subversionsettings.h b/src/plugins/subversion/subversionsettings.h index 893ad979eab..9e5c902435a 100644 --- a/src/plugins/subversion/subversionsettings.h +++ b/src/plugins/subversion/subversionsettings.h @@ -50,7 +50,7 @@ public: class SubversionSettingsPage final : public Core::IOptionsPage { public: - SubversionSettingsPage(const std::function &onApply, SubversionSettings *settings); + explicit SubversionSettingsPage(SubversionSettings *settings); }; } // namespace Internal