Perforce: Move settingspage closer to new standard

Change-Id: Ia69b9f1006763c3c2eb04a3f6a3a9560e874b74e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2020-01-30 08:35:42 +01:00
parent e79d35228a
commit ac833e7691
2 changed files with 42 additions and 70 deletions

View File

@@ -35,11 +35,34 @@
#include <QFileDialog> #include <QFileDialog>
#include <QTextStream> #include <QTextStream>
using namespace Perforce::Internal;
using namespace Utils; using namespace Utils;
SettingsPageWidget::SettingsPageWidget(QWidget *parent) : namespace Perforce {
QWidget(parent) namespace Internal {
class SettingsPageWidget final : public Core::IOptionsPageWidget
{
Q_DECLARE_TR_FUNCTIONS(Perforce::Internal::SettingsPage)
public:
SettingsPageWidget();
~SettingsPageWidget() final;
private:
void apply() final;
Settings settings() const;
void slotTest();
void setStatusText(const QString &);
void setStatusError(const QString &);
void testSucceeded(const QString &repo);
Ui::SettingsPage m_ui;
PerforceChecker *m_checker = nullptr;
};
SettingsPageWidget::SettingsPageWidget()
{ {
m_ui.setupUi(this); m_ui.setupUi(this);
m_ui.errorLabel->clear(); m_ui.errorLabel->clear();
@@ -47,6 +70,17 @@ SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
m_ui.pathChooser->setHistoryCompleter(QLatin1String("Perforce.Command.History")); m_ui.pathChooser->setHistoryCompleter(QLatin1String("Perforce.Command.History"));
m_ui.pathChooser->setExpectedKind(PathChooser::Command); m_ui.pathChooser->setExpectedKind(PathChooser::Command);
connect(m_ui.testPushButton, &QPushButton::clicked, this, &SettingsPageWidget::slotTest); connect(m_ui.testPushButton, &QPushButton::clicked, this, &SettingsPageWidget::slotTest);
const PerforceSettings &s = PerforcePluginPrivate::settings();
m_ui.pathChooser->setPath(s.p4Command());
m_ui.environmentGroupBox->setChecked(!s.defaultEnv());
m_ui.portLineEdit->setText(s.p4Port());
m_ui.clientLineEdit->setText(s.p4Client());
m_ui.userLineEdit->setText(s.p4User());
m_ui.logCountSpinBox->setValue(s.logCount());
m_ui.timeOutSpinBox->setValue(s.timeOutS());
m_ui.promptToSubmitCheckBox->setChecked(s.promptToSubmit());
m_ui.autoOpenCheckBox->setChecked(s.autoOpen());
} }
SettingsPageWidget::~SettingsPageWidget() SettingsPageWidget::~SettingsPageWidget()
@@ -92,17 +126,9 @@ Settings SettingsPageWidget::settings() const
return settings; return settings;
} }
void SettingsPageWidget::setSettings(const PerforceSettings &s) void SettingsPageWidget::apply()
{ {
m_ui.pathChooser->setPath(s.p4Command()); PerforcePluginPrivate::setSettings(settings());
m_ui.environmentGroupBox->setChecked(!s.defaultEnv());
m_ui.portLineEdit->setText(s.p4Port());
m_ui.clientLineEdit->setText(s.p4Client());
m_ui.userLineEdit->setText(s.p4User());
m_ui.logCountSpinBox->setValue(s.logCount());
m_ui.timeOutSpinBox->setValue(s.timeOutS());
m_ui.promptToSubmitCheckBox->setChecked(s.promptToSubmit());
m_ui.autoOpenCheckBox->setChecked(s.autoOpen());
} }
void SettingsPageWidget::setStatusText(const QString &t) void SettingsPageWidget::setStatusText(const QString &t)
@@ -123,29 +149,8 @@ SettingsPage::SettingsPage(QObject *parent)
setId(VcsBase::Constants::VCS_ID_PERFORCE); setId(VcsBase::Constants::VCS_ID_PERFORCE);
setDisplayName(SettingsPageWidget::tr("Perforce")); setDisplayName(SettingsPageWidget::tr("Perforce"));
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
setWidgetCreator([] { return new SettingsPageWidget; });
} }
SettingsPage::~SettingsPage() } // Internal
{ } // Perforce
delete m_widget;
}
QWidget *SettingsPage::widget()
{
if (!m_widget) {
m_widget = new SettingsPageWidget;
m_widget->setSettings(PerforcePluginPrivate::settings());
}
return m_widget;
}
void SettingsPage::apply()
{
PerforcePluginPrivate::setSettings(m_widget->settings());
}
void SettingsPage::finish()
{
delete m_widget;
m_widget = nullptr;
}

View File

@@ -32,43 +32,10 @@
namespace Perforce { namespace Perforce {
namespace Internal { namespace Internal {
class PerforceSettings;
class PerforceChecker;
struct Settings;
class SettingsPageWidget : public QWidget
{
Q_DECLARE_TR_FUNCTIONS(Perforce::Internal::SettingsPage)
public:
explicit SettingsPageWidget(QWidget *parent = nullptr);
~SettingsPageWidget() override;
void setSettings(const PerforceSettings &);
Settings settings() const;
private:
void slotTest();
void setStatusText(const QString &);
void setStatusError(const QString &);
void testSucceeded(const QString &repo);
Ui::SettingsPage m_ui;
PerforceChecker *m_checker = nullptr;
};
class SettingsPage final : public Core::IOptionsPage class SettingsPage final : public Core::IOptionsPage
{ {
public: public:
explicit SettingsPage(QObject *parent); explicit SettingsPage(QObject *parent);
~SettingsPage() override;
QWidget *widget() override;
void apply() override;
void finish() override;
private:
SettingsPageWidget *m_widget = nullptr;
}; };
} // namespace Internal } // namespace Internal