diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp index 0c2d11b9f31..110e990447d 100644 --- a/src/plugins/bazaar/bazaarplugin.cpp +++ b/src/plugins/bazaar/bazaarplugin.cpp @@ -215,8 +215,8 @@ public: void createRepositoryActions(const Core::Context &context); // Variables + BazaarSettings m_setting; BazaarClient m_client; - BazaarSettingsPage m_settingPage; VcsSubmitEditorFactory m_submitEditorFactory { submitEditorParameters, diff --git a/src/plugins/bazaar/bazaarsettings.cpp b/src/plugins/bazaar/bazaarsettings.cpp index 394864ea541..231562edc1b 100644 --- a/src/plugins/bazaar/bazaarsettings.cpp +++ b/src/plugins/bazaar/bazaarsettings.cpp @@ -16,10 +16,21 @@ using namespace Utils; namespace Bazaar::Internal { +static BazaarSettings *theSettings; + +BazaarSettings &settings() +{ + return *theSettings; +} + BazaarSettings::BazaarSettings() { + theSettings = this; + setSettingsGroup(Constants::BAZAAR); - setAutoApply(false); + setId(VcsBase::Constants::VCS_ID_BAZAAR); + setDisplayName(Tr::tr("Bazaar")); + setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); registerAspect(&binaryPath); binaryPath.setDisplayStyle(StringAspect::PathChooserDisplay); @@ -66,52 +77,31 @@ BazaarSettings::BazaarSettings() registerAspect(&logCount); timeout.setLabelText(Tr::tr("Timeout:")); timeout.setSuffix(Tr::tr("s")); -} -// BazaarSettingsPage - -BazaarSettingsPage::BazaarSettingsPage() -{ - setId(VcsBase::Constants::VCS_ID_BAZAAR); - setDisplayName(Tr::tr("Bazaar")); - setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setSettings(&settings()); - - setLayouter([](QWidget *widget) { - BazaarSettings &s = settings(); + setLayouter([this](QWidget *widget) { using namespace Layouting; Column { Group { title(Tr::tr("Configuration")), - Row { s.binaryPath } + Row { binaryPath } }, Group { title(Tr::tr("User")), Form { - s.userName, br, - s.userEmail + userName, br, + userEmail } }, Group { title(Tr::tr("Miscellaneous")), - Row { - s.logCount, - s.timeout, - st - } + Row { logCount, timeout, st } }, st }.attachTo(widget); }); } -BazaarSettings &settings() -{ - static BazaarSettings theSettings; - return theSettings; -} - } // Bazaar::Internal diff --git a/src/plugins/bazaar/bazaarsettings.h b/src/plugins/bazaar/bazaarsettings.h index 971147175ae..24643a2d4cd 100644 --- a/src/plugins/bazaar/bazaarsettings.h +++ b/src/plugins/bazaar/bazaarsettings.h @@ -3,8 +3,6 @@ #pragma once -#include - #include namespace Bazaar::Internal { @@ -24,10 +22,4 @@ public: BazaarSettings &settings(); -class BazaarSettingsPage final : public Core::IOptionsPage -{ -public: - BazaarSettingsPage(); -}; - } // Bazaar::Internal diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index adfab49ef84..076f2ad8b28 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -288,6 +288,7 @@ private: bool commit(const QString &messageFile, const QStringList &subVersionFileList); void cleanCommitMessageFile(); + CvsSettings m_setting; CvsClient *m_client = nullptr; QString m_commitMessageFileName; @@ -320,8 +321,6 @@ private: QAction *m_menuAction = nullptr; - CvsSettingsPage m_settingsPage; - public: VcsSubmitEditorFactory submitEditorFactory { submitParameters, diff --git a/src/plugins/cvs/cvssettings.cpp b/src/plugins/cvs/cvssettings.cpp index 693fb36016a..f18feeed661 100644 --- a/src/plugins/cvs/cvssettings.cpp +++ b/src/plugins/cvs/cvssettings.cpp @@ -17,12 +17,22 @@ using namespace Utils; namespace Cvs::Internal { -// CvsSettings +static CvsSettings *theSettings; + +CvsSettings &settings() +{ + return *theSettings; +} CvsSettings::CvsSettings() { + theSettings = this; setSettingsGroup("CVS"); + setId(VcsBase::Constants::VCS_ID_CVS); + setDisplayName(Tr::tr("CVS")); + setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); + registerAspect(&binaryPath); binaryPath.setDefaultValue("cvs" QTC_HOST_EXE_SUFFIX); binaryPath.setDisplayStyle(StringAspect::PathChooserDisplay); @@ -55,6 +65,30 @@ CvsSettings::CvsSettings() registerAspect(&diffIgnoreBlankLines); diffIgnoreBlankLines.setSettingsKey("DiffIgnoreBlankLines"); + + setLayouter([this](QWidget *widget) { + using namespace Layouting; + Column { + Group { + title(Tr::tr("Configuration")), + Form { + binaryPath, br, + cvsRoot + } + }, + Group { + title(Tr::tr("Miscellaneous")), + Column { + Form { + timeout, br, + diffOptions, + }, + describeByCommitId, + } + }, + st + }.attachTo(widget); + }); } QStringList CvsSettings::addOptions(const QStringList &args) const @@ -70,44 +104,4 @@ QStringList CvsSettings::addOptions(const QStringList &args) const return rc; } -CvsSettingsPage::CvsSettingsPage() -{ - setId(VcsBase::Constants::VCS_ID_CVS); - setDisplayName(Tr::tr("CVS")); - setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setSettings(&settings()); - - setLayouter([](QWidget *widget) { - CvsSettings &s = settings(); - using namespace Layouting; - - Column { - Group { - title(Tr::tr("Configuration")), - Form { - s.binaryPath, br, - s.cvsRoot - } - }, - Group { - title(Tr::tr("Miscellaneous")), - Column { - Form { - s.timeout, br, - s.diffOptions, - }, - s.describeByCommitId, - } - }, - st - }.attachTo(widget); - }); -} - -CvsSettings &settings() -{ - static CvsSettings theSettings; - return theSettings; -} - } // Cvs::Internal diff --git a/src/plugins/cvs/cvssettings.h b/src/plugins/cvs/cvssettings.h index b500ee8b838..0c2e5442a62 100644 --- a/src/plugins/cvs/cvssettings.h +++ b/src/plugins/cvs/cvssettings.h @@ -3,8 +3,6 @@ #pragma once -#include - #include namespace Cvs::Internal { @@ -25,10 +23,4 @@ public: CvsSettings &settings(); -class CvsSettingsPage final : public Core::IOptionsPage -{ -public: - CvsSettingsPage(); -}; - } // Cvs::Internal diff --git a/src/plugins/fossil/fossilplugin.cpp b/src/plugins/fossil/fossilplugin.cpp index 71833aabc1f..4979b1d1203 100644 --- a/src/plugins/fossil/fossilplugin.cpp +++ b/src/plugins/fossil/fossilplugin.cpp @@ -187,10 +187,9 @@ public: bool pullOrPush(SyncMode mode); // Variables + FossilSettings m_settings; FossilClient m_client; - OptionsPage optionPage; - VcsSubmitEditorFactory submitEditorFactory { submitEditorParameters, [] { return new CommitEditor; }, diff --git a/src/plugins/fossil/fossilsettings.cpp b/src/plugins/fossil/fossilsettings.cpp index 4ee13bd698a..ca248021143 100644 --- a/src/plugins/fossil/fossilsettings.cpp +++ b/src/plugins/fossil/fossilsettings.cpp @@ -17,10 +17,21 @@ using namespace Utils; namespace Fossil::Internal { +static FossilSettings *theSettings; + +FossilSettings &settings() +{ + return *theSettings; +} + FossilSettings::FossilSettings() { + theSettings = this; + setSettingsGroup(Constants::FOSSIL); - setAutoApply(false); + setId(Constants::VCS_ID_FOSSIL); + setDisplayName(Tr::tr("Fossil")); + setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); registerAspect(&binaryPath); binaryPath.setDisplayStyle(StringAspect::PathChooserDisplay); @@ -94,69 +105,38 @@ FossilSettings::FossilSettings() logCount.setLabelText(Tr::tr("Log count:")); logCount.setToolTip(Tr::tr("The number of recent commit log entries to show. " "Choose 0 to see all entries.")); -} - -// OptionsPage - -class OptionsPageWidget final : public Core::IOptionsPageWidget -{ -public: - OptionsPageWidget() - { - FossilSettings &s = settings(); + setLayouter([this](QWidget *widget) { using namespace Layouting; - Column { Group { title(Tr::tr("Configuration")), - Row { s.binaryPath } + Row { binaryPath } }, Group { title(Tr::tr("Local Repositories")), - Row { s.defaultRepoPath } + Row { defaultRepoPath } }, + Group { title(Tr::tr("User")), - Form { - s.userName, br, - s.sslIdentityFile + Form { + userName, br, + sslIdentityFile } }, Group { title(Tr::tr("Miscellaneous")), - Column { - Row { - s.logCount, - s.timelineWidth, - s.timeout, - st - }, - s.disableAutosync + Column { + Row { logCount, timelineWidth, timeout, st }, + disableAutosync }, }, st - - }.attachTo(this); - - setOnApply([] { settings().apply(); }); - } -}; - -OptionsPage::OptionsPage() -{ - setId(Constants::VCS_ID_FOSSIL); - setDisplayName(Tr::tr("Fossil")); - setWidgetCreator([] { return new OptionsPageWidget; }); - setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); -} - -FossilSettings &settings() -{ - static FossilSettings theSettings; - return theSettings; + }.attachTo(widget); + }); } } // Fossil::Internal diff --git a/src/plugins/fossil/fossilsettings.h b/src/plugins/fossil/fossilsettings.h index e373a30cee7..eeea6041bdc 100644 --- a/src/plugins/fossil/fossilsettings.h +++ b/src/plugins/fossil/fossilsettings.h @@ -3,7 +3,6 @@ #pragma once -#include #include namespace Fossil::Internal { @@ -44,10 +43,4 @@ struct RepositorySettings } }; -class OptionsPage : public Core::IOptionsPage -{ -public: - OptionsPage(); -}; - } // Fossil::Internal diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 0401eb835ed..7443f0baa39 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -397,6 +397,7 @@ public: void onApplySettings(); + GitSettings setting; CommandLocator *m_commandLocator = nullptr; QAction *m_menuAction = nullptr; @@ -433,8 +434,6 @@ public: std::unique_ptr m_blameMark; QMetaObject::Connection m_blameCursorPosConn; - GitSettingsPage settingPage; - GitGrep gitGrep{&m_gitClient}; VcsEditorFactory svnLogEditorFactory { diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index 965a62c728c..f092dd74e92 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -17,8 +17,21 @@ using namespace VcsBase; namespace Git::Internal { +static GitSettings *theSettings; + +GitSettings &settings() +{ + return *theSettings; +} + GitSettings::GitSettings() { + theSettings = this; + + setId(VcsBase::Constants::VCS_ID_GIT); + setDisplayName(Tr::tr("Git")); + setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); + setSettingsGroup("Git"); path.setDisplayStyle(StringAspect::LineEditDisplay); @@ -117,6 +130,44 @@ GitSettings::GitSettings() timeout.setDefaultValue(Utils::HostOsInfo::isWindowsHost() ? 60 : 30); + setLayouter([this](QWidget *widget) { + using namespace Layouting; + + Column { + Group { + title(Tr::tr("Configuration")), + Column { + Row { path }, + winSetHomeEnvironment, + } + }, + + Group { + title(Tr::tr("Miscellaneous")), + Column { + Row { logCount, timeout, st }, + pullRebase + } + }, + + Group { + title(Tr::tr("Gitk")), + Row { gitkOptions } + }, + + Group { + title(Tr::tr("Repository Browser")), + Row { repositoryBrowserCmd } + }, + + Group { + title(Tr::tr("Instant Blame")), + Row { instantBlame } + }, + + st + }.attachTo(widget); + }); connect(&binaryPath, &StringAspect::valueChanged, this, [this] { tryResolve = true; }); connect(&path, &StringAspect::valueChanged, this, [this] { tryResolve = true; }); } @@ -146,60 +197,4 @@ FilePath GitSettings::gitExecutable(bool *ok, QString *errorMessage) const return resolvedBinPath; } -// GitSettingsPage - -GitSettingsPage::GitSettingsPage() -{ - setId(VcsBase::Constants::VCS_ID_GIT); - setDisplayName(Tr::tr("Git")); - setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setSettings(&settings()); - - setLayouter([](QWidget *widget) { - GitSettings &s = settings(); - using namespace Layouting; - - Column { - Group { - title(Tr::tr("Configuration")), - Column { - Row { s.path }, - s.winSetHomeEnvironment, - } - }, - - Group { - title(Tr::tr("Miscellaneous")), - Column { - Row { s.logCount, s.timeout, st }, - s.pullRebase - } - }, - - Group { - title(Tr::tr("Gitk")), - Row { s.gitkOptions } - }, - - Group { - title(Tr::tr("Repository Browser")), - Row { s.repositoryBrowserCmd } - }, - - Group { - title(Tr::tr("Instant Blame")), - Row { s.instantBlame } - }, - - st - }.attachTo(widget); - }); -} - -GitSettings &settings() -{ - static GitSettings theSettings; - return theSettings; -} - } // Git::Internal diff --git a/src/plugins/git/gitsettings.h b/src/plugins/git/gitsettings.h index d9976de838c..3899fdada58 100644 --- a/src/plugins/git/gitsettings.h +++ b/src/plugins/git/gitsettings.h @@ -3,7 +3,6 @@ #pragma once -#include #include namespace Git::Internal { @@ -48,10 +47,4 @@ public: GitSettings &settings(); -class GitSettingsPage final : public Core::IOptionsPage -{ -public: - GitSettingsPage(); -}; - } // Git::Internal diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index 374484a6a3b..a6bd955c3a7 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -169,8 +169,8 @@ private: void createRepositoryActions(const Core::Context &context); // Variables + MercurialSettings m_settings; MercurialClient m_client; - MercurialSettingsPage m_settingsPage; Core::CommandLocator *m_commandLocator = nullptr; Core::ActionContainer *m_mercurialContainer = nullptr; diff --git a/src/plugins/mercurial/mercurialsettings.cpp b/src/plugins/mercurial/mercurialsettings.cpp index f19ea172833..dd63faddc05 100644 --- a/src/plugins/mercurial/mercurialsettings.cpp +++ b/src/plugins/mercurial/mercurialsettings.cpp @@ -14,8 +14,22 @@ using namespace Utils; namespace Mercurial::Internal { +static MercurialSettings *theSettings; + +MercurialSettings &settings() +{ + return *theSettings; +} + MercurialSettings::MercurialSettings() { + theSettings = this; + + setId(VcsBase::Constants::VCS_ID_MERCURIAL); + setDisplayName(Tr::tr("Mercurial")); + setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); + setSettings(&settings()); + setSettingsGroup("Mercurial"); setAutoApply(false); @@ -42,42 +56,27 @@ MercurialSettings::MercurialSettings() registerAspect(&diffIgnoreBlankLines); diffIgnoreBlankLines.setSettingsKey("diffIgnoreBlankLines"); -} -// MercurialSettingsPage - -MercurialSettingsPage::MercurialSettingsPage() -{ - setId(VcsBase::Constants::VCS_ID_MERCURIAL); - setDisplayName(Tr::tr("Mercurial")); - setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setSettings(&settings()); - - setLayouter([](QWidget *widget) { - MercurialSettings &s = settings(); + setLayouter([this](QWidget *widget) { using namespace Layouting; Column { Group { title(Tr::tr("Configuration")), - Row { s.binaryPath } + Row { binaryPath } }, Group { title(Tr::tr("User")), Form { - s.userName, br, - s.userEmail + userName, br, + userEmail } }, Group { title(Tr::tr("Miscellaneous")), - Row { - s.logCount, - s.timeout, - st - } + Row { logCount, timeout, st } }, st @@ -85,10 +84,4 @@ MercurialSettingsPage::MercurialSettingsPage() }); } -MercurialSettings &settings() -{ - static MercurialSettings theSettings; - return theSettings; -} - } // Mercurial::Internal diff --git a/src/plugins/mercurial/mercurialsettings.h b/src/plugins/mercurial/mercurialsettings.h index 34c6693c93e..08c8fa41544 100644 --- a/src/plugins/mercurial/mercurialsettings.h +++ b/src/plugins/mercurial/mercurialsettings.h @@ -3,8 +3,6 @@ #pragma once -#include - #include namespace Mercurial::Internal { @@ -20,10 +18,4 @@ public: MercurialSettings &settings(); -class MercurialSettingsPage final : public Core::IOptionsPage -{ -public: - MercurialSettingsPage(); -}; - } // Mercurial::Internal diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index cdcfbb96d63..957947a89a6 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -261,6 +261,7 @@ private: const QStringList m_svnDirectories; + SubversionSettings m_settings; SubversionClient *m_client = nullptr; QString m_commitMessageFileName; FilePath m_commitRepository; @@ -288,8 +289,6 @@ private: QAction *m_menuAction = nullptr; - SubversionSettingsPage m_settingsPage; - public: VcsSubmitEditorFactory submitEditorFactory { submitParameters, diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp index 1e56e27ccb4..98945ab82ef 100644 --- a/src/plugins/subversion/subversionsettings.cpp +++ b/src/plugins/subversion/subversionsettings.cpp @@ -5,25 +5,31 @@ #include "subversiontr.h" -#include #include #include #include #include -#include - using namespace Utils; using namespace VcsBase; namespace Subversion::Internal { -// SubversionSettings +static SubversionSettings *theSettings; + +SubversionSettings &settings() +{ + return *theSettings; +} SubversionSettings::SubversionSettings() { - setAutoApply(false); + theSettings = this; + + setId(VcsBase::Constants::VCS_ID_SUBVERSION); + setDisplayName(Tr::tr("Subversion")); + setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); setSettingsGroup("Subversion"); registerAspect(&binaryPath); @@ -68,47 +74,33 @@ SubversionSettings::SubversionSettings() timeout.setSuffix(Tr::tr("s")); QObject::connect(&useAuthentication, &BaseAspect::changed, this, [this] { - userName.setEnabled(useAuthentication.value()); - password.setEnabled(useAuthentication.value()); + userName.setEnabled(useAuthentication()); + password.setEnabled(useAuthentication()); }); -} -bool SubversionSettings::hasAuthentication() const -{ - return useAuthentication.value() && !userName.value().isEmpty(); -} - -SubversionSettingsPage::SubversionSettingsPage() -{ - setId(VcsBase::Constants::VCS_ID_SUBVERSION); - setDisplayName(Tr::tr("Subversion")); - setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setSettings(&settings()); - - setLayouter([](QWidget *widget) { - SubversionSettings &s = settings(); + setLayouter([this](QWidget *widget) { using namespace Layouting; Column { Group { title(Tr::tr("Configuration")), - Column { s.binaryPath } + Column { binaryPath } }, Group { title(Tr::tr("Authentication")), - s.useAuthentication.groupChecker(), + useAuthentication.groupChecker(), Form { - s.userName, br, - s.password, + userName, br, + password, } }, Group { title(Tr::tr("Miscellaneous")), Column { - Row { s.logCount, s.timeout, st }, - s.spaceIgnorantAnnotation, + Row { logCount, timeout, st }, + spaceIgnorantAnnotation, } }, @@ -117,10 +109,9 @@ SubversionSettingsPage::SubversionSettingsPage() }); } -SubversionSettings &settings() +bool SubversionSettings::hasAuthentication() const { - static SubversionSettings theSettings; - return theSettings; + return useAuthentication() && !userName().isEmpty(); } } // Subversion::Internal diff --git a/src/plugins/subversion/subversionsettings.h b/src/plugins/subversion/subversionsettings.h index 080dbd6c0ce..49aaec171b1 100644 --- a/src/plugins/subversion/subversionsettings.h +++ b/src/plugins/subversion/subversionsettings.h @@ -3,8 +3,6 @@ #pragma once -#include - #include namespace Subversion::Internal { @@ -25,10 +23,4 @@ public: SubversionSettings &settings(); -class SubversionSettingsPage final : public Core::IOptionsPage -{ -public: - SubversionSettingsPage(); -}; - } // Subversion::Internal diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.h b/src/plugins/vcsbase/vcsbaseclientsettings.h index 102405c4bfc..9a034e5f924 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.h +++ b/src/plugins/vcsbase/vcsbaseclientsettings.h @@ -5,11 +5,11 @@ #include "vcsbase_global.h" -#include +#include namespace VcsBase { -class VCSBASE_EXPORT VcsBaseSettings : public Utils::AspectContainer +class VCSBASE_EXPORT VcsBaseSettings : public Core::PagedSettings { public: VcsBaseSettings();