Mercurial: Remove VcsClientOptionsPage level in settings class hierarchy

Change-Id: Id248a9a9b1054a1b322b2d1cd8a75877323f2b84
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2020-01-16 14:50:30 +01:00
parent 96ac659e74
commit 1c99cc296f
2 changed files with 30 additions and 24 deletions

View File

@@ -40,41 +40,29 @@ using namespace VcsBase;
namespace Mercurial { namespace Mercurial {
namespace Internal { namespace Internal {
class OptionsPageWidget final : public VcsBase::VcsClientOptionsPageWidget class OptionsPageWidget final : public Core::IOptionsPageWidget
{ {
Q_DECLARE_TR_FUNCTIONS(Mercurial::Internal::OptionsPageWidget) Q_DECLARE_TR_FUNCTIONS(Mercurial::Internal::OptionsPageWidget)
public: public:
OptionsPageWidget(); explicit OptionsPageWidget(Core::IVersionControl *control);
void apply() final;
VcsBase::VcsBaseClientSettings settings() const final;
void setSettings(const VcsBase::VcsBaseClientSettings &s) final;
private: private:
Ui::OptionsPage m_ui; Ui::OptionsPage m_ui;
Core::IVersionControl *m_control;
}; };
OptionsPageWidget::OptionsPageWidget() OptionsPageWidget::OptionsPageWidget(Core::IVersionControl *control)
: m_control(control)
{ {
m_ui.setupUi(this); m_ui.setupUi(this);
m_ui.commandChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); m_ui.commandChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
m_ui.commandChooser->setHistoryCompleter(QLatin1String("Mercurial.Command.History")); m_ui.commandChooser->setHistoryCompleter(QLatin1String("Mercurial.Command.History"));
m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command")); m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command"));
}
VcsBaseClientSettings OptionsPageWidget::settings() const const VcsBaseClientSettings &s = MercurialPlugin::client()->settings();
{
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;
}
void OptionsPageWidget::setSettings(const VcsBaseClientSettings &s)
{
m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey)); m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey));
m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey)); m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey));
m_ui.defaultEmailLineEdit->setText(s.stringValue(MercurialSettings::userEmailKey)); 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)); m_ui.timeout->setValue(s.intValue(MercurialSettings::timeoutKey));
} }
OptionsPage::OptionsPage(Core::IVersionControl *control, QObject *parent) : void OptionsPageWidget::apply()
VcsClientOptionsPage(control, MercurialPlugin::client(), parent) {
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); setId(VcsBase::Constants::VCS_ID_MERCURIAL);
setDisplayName(OptionsPageWidget::tr("Mercurial")); setDisplayName(OptionsPageWidget::tr("Mercurial"));
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
setWidgetFactory([] { return new OptionsPageWidget; }); setWidgetCreator([control] { return new OptionsPageWidget(control); });
} }
} // namespace Internal } // namespace Internal

View File

@@ -25,12 +25,14 @@
#pragma once #pragma once
#include <vcsbase/vcsbaseoptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
namespace Core { class IVersionControl; }
namespace Mercurial { namespace Mercurial {
namespace Internal { namespace Internal {
class OptionsPage final : public VcsBase::VcsClientOptionsPage class OptionsPage final : public Core::IOptionsPage
{ {
public: public:
OptionsPage(Core::IVersionControl *control, QObject *parent); OptionsPage(Core::IVersionControl *control, QObject *parent);