diff options
-rw-r--r-- | src/plugins/bazaar/optionspage.h | 4 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cvs/settingspage.cpp | 47 | ||||
-rw-r--r-- | src/plugins/cvs/settingspage.h | 8 | ||||
-rw-r--r-- | src/plugins/git/gitplugin.cpp | 13 | ||||
-rw-r--r-- | src/plugins/git/gitsettings.cpp | 6 | ||||
-rw-r--r-- | src/plugins/git/gitsettings.h | 2 | ||||
-rw-r--r-- | src/plugins/git/settingspage.cpp | 68 | ||||
-rw-r--r-- | src/plugins/git/settingspage.h | 7 | ||||
-rw-r--r-- | src/plugins/subversion/settingspage.cpp | 53 | ||||
-rw-r--r-- | src/plugins/subversion/settingspage.h | 8 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbase.pro | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbase.qbs | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseoptionspage.cpp | 91 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseoptionspage.h | 78 |
17 files changed, 112 insertions, 282 deletions
diff --git a/src/plugins/bazaar/optionspage.h b/src/plugins/bazaar/optionspage.h index 9a75dc26717..ccfaa8f0cf0 100644 --- a/src/plugins/bazaar/optionspage.h +++ b/src/plugins/bazaar/optionspage.h @@ -25,7 +25,9 @@ #pragma once -#include <vcsbase/vcsbaseoptionspage.h> +#include <coreplugin/dialogs/ioptionspage.h> + +namespace Core { class IVersionControl; } namespace Bazaar { namespace Internal { diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 4c87edaf792..8d7f2496248 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -221,7 +221,7 @@ CvsPluginPrivate::CvsPluginPrivate() m_client = new CvsClient(&m_settings); - new SettingsPage(vcsCtrl, &m_settings, this); + new CvsSettingsPage(vcsCtrl, &m_settings, this); new VcsSubmitEditorFactory(&submitParameters, []() { return new CvsSubmitEditor(&submitParameters); }, this); diff --git a/src/plugins/cvs/settingspage.cpp b/src/plugins/cvs/settingspage.cpp index c6419d7e6fe..3e03dfc3af8 100644 --- a/src/plugins/cvs/settingspage.cpp +++ b/src/plugins/cvs/settingspage.cpp @@ -43,57 +43,62 @@ using namespace VcsBase; namespace Cvs { namespace Internal { -class SettingsPageWidget final : public VcsBase::VcsClientOptionsPageWidget +class CvsSettingsPageWidget final : public Core::IOptionsPageWidget { Q_DECLARE_TR_FUNCTIONS(Cvs::Internal::SettingsPageWidget) public: - SettingsPageWidget(); + CvsSettingsPageWidget(Core::IVersionControl *control, CvsSettings *settings); - VcsBase::VcsBaseClientSettings settings() const final; - void setSettings(const VcsBase::VcsBaseClientSettings &) final; + void apply() final; private: Ui::SettingsPage m_ui; + Core::IVersionControl *m_control; + CvsSettings *m_settings; }; -SettingsPageWidget::SettingsPageWidget() +CvsSettingsPageWidget::CvsSettingsPageWidget(Core::IVersionControl *control, CvsSettings *settings) + : m_control(control), m_settings(settings) { m_ui.setupUi(this); m_ui.commandPathChooser->setExpectedKind(PathChooser::ExistingCommand); m_ui.commandPathChooser->setHistoryCompleter(QLatin1String("Cvs.Command.History")); m_ui.commandPathChooser->setPromptDialogTitle(tr("CVS Command")); + + const VcsBaseClientSettings &s = *settings; + m_ui.commandPathChooser->setFileName(s.binaryPath()); + m_ui.rootLineEdit->setText(s.stringValue(CvsSettings::cvsRootKey)); + m_ui.diffOptionsLineEdit->setText(s.stringValue(CvsSettings::diffOptionsKey)); + m_ui.timeOutSpinBox->setValue(s.intValue(CvsSettings::timeoutKey)); + m_ui.promptToSubmitCheckBox->setChecked(s.boolValue(CvsSettings::promptOnSubmitKey)); + m_ui.describeByCommitIdCheckBox->setChecked(s.boolValue(CvsSettings::describeByCommitIdKey)); } -VcsBaseClientSettings SettingsPageWidget::settings() const +void CvsSettingsPageWidget::apply() { - CvsSettings rc; + CvsSettings rc = *m_settings; rc.setValue(CvsSettings::binaryPathKey, m_ui.commandPathChooser->rawPath()); rc.setValue(CvsSettings::cvsRootKey, m_ui.rootLineEdit->text()); rc.setValue(CvsSettings::diffOptionsKey, m_ui.diffOptionsLineEdit->text()); rc.setValue(CvsSettings::timeoutKey, m_ui.timeOutSpinBox->value()); rc.setValue(CvsSettings::promptOnSubmitKey, m_ui.promptToSubmitCheckBox->isChecked()); rc.setValue(CvsSettings::describeByCommitIdKey, m_ui.describeByCommitIdCheckBox->isChecked()); - return rc; -} -void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s) -{ - m_ui.commandPathChooser->setFileName(s.binaryPath()); - m_ui.rootLineEdit->setText(s.stringValue(CvsSettings::cvsRootKey)); - m_ui.diffOptionsLineEdit->setText(s.stringValue(CvsSettings::diffOptionsKey)); - m_ui.timeOutSpinBox->setValue(s.intValue(CvsSettings::timeoutKey)); - m_ui.promptToSubmitCheckBox->setChecked(s.boolValue(CvsSettings::promptOnSubmitKey)); - m_ui.describeByCommitIdCheckBox->setChecked(s.boolValue(CvsSettings::describeByCommitIdKey)); + if (rc == *m_settings) + return; + + *m_settings = rc; + m_control->configurationChanged(); } -SettingsPage::SettingsPage(Core::IVersionControl *control, CvsSettings *settings, QObject *parent) : - VcsClientOptionsPage(control, settings, parent) +CvsSettingsPage::CvsSettingsPage(Core::IVersionControl *control, CvsSettings *settings, QObject *parent) : + Core::IOptionsPage( parent) { setId(VcsBase::Constants::VCS_ID_CVS); - setDisplayName(SettingsPageWidget::tr("CVS")); + setDisplayName(CvsSettingsPageWidget::tr("CVS")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetFactory([] { return new SettingsPageWidget; }); + setWidgetCreator([control, settings] { return new CvsSettingsPageWidget(control, settings); }); } } // Internal diff --git a/src/plugins/cvs/settingspage.h b/src/plugins/cvs/settingspage.h index 874762cb741..fe2077d6ec8 100644 --- a/src/plugins/cvs/settingspage.h +++ b/src/plugins/cvs/settingspage.h @@ -25,17 +25,19 @@ #pragma once -#include <vcsbase/vcsbaseoptionspage.h> +#include <coreplugin/dialogs/ioptionspage.h> + +namespace Core { class IVersionControl; } namespace Cvs { namespace Internal { class CvsSettings; -class SettingsPage final : public VcsBase::VcsClientOptionsPage +class CvsSettingsPage final : public Core::IOptionsPage { public: - SettingsPage(Core::IVersionControl *control, CvsSettings *settings, QObject *parent); + CvsSettingsPage(Core::IVersionControl *control, CvsSettings *settings, QObject *parent); }; } // namespace Cvs diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 2ada220ae15..9f13dc082a1 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -325,9 +325,16 @@ GitPluginPrivate::GitPluginPrivate() initializeVcs(vc, context); // Create the settings Page - auto settingsPage = new SettingsPage(vc, &m_settings, this); - connect(settingsPage, &SettingsPage::settingsChanged, - this, &GitPluginPrivate::updateRepositoryBrowserAction); + auto onApply = [this, vc] { + vc->configurationChanged(); + updateRepositoryBrowserAction(); + bool gitFoundOk; + QString errorMessage; + m_settings.gitExecutable(&gitFoundOk, &errorMessage); + if (!gitFoundOk) + Core::AsynchronousMessageBox::warning(tr("Git Settings"), errorMessage); + }; + new GitSettingsPage(&m_settings, onApply, this); new GitGrep(this); m_branchViewFactory = new BranchViewFactory; diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index ecc355fa508..097dd276f3f 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -92,11 +92,5 @@ Utils::FilePath GitSettings::gitExecutable(bool *ok, QString *errorMessage) cons return binPath; } -GitSettings &GitSettings::operator = (const GitSettings &s) -{ - VcsBaseClientSettings::operator =(s); - return *this; -} - } // namespace Internal } // namespace Git diff --git a/src/plugins/git/gitsettings.h b/src/plugins/git/gitsettings.h index 4bd088c8528..73e42a3c724 100644 --- a/src/plugins/git/gitsettings.h +++ b/src/plugins/git/gitsettings.h @@ -61,7 +61,7 @@ public: Utils::FilePath gitExecutable(bool *ok = nullptr, QString *errorMessage = nullptr) const; - GitSettings &operator = (const GitSettings &s); + GitSettings &operator=(const GitSettings &s) = default; }; } // namespace Internal diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp index c5942149c70..f7b76576131 100644 --- a/src/plugins/git/settingspage.cpp +++ b/src/plugins/git/settingspage.cpp @@ -44,23 +44,25 @@ using namespace VcsBase; namespace Git { namespace Internal { -class SettingsPageWidget final : public VcsBase::VcsClientOptionsPageWidget +class GitSettingsPageWidget final : public Core::IOptionsPageWidget { Q_DECLARE_TR_FUNCTIONS(Git::Internal::SettingsPageWidget) public: - SettingsPageWidget(); + GitSettingsPageWidget(GitSettings *settings, const std::function<void()> &onChange); - VcsBase::VcsBaseClientSettings settings() const final; - void setSettings(const VcsBase::VcsBaseClientSettings &s) final; + void apply() final; private: void updateNoteField(); + std::function<void()> m_onChange; + GitSettings *m_settings; Ui::SettingsPage m_ui; }; -SettingsPageWidget::SettingsPageWidget() +GitSettingsPageWidget::GitSettingsPageWidget(GitSettings *settings, const std::function<void()> &onChange) + : m_onChange(onChange), m_settings(settings) { m_ui.setupUi(this); if (Utils::HostOsInfo::isWindowsHost()) { @@ -82,12 +84,21 @@ SettingsPageWidget::SettingsPageWidget() m_ui.repBrowserCommandPathChooser->setHistoryCompleter("Git.RepoCommand.History"); m_ui.repBrowserCommandPathChooser->setPromptDialogTitle(tr("Git Repository Browser Command")); - connect(m_ui.pathLineEdit, &QLineEdit::textChanged, this, &SettingsPageWidget::updateNoteField); + connect(m_ui.pathLineEdit, &QLineEdit::textChanged, this, &GitSettingsPageWidget::updateNoteField); + + GitSettings &s = *m_settings; + m_ui.pathLineEdit->setText(s.stringValue(GitSettings::pathKey)); + m_ui.logCountSpinBox->setValue(s.intValue(GitSettings::logCountKey)); + m_ui.timeoutSpinBox->setValue(s.intValue(GitSettings::timeoutKey)); + m_ui.pullRebaseCheckBox->setChecked(s.boolValue(GitSettings::pullRebaseKey)); + m_ui.winHomeCheckBox->setChecked(s.boolValue(GitSettings::winSetHomeEnvironmentKey)); + m_ui.gitkOptionsLineEdit->setText(s.stringValue(GitSettings::gitkOptionsKey)); + m_ui.repBrowserCommandPathChooser->setPath(s.stringValue(GitSettings::repositoryBrowserCmd)); } -VcsBaseClientSettings SettingsPageWidget::settings() const +void GitSettingsPageWidget::apply() { - GitSettings rc; + GitSettings rc = *m_settings; rc.setValue(GitSettings::pathKey, m_ui.pathLineEdit->text()); rc.setValue(GitSettings::logCountKey, m_ui.logCountSpinBox->value()); rc.setValue(GitSettings::timeoutKey, m_ui.timeoutSpinBox->value()); @@ -96,21 +107,13 @@ VcsBaseClientSettings SettingsPageWidget::settings() const rc.setValue(GitSettings::gitkOptionsKey, m_ui.gitkOptionsLineEdit->text().trimmed()); rc.setValue(GitSettings::repositoryBrowserCmd, m_ui.repBrowserCommandPathChooser->path().trimmed()); - return rc; -} - -void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s) -{ - m_ui.pathLineEdit->setText(s.stringValue(GitSettings::pathKey)); - m_ui.logCountSpinBox->setValue(s.intValue(GitSettings::logCountKey)); - m_ui.timeoutSpinBox->setValue(s.intValue(GitSettings::timeoutKey)); - m_ui.pullRebaseCheckBox->setChecked(s.boolValue(GitSettings::pullRebaseKey)); - m_ui.winHomeCheckBox->setChecked(s.boolValue(GitSettings::winSetHomeEnvironmentKey)); - m_ui.gitkOptionsLineEdit->setText(s.stringValue(GitSettings::gitkOptionsKey)); - m_ui.repBrowserCommandPathChooser->setPath(s.stringValue(GitSettings::repositoryBrowserCmd)); + if (rc != *m_settings) { + *m_settings = rc; + m_onChange(); + } } -void SettingsPageWidget::updateNoteField() +void GitSettingsPageWidget::updateNoteField() { Utils::Environment env = Utils::Environment::systemEnvironment(); env.prependOrSetPath(m_ui.pathLineEdit->text()); @@ -123,28 +126,13 @@ void SettingsPageWidget::updateNoteField() // -------- SettingsPage -SettingsPage::SettingsPage(Core::IVersionControl *control, GitSettings *settings, QObject *parent) : - VcsClientOptionsPage(control, settings, parent) +GitSettingsPage::GitSettingsPage(GitSettings *settings, const std::function<void()> &onChange, QObject *parent) : + Core::IOptionsPage(parent) { setId(VcsBase::Constants::VCS_ID_GIT); - setDisplayName(SettingsPageWidget::tr("Git")); + setDisplayName(GitSettingsPageWidget::tr("Git")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetFactory([] { return new SettingsPageWidget; }); -} - -void SettingsPage::apply() -{ - VcsClientOptionsPage::apply(); - - if (widget()->isVisible()) { - const VcsBaseClientSettings settings = widget()->settings(); - auto rc = static_cast<const GitSettings *>(&settings); - bool gitFoundOk; - QString errorMessage; - rc->gitExecutable(&gitFoundOk, &errorMessage); - if (!gitFoundOk) - Core::AsynchronousMessageBox::warning(tr("Git Settings"), errorMessage); - } + setWidgetCreator([settings, onChange] { return new GitSettingsPageWidget(settings, onChange); }); } } // namespace Internal diff --git a/src/plugins/git/settingspage.h b/src/plugins/git/settingspage.h index 2a44f37fdbc..c1b0e2a3000 100644 --- a/src/plugins/git/settingspage.h +++ b/src/plugins/git/settingspage.h @@ -25,18 +25,17 @@ #pragma once -#include <vcsbase/vcsbaseoptionspage.h> +#include <coreplugin/dialogs/ioptionspage.h> namespace Git { namespace Internal { class GitSettings; -class SettingsPage final : public VcsBase::VcsClientOptionsPage +class GitSettingsPage final : public Core::IOptionsPage { public: - SettingsPage(Core::IVersionControl *control, GitSettings *settings, QObject *parent); - void apply() final; + GitSettingsPage(GitSettings *settings, const std::function<void()> &onChange, QObject *parent); }; } // namespace Internal diff --git a/src/plugins/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp index 94b5830ced3..8e16081c10b 100644 --- a/src/plugins/subversion/settingspage.cpp +++ b/src/plugins/subversion/settingspage.cpp @@ -44,31 +44,44 @@ using namespace VcsBase; namespace Subversion { namespace Internal { -class SettingsPageWidget final : public VcsBase::VcsClientOptionsPageWidget +class SubversionSettingsPageWidget final : public Core::IOptionsPageWidget { Q_DECLARE_TR_FUNCTIONS(Subversion::Internal::SettingsPageWidget) public: - SettingsPageWidget(); + SubversionSettingsPageWidget(Core::IVersionControl *control, SubversionSettings *settings); - VcsBase::VcsBaseClientSettings settings() const final; - void setSettings(const VcsBase::VcsBaseClientSettings &s) final; + void apply() final; private: Ui::SettingsPage m_ui; + Core::IVersionControl *m_control; + SubversionSettings *m_settings; }; -SettingsPageWidget::SettingsPageWidget() +SubversionSettingsPageWidget::SubversionSettingsPageWidget(Core::IVersionControl *control, SubversionSettings *settings) + : m_control(control), m_settings(settings) { m_ui.setupUi(this); m_ui.pathChooser->setExpectedKind(PathChooser::ExistingCommand); m_ui.pathChooser->setHistoryCompleter(QLatin1String("Subversion.Command.History")); m_ui.pathChooser->setPromptDialogTitle(tr("Subversion Command")); + + SubversionSettings &s = *m_settings; + m_ui.pathChooser->setFileName(s.binaryPath()); + m_ui.usernameLineEdit->setText(s.stringValue(SubversionSettings::userKey)); + m_ui.passwordLineEdit->setText(s.stringValue(SubversionSettings::passwordKey)); + m_ui.userGroupBox->setChecked(s.boolValue(SubversionSettings::useAuthenticationKey)); + m_ui.timeOutSpinBox->setValue(s.intValue(SubversionSettings::timeoutKey)); + m_ui.promptToSubmitCheckBox->setChecked(s.boolValue(SubversionSettings::promptOnSubmitKey)); + m_ui.spaceIgnorantAnnotationCheckBox->setChecked( + s.boolValue(SubversionSettings::spaceIgnorantAnnotationKey)); + m_ui.logCountSpinBox->setValue(s.intValue(SubversionSettings::logCountKey)); } -VcsBase::VcsBaseClientSettings SettingsPageWidget::settings() const +void SubversionSettingsPageWidget::apply() { - SubversionSettings rc; + SubversionSettings rc = *m_settings; rc.setValue(SubversionSettings::binaryPathKey, m_ui.pathChooser->rawPath()); rc.setValue(SubversionSettings::useAuthenticationKey, m_ui.userGroupBox->isChecked()); rc.setValue(SubversionSettings::userKey, m_ui.usernameLineEdit->text()); @@ -80,29 +93,21 @@ VcsBase::VcsBaseClientSettings SettingsPageWidget::settings() const rc.setValue(SubversionSettings::spaceIgnorantAnnotationKey, m_ui.spaceIgnorantAnnotationCheckBox->isChecked()); rc.setValue(SubversionSettings::logCountKey, m_ui.logCountSpinBox->value()); - return rc; -} -void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s) -{ - m_ui.pathChooser->setFileName(s.binaryPath()); - m_ui.usernameLineEdit->setText(s.stringValue(SubversionSettings::userKey)); - m_ui.passwordLineEdit->setText(s.stringValue(SubversionSettings::passwordKey)); - m_ui.userGroupBox->setChecked(s.boolValue(SubversionSettings::useAuthenticationKey)); - m_ui.timeOutSpinBox->setValue(s.intValue(SubversionSettings::timeoutKey)); - m_ui.promptToSubmitCheckBox->setChecked(s.boolValue(SubversionSettings::promptOnSubmitKey)); - m_ui.spaceIgnorantAnnotationCheckBox->setChecked( - s.boolValue(SubversionSettings::spaceIgnorantAnnotationKey)); - m_ui.logCountSpinBox->setValue(s.intValue(SubversionSettings::logCountKey)); + if (rc == *m_settings) + return; + + *m_settings = rc; + m_control->configurationChanged(); } -SettingsPage::SettingsPage(Core::IVersionControl *control, SubversionSettings *settings, QObject *parent) : - VcsClientOptionsPage(control, settings, parent) +SubversionSettingsPage::SubversionSettingsPage(Core::IVersionControl *control, SubversionSettings *settings, QObject *parent) : + Core::IOptionsPage(parent) { setId(VcsBase::Constants::VCS_ID_SUBVERSION); - setDisplayName(SettingsPageWidget::tr("Subversion")); + setDisplayName(SubversionSettingsPageWidget::tr("Subversion")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetFactory([] { return new SettingsPageWidget; }); + setWidgetCreator([control, settings] { return new SubversionSettingsPageWidget(control, settings); }); } } // Internal diff --git a/src/plugins/subversion/settingspage.h b/src/plugins/subversion/settingspage.h index c8dc438d125..6de99983d38 100644 --- a/src/plugins/subversion/settingspage.h +++ b/src/plugins/subversion/settingspage.h @@ -25,17 +25,19 @@ #pragma once -#include <vcsbase/vcsbaseoptionspage.h> +#include <coreplugin/dialogs/ioptionspage.h> + +namespace Core { class IVersionControl; } namespace Subversion { namespace Internal { class SubversionSettings; -class SettingsPage final : public VcsBase::VcsClientOptionsPage +class SubversionSettingsPage final : public Core::IOptionsPage { public: - SettingsPage(Core::IVersionControl *control, SubversionSettings *settings, QObject *parent); + SubversionSettingsPage(Core::IVersionControl *control, SubversionSettings *settings, QObject *parent); }; } // namespace Subversion diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 733f36e21cb..3c8cc503b83 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -231,7 +231,7 @@ SubversionPluginPrivate::SubversionPluginPrivate() : m_client = new SubversionClient(&m_settings); - new SettingsPage(versionControl(), &m_settings, this); + new SubversionSettingsPage(versionControl(), &m_settings, this); new VcsSubmitEditorFactory(&submitParameters, []() { return new SubversionSubmitEditor(&submitParameters); }, this); diff --git a/src/plugins/vcsbase/CMakeLists.txt b/src/plugins/vcsbase/CMakeLists.txt index 1cffe26be04..465cd5ee329 100644 --- a/src/plugins/vcsbase/CMakeLists.txt +++ b/src/plugins/vcsbase/CMakeLists.txt @@ -22,7 +22,6 @@ add_qtc_plugin(VcsBase vcsbasediffeditorcontroller.cpp vcsbasediffeditorcontroller.h vcsbaseeditor.cpp vcsbaseeditor.h vcsbaseeditorconfig.cpp vcsbaseeditorconfig.h - vcsbaseoptionspage.cpp vcsbaseoptionspage.h vcsbaseplugin.cpp vcsbaseplugin.h vcsbasesubmiteditor.cpp vcsbasesubmiteditor.h vcscommand.cpp vcscommand.h diff --git a/src/plugins/vcsbase/vcsbase.pro b/src/plugins/vcsbase/vcsbase.pro index 23259021d8d..2a1dd0a6bcf 100644 --- a/src/plugins/vcsbase/vcsbase.pro +++ b/src/plugins/vcsbase/vcsbase.pro @@ -20,7 +20,6 @@ HEADERS += vcsbase_global.h \ nicknamedialog.h \ vcsoutputwindow.h \ cleandialog.h \ - vcsbaseoptionspage.h \ vcscommand.h \ vcsbaseclient.h \ vcsbaseclientsettings.h \ @@ -47,7 +46,6 @@ SOURCES += vcsplugin.cpp \ nicknamedialog.cpp \ vcsoutputwindow.cpp \ cleandialog.cpp \ - vcsbaseoptionspage.cpp \ vcscommand.cpp \ vcsbaseclient.cpp \ vcsbaseclientsettings.cpp \ diff --git a/src/plugins/vcsbase/vcsbase.qbs b/src/plugins/vcsbase/vcsbase.qbs index df5686db5ca..2ab98604478 100644 --- a/src/plugins/vcsbase/vcsbase.qbs +++ b/src/plugins/vcsbase/vcsbase.qbs @@ -60,8 +60,6 @@ QtcPlugin { "vcsbaseeditor.h", "vcsbaseeditorconfig.cpp", "vcsbaseeditorconfig.h", - "vcsbaseoptionspage.cpp", - "vcsbaseoptionspage.h", "vcsbaseplugin.cpp", "vcsbaseplugin.h", "vcsbasesubmiteditor.cpp", diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.cpp b/src/plugins/vcsbase/vcsbaseoptionspage.cpp deleted file mode 100644 index 2d2ea962eb7..00000000000 --- a/src/plugins/vcsbase/vcsbaseoptionspage.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "vcsbaseoptionspage.h" - -#include "vcsbaseclient.h" -#include "vcsbaseconstants.h" - -#include <coreplugin/icore.h> -#include <coreplugin/iversioncontrol.h> - -#include <utils/qtcassert.h> - -#include <QCoreApplication> - -/*! - \class VcsBase::VcsBaseOptionsPage - - \brief The VcsBaseOptionsPage class is the base class for VCS options pages - providing a common category and icon. - */ - -namespace VcsBase { - -VcsClientOptionsPageWidget::VcsClientOptionsPageWidget() = default; - -VcsClientOptionsPage::VcsClientOptionsPage(Core::IVersionControl *control, VcsBaseClientSettings *settings, - QObject *parent) : - Core::IOptionsPage(parent), - m_settings(settings) -{ - QTC_CHECK(m_settings); - connect(this, &VcsClientOptionsPage::settingsChanged, - control, &Core::IVersionControl::configurationChanged); -} - -void VcsClientOptionsPage::setWidgetFactory(VcsClientOptionsPage::WidgetFactory factory) -{ - QTC_ASSERT(!m_factory, return); - m_factory = factory; -} - -VcsClientOptionsPageWidget *VcsClientOptionsPage::widget() -{ - QTC_ASSERT(m_factory, return nullptr); - if (!m_widget) - m_widget = m_factory(); - QTC_ASSERT(m_widget, return nullptr); - m_widget->setSettings(*m_settings); - return m_widget; -} - -void VcsClientOptionsPage::apply() -{ - QTC_ASSERT(m_widget, return); - const VcsBaseClientSettings newSettings = m_widget->settings(); - if (*m_settings != newSettings) { - *m_settings = newSettings; - emit settingsChanged(); - } -} - -void VcsClientOptionsPage::finish() -{ - delete m_widget; - m_widget = nullptr; -} - -} // namespace VcsBase diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.h b/src/plugins/vcsbase/vcsbaseoptionspage.h deleted file mode 100644 index c4f5567b6cd..00000000000 --- a/src/plugins/vcsbase/vcsbaseoptionspage.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "vcsbase_global.h" - -#include "vcsbaseclientsettings.h" - -#include <coreplugin/dialogs/ioptionspage.h> - -#include <functional> - -namespace Core { class IVersionControl; } - -namespace VcsBase { - -class VCSBASE_EXPORT VcsClientOptionsPageWidget : public Core::IOptionsPageWidget -{ - Q_OBJECT - -public: - VcsClientOptionsPageWidget(); - - void apply() override {} - - virtual void setSettings(const VcsBaseClientSettings &s) = 0; - virtual VcsBaseClientSettings settings() const = 0; -}; - -class VCSBASE_EXPORT VcsClientOptionsPage : public Core::IOptionsPage -{ - Q_OBJECT - -public: - using WidgetFactory = std::function<VcsClientOptionsPageWidget *()>; - - explicit VcsClientOptionsPage(Core::IVersionControl *control, VcsBaseClientSettings *settings, QObject *parent = nullptr); - - VcsClientOptionsPageWidget *widget() override; - void apply() override; - void finish() override; - -signals: - void settingsChanged(); - -protected: - void setWidgetFactory(WidgetFactory factory); - -private: - WidgetFactory m_factory; - VcsClientOptionsPageWidget *m_widget = nullptr; - VcsBaseClientSettings *const m_settings; -}; - -} // namespace VcsBase |