diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 9ba8c9db9fc..0d64c470ade 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -424,7 +424,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er connect(SessionManager::instance(), &SessionManager::startupProjectChanged, this, &ClearCasePlugin::projectChanged); - new SettingsPage(this); + new ClearCaseSettingsPage(this); new VcsSubmitEditorFactory(&submitParameters, []() { return new ClearCaseSubmitEditor(&submitParameters); }, this); diff --git a/src/plugins/clearcase/settingspage.cpp b/src/plugins/clearcase/settingspage.cpp index 8414e0eaf00..ae5c3255e8c 100644 --- a/src/plugins/clearcase/settingspage.cpp +++ b/src/plugins/clearcase/settingspage.cpp @@ -28,52 +28,44 @@ #include "clearcaseconstants.h" #include "clearcasesettings.h" #include "clearcaseplugin.h" +#include "ui_settingspage.h" #include -#include + #include #include #include #include -#include -#include -using namespace ClearCase::Internal; using namespace Utils; -SettingsPageWidget::SettingsPageWidget(QWidget *parent) : QWidget(parent) +namespace ClearCase { +namespace Internal { + +class SettingsPageWidget final : public Core::IOptionsPageWidget +{ + Q_DECLARE_TR_FUNCTIONS(ClearCase::Internal::SettingsPageWidget) + +public: + SettingsPageWidget(); + +private: + void apply() final; + void finish() final { } + + Ui::SettingsPage m_ui; +}; + +SettingsPageWidget::SettingsPageWidget() { m_ui.setupUi(this); m_ui.commandPathChooser->setPromptDialogTitle(tr("ClearCase Command")); m_ui.commandPathChooser->setExpectedKind(PathChooser::ExistingCommand); m_ui.commandPathChooser->setHistoryCompleter(QLatin1String("ClearCase.Command.History")); -} -ClearCaseSettings SettingsPageWidget::settings() const -{ - ClearCaseSettings rc; - rc.ccCommand = m_ui.commandPathChooser->rawPath(); - rc.ccBinaryPath = m_ui.commandPathChooser->path(); - rc.timeOutS = m_ui.timeOutSpinBox->value(); - rc.autoCheckOut = m_ui.autoCheckOutCheckBox->isChecked(); - rc.noComment = m_ui.noCommentCheckBox->isChecked(); - if (m_ui.graphicalDiffRadioButton->isChecked()) - rc.diffType = GraphicalDiff; - else if (m_ui.externalDiffRadioButton->isChecked()) - rc.diffType = ExternalDiff; - rc.autoAssignActivityName = m_ui.autoAssignActivityCheckBox->isChecked(); - rc.historyCount = m_ui.historyCountSpinBox->value(); - rc.promptToCheckIn = m_ui.promptCheckBox->isChecked(); - rc.disableIndexer = m_ui.disableIndexerCheckBox->isChecked(); - rc.diffArgs = m_ui.diffArgsEdit->text(); - rc.indexOnlyVOBs = m_ui.indexOnlyVOBsEdit->text(); - rc.extDiffAvailable = m_ui.externalDiffRadioButton->isEnabled(); - return rc; -} + ClearCaseSettings s = ClearCasePlugin::instance()->settings(); -void SettingsPageWidget::setSettings(const ClearCaseSettings &s) -{ m_ui.commandPathChooser->setPath(s.ccCommand); m_ui.timeOutSpinBox->setValue(s.timeOutS); m_ui.autoCheckOutCheckBox->setChecked(s.autoCheckOut); @@ -104,22 +96,36 @@ void SettingsPageWidget::setSettings(const ClearCaseSettings &s) m_ui.indexOnlyVOBsEdit->setText(s.indexOnlyVOBs); } -SettingsPage::SettingsPage(QObject *parent) +void SettingsPageWidget::apply() +{ + ClearCaseSettings rc; + rc.ccCommand = m_ui.commandPathChooser->rawPath(); + rc.ccBinaryPath = m_ui.commandPathChooser->path(); + rc.timeOutS = m_ui.timeOutSpinBox->value(); + rc.autoCheckOut = m_ui.autoCheckOutCheckBox->isChecked(); + rc.noComment = m_ui.noCommentCheckBox->isChecked(); + if (m_ui.graphicalDiffRadioButton->isChecked()) + rc.diffType = GraphicalDiff; + else if (m_ui.externalDiffRadioButton->isChecked()) + rc.diffType = ExternalDiff; + rc.autoAssignActivityName = m_ui.autoAssignActivityCheckBox->isChecked(); + rc.historyCount = m_ui.historyCountSpinBox->value(); + rc.promptToCheckIn = m_ui.promptCheckBox->isChecked(); + rc.disableIndexer = m_ui.disableIndexerCheckBox->isChecked(); + rc.diffArgs = m_ui.diffArgsEdit->text(); + rc.indexOnlyVOBs = m_ui.indexOnlyVOBsEdit->text(); + rc.extDiffAvailable = m_ui.externalDiffRadioButton->isEnabled(); + + ClearCasePlugin::instance()->setSettings(rc); +} + +ClearCaseSettingsPage::ClearCaseSettingsPage(QObject *parent) : VcsBaseOptionsPage(parent) { setId(ClearCase::Constants::VCS_ID_CLEARCASE); setDisplayName(tr("ClearCase")); + setWidgetCreator([] { return new SettingsPageWidget; }); } -QWidget *SettingsPage::widget() -{ - if (!m_widget) - m_widget = new SettingsPageWidget; - m_widget->setSettings(ClearCasePlugin::instance()->settings()); - return m_widget; -} - -void SettingsPage::apply() -{ - ClearCasePlugin::instance()->setSettings(m_widget->settings()); -} +} // Internal +} // ClearCase diff --git a/src/plugins/clearcase/settingspage.h b/src/plugins/clearcase/settingspage.h index 75d5516ab3e..726798c5e62 100644 --- a/src/plugins/clearcase/settingspage.h +++ b/src/plugins/clearcase/settingspage.h @@ -28,43 +28,13 @@ #include -#include "ui_settingspage.h" - -#include - namespace ClearCase { namespace Internal { -class ClearCaseSettings; - -class SettingsPageWidget : public QWidget +class ClearCaseSettingsPage : public VcsBase::VcsBaseOptionsPage { - Q_OBJECT - public: - explicit SettingsPageWidget(QWidget *parent = nullptr); - - ClearCaseSettings settings() const; - void setSettings(const ClearCaseSettings &); - -private: - Ui::SettingsPage m_ui; -}; - - -class SettingsPage : public VcsBase::VcsBaseOptionsPage -{ - Q_OBJECT - -public: - explicit SettingsPage(QObject *parent); - - QWidget *widget() override; - void apply() override; - void finish() override { } - -private: - QPointer m_widget; + explicit ClearCaseSettingsPage(QObject *parent); }; } // namespace ClearCase