aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
authorhjk <[email protected]>2021-03-16 06:00:25 +0100
committerhjk <[email protected]>2021-03-19 13:39:33 +0000
commitaa69415ac780db4789aa36033b5a1fd0d9c6a2fa (patch)
tree8c4bc90e1f46d0a0ec36d2ce1c44d7d3e438221f /src/plugins/git/gitclient.cpp
parentf2c34e51e96a320cf39635ed6dbb1ee1514a091c (diff)
Git: Aspectify settings
Change-Id: I87dfeba360967cc77cc230811bcd9f67b3ea6e38 Reviewed-by: Orgad Shaneh <[email protected]>
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r--src/plugins/git/gitclient.cpp65
1 files changed, 33 insertions, 32 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 09053e77ba4..5f9436692b6 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -493,17 +493,16 @@ class BaseGitDiffArgumentsWidget : public VcsBaseEditorConfig
Q_OBJECT
public:
- BaseGitDiffArgumentsWidget(VcsBaseClientSettings &settings, QToolBar *toolBar) :
+ BaseGitDiffArgumentsWidget(GitSettings &settings, QToolBar *toolBar) :
VcsBaseEditorConfig(toolBar)
{
m_patienceButton
= addToggleButton("--patience", tr("Patience"),
tr("Use the patience algorithm for calculating the differences."));
- mapSetting(m_patienceButton, settings.boolPointer(GitSettings::diffPatienceKey));
+ mapSetting(m_patienceButton, &settings.diffPatience);
m_ignoreWSButton = addToggleButton("--ignore-space-change", tr("Ignore Whitespace"),
tr("Ignore whitespace only changes."));
- mapSetting(m_ignoreWSButton,
- settings.boolPointer(GitSettings::ignoreSpaceChangesInDiffKey));
+ mapSetting(m_ignoreWSButton, &settings.ignoreSpaceChangesInDiff);
}
protected:
@@ -516,15 +515,15 @@ class GitBlameArgumentsWidget : public VcsBaseEditorConfig
Q_OBJECT
public:
- GitBlameArgumentsWidget(VcsBaseClientSettings &settings, QToolBar *toolBar) :
+ GitBlameArgumentsWidget(GitSettings &settings, QToolBar *toolBar) :
VcsBaseEditorConfig(toolBar)
{
mapSetting(addToggleButton(QString(), tr("Omit Date"),
tr("Hide the date of a change from the output.")),
- settings.boolPointer(GitSettings::omitAnnotationDateKey));
+ &settings.omitAnnotationDate);
mapSetting(addToggleButton("-w", tr("Ignore Whitespace"),
tr("Ignore whitespace only changes.")),
- settings.boolPointer(GitSettings::ignoreSpaceChangesInBlameKey));
+ &settings.ignoreSpaceChangesInBlame);
const QList<ChoiceItem> logChoices = {
ChoiceItem(tr("No Move Detection"), ""),
@@ -533,7 +532,7 @@ public:
ChoiceItem(tr("Detect Moves and Copies Between Files"), "-M -C -C")
};
mapSetting(addChoices(tr("Move detection"), {}, logChoices),
- settings.intPointer(GitSettings::blameMoveDetection));
+ &settings.blameMoveDetection);
addReloadButton();
}
@@ -544,13 +543,13 @@ class BaseGitLogArgumentsWidget : public BaseGitDiffArgumentsWidget
Q_OBJECT
public:
- BaseGitLogArgumentsWidget(VcsBaseClientSettings &settings, GitEditorWidget *editor) :
+ BaseGitLogArgumentsWidget(GitSettings &settings, GitEditorWidget *editor) :
BaseGitDiffArgumentsWidget(settings, editor->toolBar())
{
QToolBar *toolBar = editor->toolBar();
QAction *diffButton = addToggleButton(patchOption, tr("Diff"),
tr("Show difference."));
- mapSetting(diffButton, settings.boolPointer(GitSettings::logDiffKey));
+ mapSetting(diffButton, &settings.logDiff);
connect(diffButton, &QAction::toggled, m_patienceButton, &QAction::setVisible);
connect(diffButton, &QAction::toggled, m_ignoreWSButton, &QAction::setVisible);
m_patienceButton->setVisible(diffButton->isChecked());
@@ -585,27 +584,27 @@ class GitLogArgumentsWidget : public BaseGitLogArgumentsWidget
Q_OBJECT
public:
- GitLogArgumentsWidget(VcsBaseClientSettings &settings, bool fileRelated, GitEditorWidget *editor) :
+ GitLogArgumentsWidget(GitSettings &settings, bool fileRelated, GitEditorWidget *editor) :
BaseGitLogArgumentsWidget(settings, editor)
{
QAction *firstParentButton =
addToggleButton({"-m", "--first-parent"},
tr("First Parent"),
tr("Follow only the first parent on merge commits."));
- mapSetting(firstParentButton, settings.boolPointer(GitSettings::firstParentKey));
+ mapSetting(firstParentButton, &settings.firstParent);
QAction *graphButton = addToggleButton(graphArguments(), tr("Graph"),
tr("Show textual graph log."));
- mapSetting(graphButton, settings.boolPointer(GitSettings::graphLogKey));
+ mapSetting(graphButton, &settings.graphLog);
QAction *colorButton = addToggleButton(QStringList{colorOption},
tr("Color"), tr("Use colors in log."));
- mapSetting(colorButton, settings.boolPointer(GitSettings::colorLogKey));
+ mapSetting(colorButton, &settings.colorLog);
if (fileRelated) {
QAction *followButton = addToggleButton(
"--follow", tr("Follow"),
tr("Show log also for previous names of the file."));
- mapSetting(followButton, settings.boolPointer(GitSettings::followRenamesKey));
+ mapSetting(followButton, &settings.followRenames);
}
addReloadButton();
@@ -644,14 +643,14 @@ class GitRefLogArgumentsWidget : public BaseGitLogArgumentsWidget
Q_OBJECT
public:
- GitRefLogArgumentsWidget(VcsBaseClientSettings &settings, GitEditorWidget *editor) :
+ GitRefLogArgumentsWidget(GitSettings &settings, GitEditorWidget *editor) :
BaseGitLogArgumentsWidget(settings, editor)
{
QAction *showDateButton =
addToggleButton("--date=iso",
tr("Show Date"),
tr("Show date instead of sequence."));
- mapSetting(showDateButton, settings.boolPointer(GitSettings::refLogShowDateKey));
+ mapSetting(showDateButton, &settings.refLogShowDate);
addReloadButton();
}
@@ -784,9 +783,8 @@ static inline void msgCannotRun(const QStringList &args, const QString &workingD
// ---------------- GitClient
-GitClient::GitClient(GitSettings *settings) : VcsBase::VcsBaseClientImpl(settings),
- m_cachedGitVersion(0),
- m_disableEditor(false)
+GitClient::GitClient(GitSettings *settings)
+ : VcsBase::VcsBaseClientImpl(nullptr, settings)
{
m_instance = this;
m_gitQtcEditor = QString::fromLatin1("\"%1\" -client -block -pid %2")
@@ -799,6 +797,11 @@ GitClient *GitClient::instance()
return m_instance;
}
+GitSettings &GitClient::settings()
+{
+ return static_cast<GitSettings &>(m_instance->baseSettings());
+}
+
QString GitClient::findRepositoryForDirectory(const QString &directory) const
{
if (directory.isEmpty() || directory.endsWith("/.git") || directory.contains("/.git/"))
@@ -977,8 +980,8 @@ void GitClient::requestReload(const QString &documentId, const QString &source,
QTC_ASSERT(document, return);
GitBaseDiffEditorController *controller = factory(document);
QTC_ASSERT(controller, return);
- controller->setVcsBinary(settings().binaryPath());
- controller->setVcsTimeoutS(settings().vcsTimeoutS());
+ controller->setVcsBinary(settings().binaryPath.filePath());
+ controller->setVcsTimeoutS(settings().timeout.value());
controller->setProcessEnvironment(processEnvironment());
controller->setWorkingDirectory(workingDirectory);
controller->initialize();
@@ -1118,7 +1121,7 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName,
editor->setWorkingDirectory(workingDir);
QStringList arguments = {"log", decorateOption};
- int logCount = settings().intValue(GitSettings::logCountKey);
+ int logCount = settings().logCount.value();
if (logCount > 0)
arguments << "-n" << QString::number(logCount);
@@ -1171,7 +1174,7 @@ void GitClient::reflog(const QString &workingDirectory, const QString &ref)
QStringList arguments = {"reflog", noColorOption, decorateOption};
arguments << argWidget->arguments();
- int logCount = settings().intValue(GitSettings::logCountKey);
+ int logCount = settings().logCount.value();
if (logCount > 0)
arguments << "-n" << QString::number(logCount);
@@ -2194,16 +2197,14 @@ bool GitClient::synchronousApplyPatch(const QString &workingDirectory,
QProcessEnvironment GitClient::processEnvironment() const
{
QProcessEnvironment environment = VcsBaseClientImpl::processEnvironment();
- QString gitPath = settings().stringValue(GitSettings::pathKey);
+ QString gitPath = settings().path.value();
if (!gitPath.isEmpty()) {
gitPath += HostOsInfo::pathListSeparator();
gitPath += environment.value("PATH");
environment.insert("PATH", gitPath);
}
- if (HostOsInfo::isWindowsHost()
- && settings().boolValue(GitSettings::winSetHomeEnvironmentKey)) {
+ if (HostOsInfo::isWindowsHost() && settings().winSetHomeEnvironment.value())
environment.insert("HOME", QDir::toNativeSeparators(QDir::homePath()));
- }
environment.insert("GIT_EDITOR", m_disableEditor ? "true" : m_gitQtcEditor);
return environment;
}
@@ -2551,7 +2552,7 @@ void GitClient::launchGitK(const QString &workingDirectory, const QString &fileN
void GitClient::launchRepositoryBrowser(const QString &workingDirectory) const
{
- const QString repBrowserBinary = settings().stringValue(GitSettings::repositoryBrowserCmd);
+ const QString repBrowserBinary = settings().repositoryBrowserCmd.value();
if (!repBrowserBinary.isEmpty())
QProcess::startDetached(repBrowserBinary, {workingDirectory}, workingDirectory);
}
@@ -2571,7 +2572,7 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
binary = wish;
}
}
- const QString gitkOpts = settings().stringValue(GitSettings::gitkOptionsKey);
+ const QString gitkOpts = settings().gitkOptions.value();
if (!gitkOpts.isEmpty())
arguments.append(QtcProcess::splitArgs(gitkOpts, HostOsInfo::hostOs()));
if (!fileName.isEmpty())
@@ -2580,7 +2581,7 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
// This should always use QProcess::startDetached (as not to kill
// the child), but that does not have an environment parameter.
bool success = false;
- if (!settings().stringValue(GitSettings::pathKey).isEmpty()) {
+ if (!settings().path.value().isEmpty()) {
auto process = new QProcess;
process->setWorkingDirectory(workingDirectory);
process->setProcessEnvironment(env);
@@ -3226,7 +3227,7 @@ void GitClient::synchronousSubversionFetch(const QString &workingDirectory) cons
void GitClient::subversionLog(const QString &workingDirectory) const
{
QStringList arguments = {"svn", "log"};
- int logCount = settings().intValue(GitSettings::logCountKey);
+ int logCount = settings().logCount.value();
if (logCount > 0)
arguments << ("--limit=" + QString::number(logCount));