diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 46f88ea9b78..47156834560 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -364,7 +364,7 @@ private: QAction *m_menuAction = nullptr; bool m_submitActionTriggered = false; - CvsSettingsPage m_settingsPage{[this] { configurationChanged(); }, &m_settings}; + CvsSettingsPage m_settingsPage{&m_settings}; public: VcsSubmitEditorFactory submitEditorFactory { @@ -736,6 +736,8 @@ CvsPluginPrivate::CvsPluginPrivate() connect(m_revertRepositoryAction, &QAction::triggered, this, &CvsPluginPrivate::revertAll); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); + + connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged); } void CvsPluginPrivate::vcsDescribe(const QString &source, const QString &changeNr) diff --git a/src/plugins/cvs/cvssettings.cpp b/src/plugins/cvs/cvssettings.cpp index 983a0aede1d..7ec116d79bf 100644 --- a/src/plugins/cvs/cvssettings.cpp +++ b/src/plugins/cvs/cvssettings.cpp @@ -33,7 +33,6 @@ #include using namespace Utils; -using namespace VcsBase; namespace Cvs { namespace Internal { @@ -91,63 +90,37 @@ QStringList CvsSettings::addOptions(const QStringList &args) const return rc; } -// CvsSettingsPage - -class CvsSettingsPageWidget final : public Core::IOptionsPageWidget -{ - Q_DECLARE_TR_FUNCTIONS(Cvs::Internal::SettingsPageWidget) - -public: - CvsSettingsPageWidget(const std::function & onApply, CvsSettings *settings); - - void apply() final; - -private: - std::function m_onApply; - CvsSettings *m_settings; -}; - -CvsSettingsPageWidget::CvsSettingsPageWidget(const std::function &onApply, CvsSettings *settings) - : m_onApply(onApply), m_settings(settings) -{ - CvsSettings &s = *settings; - using namespace Layouting; - - Column { - Group { - Title(tr("Configuration")), - Form { - s.binaryPath, - s.cvsRoot - } - }, - Group { - Title(tr("Miscellaneous")), - Form { - s.timeout, - s.diffOptions, - }, - s.promptOnSubmit, - s.describeByCommitId, - }, - Stretch() - }.attachTo(this); -} - -void CvsSettingsPageWidget::apply() -{ - if (m_settings->isDirty()) { - m_settings->apply(); - m_onApply(); - } -} - -CvsSettingsPage::CvsSettingsPage(const std::function &onApply, CvsSettings *settings) +CvsSettingsPage::CvsSettingsPage(CvsSettings *settings) { setId(VcsBase::Constants::VCS_ID_CVS); - setDisplayName(CvsSettingsPageWidget::tr("CVS")); + setDisplayName(CvsSettings::tr("CVS")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetCreator([onApply, settings] { return new CvsSettingsPageWidget(onApply, settings); }); + setSettings(settings); + + setLayouter([settings](QWidget *widget) { + CvsSettings &s = *settings; + using namespace Layouting; + + Column { + Group { + Title(CvsSettings::tr("Configuration")), + Form { + s.binaryPath, + s.cvsRoot + } + }, + Group { + Title(CvsSettings::tr("Miscellaneous")), + Form { + s.timeout, + s.diffOptions, + }, + s.promptOnSubmit, + s.describeByCommitId, + }, + Stretch() + }.attachTo(widget); + }); } } // Internal diff --git a/src/plugins/cvs/cvssettings.h b/src/plugins/cvs/cvssettings.h index 391300d4a77..8e811db8914 100644 --- a/src/plugins/cvs/cvssettings.h +++ b/src/plugins/cvs/cvssettings.h @@ -51,7 +51,7 @@ public: class CvsSettingsPage final : public Core::IOptionsPage { public: - CvsSettingsPage(const std::function &onApply, CvsSettings *settings); + explicit CvsSettingsPage(CvsSettings *settings); }; } // namespace Internal