VcsBase: Contruct CommonSettings on first access

Change-Id: Ifa425e2f1952017769accd855e33d1fa53b7b6c9
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2023-07-18 12:14:21 +02:00
parent 1042323e8c
commit 89a64a19e8
3 changed files with 27 additions and 17 deletions

View File

@@ -6,6 +6,7 @@
#include "vcsbaseconstants.h" #include "vcsbaseconstants.h"
#include "vcsbasetr.h" #include "vcsbasetr.h"
#include <coreplugin/dialogs/ioptionspage.h>
#include <coreplugin/vcsmanager.h> #include <coreplugin/vcsmanager.h>
#include <utils/environment.h> #include <utils/environment.h>
@@ -28,24 +29,16 @@ static QString sshPasswordPromptDefault()
return QLatin1String("ssh-askpass"); return QLatin1String("ssh-askpass");
} }
static CommonVcsSettings *s_instance;
CommonVcsSettings &commonSettings() CommonVcsSettings &commonSettings()
{ {
return *s_instance; static CommonVcsSettings settings;
return settings;
} }
CommonVcsSettings::CommonVcsSettings() CommonVcsSettings::CommonVcsSettings()
{ {
s_instance = this; setAutoApply(false);
setSettingsGroup("VCS"); setSettingsGroup("VCS");
setId(Constants::VCS_COMMON_SETTINGS_ID);
setDisplayName(Tr::tr("General"));
setCategory(Constants::VCS_SETTINGS_CATEGORY);
// The following act as blueprint for other pages in the same category:
setDisplayCategory(Tr::tr("Version Control"));
setCategoryIconPath(":/vcsbase/images/settingscategory_vcs.png");
nickNameMailMap.setSettingsKey("NickNameMailMap"); nickNameMailMap.setSettingsKey("NickNameMailMap");
nickNameMailMap.setExpectedKind(PathChooser::File); nickNameMailMap.setExpectedKind(PathChooser::File);
@@ -118,4 +111,23 @@ CommonVcsSettings::CommonVcsSettings()
readSettings(); readSettings();
} }
// CommonVcsSettingsPage
class CommonVcsSettingsPage final : public Core::IOptionsPage
{
public:
CommonVcsSettingsPage()
{
setId(Constants::VCS_COMMON_SETTINGS_ID);
setDisplayName(Tr::tr("General"));
setCategory(Constants::VCS_SETTINGS_CATEGORY);
// The following act as blueprint for other pages in the same category:
setDisplayCategory(Tr::tr("Version Control"));
setCategoryIconPath(":/vcsbase/images/settingscategory_vcs.png");
setSettingsProvider([] { return &commonSettings(); });
}
};
const CommonVcsSettingsPage settingsPage;
} // VcsBase::Internal } // VcsBase::Internal

View File

@@ -3,12 +3,11 @@
#pragma once #pragma once
#include <coreplugin/dialogs/ioptionspage.h> #include <utils/aspects.h>
#include <coreplugin/iversioncontrol.h>
namespace VcsBase::Internal { namespace VcsBase::Internal {
class CommonVcsSettings : public Core::PagedSettings class CommonVcsSettings final : public Utils::AspectContainer
{ {
public: public:
CommonVcsSettings(); CommonVcsSettings();

View File

@@ -40,7 +40,7 @@ public:
explicit VcsPluginPrivate(VcsPlugin *plugin) explicit VcsPluginPrivate(VcsPlugin *plugin)
: q(plugin) : q(plugin)
{ {
QObject::connect(&m_settings, &AspectContainer::changed, QObject::connect(&commonSettings(), &AspectContainer::changed,
[this] { slotSettingsChanged(); }); [this] { slotSettingsChanged(); });
slotSettingsChanged(); slotSettingsChanged();
} }
@@ -57,7 +57,7 @@ public:
void populateNickNameModel() void populateNickNameModel()
{ {
QString errorMessage; QString errorMessage;
if (!NickNameDialog::populateModelFromMailCapFile(m_settings.nickNameMailMap(), if (!NickNameDialog::populateModelFromMailCapFile(commonSettings().nickNameMailMap(),
m_nickNameModel, m_nickNameModel,
&errorMessage)) { &errorMessage)) {
qWarning("%s", qPrintable(errorMessage)); qWarning("%s", qPrintable(errorMessage));
@@ -71,7 +71,6 @@ public:
} }
VcsPlugin *q; VcsPlugin *q;
CommonVcsSettings m_settings;
QStandardItemModel *m_nickNameModel = nullptr; QStandardItemModel *m_nickNameModel = nullptr;
}; };