Mercurial: Follow the Fossil settings setup

Change-Id: I3261669991d55c6da5c80c116c2a66c8b7b0d577
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2023-05-15 14:05:39 +02:00
parent 8bdb528f86
commit 1697ff8748
5 changed files with 24 additions and 15 deletions

View File

@@ -81,7 +81,8 @@ QStringList MercurialDiffEditorController::addConfigurationArguments(const QStri
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////
MercurialClient::MercurialClient(MercurialSettings *settings) : VcsBaseClient(settings) MercurialClient::MercurialClient()
: VcsBaseClient(&Internal::settings())
{ {
} }

View File

@@ -16,8 +16,9 @@ class MercurialDiffEditorController;
class MercurialClient : public VcsBase::VcsBaseClient class MercurialClient : public VcsBase::VcsBaseClient
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit MercurialClient(MercurialSettings *settings); MercurialClient();
bool synchronousClone(const Utils::FilePath &workingDir, bool synchronousClone(const Utils::FilePath &workingDir,
const QString &srcLocation, const QString &srcLocation,

View File

@@ -169,9 +169,8 @@ private:
void createRepositoryActions(const Core::Context &context); void createRepositoryActions(const Core::Context &context);
// Variables // Variables
MercurialSettings m_settings; MercurialClient m_client;
MercurialClient m_client{&m_settings}; MercurialSettingsPage m_settingsPage;
MercurialSettingsPage m_settingsPage{&m_settings};
Core::CommandLocator *m_commandLocator = nullptr; Core::CommandLocator *m_commandLocator = nullptr;
Core::ActionContainer *m_mercurialContainer = nullptr; Core::ActionContainer *m_mercurialContainer = nullptr;
@@ -254,7 +253,7 @@ MercurialPluginPrivate::MercurialPluginPrivate()
createMenu(context); createMenu(context);
connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged); connect(&settings(), &AspectContainer::applied, this, &IVersionControl::configurationChanged);
} }
void MercurialPluginPrivate::createMenu(const Core::Context &context) void MercurialPluginPrivate::createMenu(const Core::Context &context)
@@ -633,8 +632,8 @@ void MercurialPluginPrivate::showCommitWidget(const QList<VcsBaseClient::StatusI
const QString branch = vcsTopic(m_submitRepository); const QString branch = vcsTopic(m_submitRepository);
commitEditor->setFields(m_submitRepository, branch, commitEditor->setFields(m_submitRepository, branch,
m_settings.userName.value(), settings().userName(),
m_settings.userEmail.value(), status); settings().userEmail(), status);
} }
void MercurialPluginPrivate::diffFromEditorSelected(const QStringList &files) void MercurialPluginPrivate::diffFromEditorSelected(const QStringList &files)
@@ -716,7 +715,7 @@ bool MercurialPluginPrivate::managesFile(const FilePath &workingDirectory, const
bool MercurialPluginPrivate::isConfigured() const bool MercurialPluginPrivate::isConfigured() const
{ {
const FilePath binary = m_settings.binaryPath.filePath(); const FilePath binary = settings().binaryPath.filePath();
if (binary.isEmpty()) if (binary.isEmpty())
return false; return false;
QFileInfo fi = binary.toFileInfo(); QFileInfo fi = binary.toFileInfo();
@@ -784,7 +783,7 @@ VcsCommand *MercurialPluginPrivate::createInitialCheckoutCommand(const QString &
QStringList args; QStringList args;
args << QLatin1String("clone") << extraArgs << url << localName; args << QLatin1String("clone") << extraArgs << url << localName;
auto command = VcsBaseClient::createVcsCommand(baseDirectory, m_client.processEnvironment()); auto command = VcsBaseClient::createVcsCommand(baseDirectory, m_client.processEnvironment());
command->addJob({m_settings.binaryPath.filePath(), args}, -1); command->addJob({settings().binaryPath.filePath(), args}, -1);
return command; return command;
} }

View File

@@ -46,15 +46,15 @@ MercurialSettings::MercurialSettings()
// MercurialSettingsPage // MercurialSettingsPage
MercurialSettingsPage::MercurialSettingsPage(MercurialSettings *settings) MercurialSettingsPage::MercurialSettingsPage()
{ {
setId(VcsBase::Constants::VCS_ID_MERCURIAL); setId(VcsBase::Constants::VCS_ID_MERCURIAL);
setDisplayName(Tr::tr("Mercurial")); setDisplayName(Tr::tr("Mercurial"));
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
setSettings(settings); setSettings(&settings());
setLayouter([settings](QWidget *widget) { setLayouter([](QWidget *widget) {
MercurialSettings &s = *settings; MercurialSettings &s = settings();
using namespace Layouting; using namespace Layouting;
Column { Column {
@@ -85,4 +85,10 @@ MercurialSettingsPage::MercurialSettingsPage(MercurialSettings *settings)
}); });
} }
MercurialSettings &settings()
{
static MercurialSettings theSettings;
return theSettings;
}
} // Mercurial::Internal } // Mercurial::Internal

View File

@@ -18,10 +18,12 @@ public:
Utils::StringAspect diffIgnoreBlankLines; Utils::StringAspect diffIgnoreBlankLines;
}; };
MercurialSettings &settings();
class MercurialSettingsPage final : public Core::IOptionsPage class MercurialSettingsPage final : public Core::IOptionsPage
{ {
public: public:
explicit MercurialSettingsPage(MercurialSettings *settings); MercurialSettingsPage();
}; };
} // Mercurial::Internal } // Mercurial::Internal