From 1c99cc296f66f8cb9d4c9335eaf5600d50c8e28e Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 16 Jan 2020 14:50:30 +0100 Subject: [PATCH] Mercurial: Remove VcsClientOptionsPage level in settings class hierarchy Change-Id: Id248a9a9b1054a1b322b2d1cd8a75877323f2b84 Reviewed-by: Orgad Shaneh --- src/plugins/mercurial/optionspage.cpp | 48 +++++++++++++++------------ src/plugins/mercurial/optionspage.h | 6 ++-- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp index a08ca7d4dc4..6611580ed6c 100644 --- a/src/plugins/mercurial/optionspage.cpp +++ b/src/plugins/mercurial/optionspage.cpp @@ -40,41 +40,29 @@ using namespace VcsBase; namespace Mercurial { namespace Internal { -class OptionsPageWidget final : public VcsBase::VcsClientOptionsPageWidget +class OptionsPageWidget final : public Core::IOptionsPageWidget { Q_DECLARE_TR_FUNCTIONS(Mercurial::Internal::OptionsPageWidget) public: - OptionsPageWidget(); - - VcsBase::VcsBaseClientSettings settings() const final; - void setSettings(const VcsBase::VcsBaseClientSettings &s) final; + explicit OptionsPageWidget(Core::IVersionControl *control); + void apply() final; private: Ui::OptionsPage m_ui; + Core::IVersionControl *m_control; }; -OptionsPageWidget::OptionsPageWidget() +OptionsPageWidget::OptionsPageWidget(Core::IVersionControl *control) + : m_control(control) { m_ui.setupUi(this); m_ui.commandChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); m_ui.commandChooser->setHistoryCompleter(QLatin1String("Mercurial.Command.History")); m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command")); -} -VcsBaseClientSettings OptionsPageWidget::settings() const -{ - MercurialSettings s; - s.setValue(MercurialSettings::binaryPathKey, m_ui.commandChooser->rawPath()); - s.setValue(MercurialSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed()); - s.setValue(MercurialSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed()); - s.setValue(MercurialSettings::logCountKey, m_ui.logEntriesCount->value()); - s.setValue(MercurialSettings::timeoutKey, m_ui.timeout->value()); - return s; -} + const VcsBaseClientSettings &s = MercurialPlugin::client()->settings(); -void OptionsPageWidget::setSettings(const VcsBaseClientSettings &s) -{ m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey)); m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey)); m_ui.defaultEmailLineEdit->setText(s.stringValue(MercurialSettings::userEmailKey)); @@ -82,13 +70,29 @@ void OptionsPageWidget::setSettings(const VcsBaseClientSettings &s) m_ui.timeout->setValue(s.intValue(MercurialSettings::timeoutKey)); } -OptionsPage::OptionsPage(Core::IVersionControl *control, QObject *parent) : - VcsClientOptionsPage(control, MercurialPlugin::client(), parent) +void OptionsPageWidget::apply() +{ + MercurialSettings ms; + ms.setValue(MercurialSettings::binaryPathKey, m_ui.commandChooser->rawPath()); + ms.setValue(MercurialSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed()); + ms.setValue(MercurialSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed()); + ms.setValue(MercurialSettings::logCountKey, m_ui.logEntriesCount->value()); + ms.setValue(MercurialSettings::timeoutKey, m_ui.timeout->value()); + + VcsBaseClientSettings &s = MercurialPlugin::client()->settings(); + if (s != ms) { + s = ms; + m_control->configurationChanged(); + } +} + +OptionsPage::OptionsPage(Core::IVersionControl *control, QObject *parent) + : Core::IOptionsPage(parent) { setId(VcsBase::Constants::VCS_ID_MERCURIAL); setDisplayName(OptionsPageWidget::tr("Mercurial")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetFactory([] { return new OptionsPageWidget; }); + setWidgetCreator([control] { return new OptionsPageWidget(control); }); } } // namespace Internal diff --git a/src/plugins/mercurial/optionspage.h b/src/plugins/mercurial/optionspage.h index 8c3fc425917..0c90f337203 100644 --- a/src/plugins/mercurial/optionspage.h +++ b/src/plugins/mercurial/optionspage.h @@ -25,12 +25,14 @@ #pragma once -#include +#include + +namespace Core { class IVersionControl; } namespace Mercurial { namespace Internal { -class OptionsPage final : public VcsBase::VcsClientOptionsPage +class OptionsPage final : public Core::IOptionsPage { public: OptionsPage(Core::IVersionControl *control, QObject *parent);