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 "vcsbasetr.h"
#include <coreplugin/dialogs/ioptionspage.h>
#include <coreplugin/vcsmanager.h>
#include <utils/environment.h>
@@ -28,24 +29,16 @@ static QString sshPasswordPromptDefault()
return QLatin1String("ssh-askpass");
}
static CommonVcsSettings *s_instance;
CommonVcsSettings &commonSettings()
{
return *s_instance;
static CommonVcsSettings settings;
return settings;
}
CommonVcsSettings::CommonVcsSettings()
{
s_instance = this;
setAutoApply(false);
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.setExpectedKind(PathChooser::File);
@@ -118,4 +111,23 @@ CommonVcsSettings::CommonVcsSettings()
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

View File

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

View File

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