Fossil: Aspectify settings

Change-Id: I090cf3c63cd705220abb09e5d58eef89e9b55147
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2021-03-19 16:07:25 +01:00
parent c973fae866
commit ea431eede1
14 changed files with 227 additions and 473 deletions

View File

@@ -36,9 +36,7 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/id.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <utils/utilsicons.h>
#include <QSyntaxHighlighter>
@@ -67,15 +65,14 @@ public:
{
QTC_ASSERT(client, return);
VcsBase::VcsBaseClientSettings &settings = client->settings();
FossilClient::SupportedFeatures features = client->supportedFeatures();
addReloadButton();
if (features.testFlag(FossilClient::DiffIgnoreWhiteSpaceFeature)) {
mapSetting(addToggleButton("-w", tr("Ignore All Whitespace")),
settings.boolPointer(FossilSettings::diffIgnoreAllWhiteSpaceKey));
&client->settings().diffIgnoreAllWhiteSpace);
mapSetting(addToggleButton("--strip-trailing-cr", tr("Strip Trailing CR")),
settings.boolPointer(FossilSettings::diffStripTrailingCRKey));
&client->settings().diffStripTrailingCR);
}
}
};
@@ -91,20 +88,20 @@ public:
{
QTC_ASSERT(client, return);
VcsBase::VcsBaseClientSettings &settings = client->settings();
FossilSettings &settings = client->settings();
FossilClient::SupportedFeatures features = client->supportedFeatures();
if (features.testFlag(FossilClient::AnnotateBlameFeature)) {
mapSetting(addToggleButton("|BLAME|", tr("Show Committers")),
settings.boolPointer(FossilSettings::annotateShowCommittersKey));
&settings.annotateShowCommitters);
}
// Force listVersions setting to false by default.
// This way the annotated line number would not get offset by the version list.
settings.setValue(FossilSettings::annotateListVersionsKey, false);
settings.annotateListVersions.setValue(false);
mapSetting(addToggleButton("--log", tr("List Versions")),
settings.boolPointer(FossilSettings::annotateListVersionsKey));
&settings.annotateListVersions);
}
};
@@ -141,7 +138,7 @@ public:
void addLineageComboBox()
{
VcsBase::VcsBaseClientSettings &settings = m_client->settings();
FossilSettings &settings = m_client->settings();
// ancestors/descendants filter
// This is a positional argument not an option.
@@ -156,22 +153,22 @@ public:
ChoiceItem(tr("Unfiltered"), "")
};
mapSetting(addChoices(tr("Lineage"), QStringList("|LINEAGE|%1|current"), lineageFilterChoices),
settings.stringPointer(FossilSettings::timelineLineageFilterKey));
&settings.timelineLineageFilter);
}
void addVerboseToggleButton()
{
VcsBase::VcsBaseClientSettings &settings = m_client->settings();
FossilSettings &settings = m_client->settings();
// show files
mapSetting(addToggleButton("-showfiles", tr("Verbose"),
tr("Show files changed in each revision")),
settings.boolPointer(FossilSettings::timelineVerboseKey));
&settings.timelineVerbose);
}
void addItemTypeComboBox()
{
VcsBase::VcsBaseClientSettings &settings = m_client->settings();
FossilSettings &settings = m_client->settings();
// option: -t <val>
const QList<ChoiceItem> itemTypeChoices = {
@@ -188,7 +185,7 @@ public:
// Fossil expects separate arguments for option and value ( i.e. "-t" "all")
// so we need to handle the splitting explicitly in arguments().
mapSetting(addChoices(tr("Item Types"), QStringList("-t %1"), itemTypeChoices),
settings.stringPointer(FossilSettings::timelineItemTypeKey));
&settings.timelineItemType);
}
QStringList arguments() const final
@@ -244,16 +241,22 @@ QString FossilClient::makeVersionString(unsigned version)
.arg(versionPart(version));
}
FossilClient::FossilClient(FossilSettings *settings) : VcsBase::VcsBaseClient(settings)
FossilClient::FossilClient(FossilSettings *settings)
: VcsBase::VcsBaseClient(settings), m_settings(settings)
{
setDiffConfigCreator([this](QToolBar *toolBar) {
return new FossilDiffConfig(this, toolBar);
});
}
FossilSettings &FossilClient::settings() const
{
return *m_settings;
}
unsigned int FossilClient::synchronousBinaryVersion() const
{
if (settings().binaryPath().isEmpty())
if (settings().binaryPath.value().isEmpty())
return 0;
QStringList args("version");
@@ -282,7 +285,7 @@ QList<BranchInfo> FossilClient::branchListFromOutput(const QString &output, cons
// Branch list format:
// " branch-name"
// "* current-branch"
return Utils::transform(output.split('\n', Utils::SkipEmptyParts), [=](const QString& l) {
return Utils::transform(output.split('\n', Qt::SkipEmptyParts), [=](const QString &l) {
const QString &name = l.mid(2);
QTC_ASSERT(!name.isEmpty(), return BranchInfo());
const BranchInfo::BranchFlags flags = (l.startsWith("* ") ? defaultFlags | BranchInfo::Current : defaultFlags);
@@ -395,9 +398,9 @@ RevisionInfo FossilClient::synchronousRevisionQuery(const QString &workingDirect
const QString hashToken =
QString::fromUtf8(supportedFeatures().testFlag(InfoHashFeature) ? "hash: " : "uuid: ");
for (const QString &l : output.split('\n', Utils::SkipEmptyParts)) {
for (const QString &l : output.split('\n', Qt::SkipEmptyParts)) {
if (l.startsWith("checkout: ", Qt::CaseInsensitive)
|| l.startsWith(hashToken, Qt::CaseInsensitive)) {
|| l.startsWith("uuid: ", Qt::CaseInsensitive)) {
const QRegularExpressionMatch idMatch = idRx.match(l);
QTC_ASSERT(idMatch.hasMatch(), return RevisionInfo());
revisionId = idMatch.captured(1);
@@ -446,7 +449,7 @@ QStringList FossilClient::synchronousTagQuery(const QString &workingDirectory, c
const QString output = sanitizeFossilOutput(response.stdOut());
return output.split('\n', Utils::SkipEmptyParts);
return output.split('\n', Qt::SkipEmptyParts);
}
RepositorySettings FossilClient::synchronousSettingsQuery(const QString &workingDirectory)
@@ -458,7 +461,7 @@ RepositorySettings FossilClient::synchronousSettingsQuery(const QString &working
repoSettings.user = synchronousUserDefaultQuery(workingDirectory);
if (repoSettings.user.isEmpty())
repoSettings.user = settings().stringValue(FossilSettings::userNameKey);
repoSettings.user = settings().userName.value();
const QStringList args("settings");
@@ -468,12 +471,12 @@ RepositorySettings FossilClient::synchronousSettingsQuery(const QString &working
const QString output = sanitizeFossilOutput(response.stdOut());
for (const QString &line : output.split('\n', Utils::SkipEmptyParts)) {
for (const QString &line : output.split('\n', Qt::SkipEmptyParts)) {
// parse settings line:
// <property> <(local|global)> <value>
// Fossil properties are case-insensitive; force them to lower-case.
// Values may be in mixed-case; force lower-case for fixed values.
const QStringList fields = line.split(' ', Utils::SkipEmptyParts);
const QStringList fields = line.split(' ', Qt::SkipEmptyParts);
const QString property = fields.at(0).toLower();
const QString value = (fields.size() >= 3 ? fields.at(2) : QString());
@@ -636,8 +639,8 @@ bool FossilClient::synchronousCreateRepository(const QString &workingDirectory,
// use the configured default user for admin
const QString repoName = QDir(workingDirectory).dirName().simplified();
const QString repoPath = settings().stringValue(FossilSettings::defaultRepoPathKey);
const QString adminUser = settings().stringValue(FossilSettings::userNameKey);
const QString repoPath = settings().defaultRepoPath.value();
const QString adminUser = settings().userName.value();
if (repoName.isEmpty() || repoPath.isEmpty())
return false;
@@ -855,7 +858,7 @@ unsigned int FossilClient::binaryVersion() const
static unsigned int cachedBinaryVersion = 0;
static QString cachedBinaryPath;
const QString currentBinaryPath = settings().binaryPath().toString();
const QString currentBinaryPath = settings().binaryPath.value();
if (currentBinaryPath.isEmpty())
return 0;