summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-05-15 13:52:03 +0200
committerhjk <hjk@qt.io>2023-05-15 13:10:13 +0000
commitd301ddabc7e10463a82d9decd67ad430e6285964 (patch)
tree0a0894a96403d4670394fe920c976222dc972e5e
parentf6c995cdd0a84a7b9f3494597dd1383bee520b68 (diff)
downloadqt-creator-d301ddabc7e10463a82d9decd67ad430e6285964.tar.gz
Subversion: Follow the Fossil settings setup
Change-Id: I967396073abbcbc3058a016d5d37fa3fc5645f8a Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r--src/plugins/subversion/subversionclient.cpp23
-rw-r--r--src/plugins/subversion/subversionclient.h2
-rw-r--r--src/plugins/subversion/subversionplugin.cpp41
-rw-r--r--src/plugins/subversion/subversionsettings.cpp14
-rw-r--r--src/plugins/subversion/subversionsettings.h4
5 files changed, 43 insertions, 41 deletions
diff --git a/src/plugins/subversion/subversionclient.cpp b/src/plugins/subversion/subversionclient.cpp
index d728fb79f4..b81656f145 100644
--- a/src/plugins/subversion/subversionclient.cpp
+++ b/src/plugins/subversion/subversionclient.cpp
@@ -34,27 +34,22 @@ using namespace VcsBase;
namespace Subversion {
namespace Internal {
-static SubversionSettings *s_settings = nullptr;
-
class SubversionLogConfig : public VcsBaseEditorConfig
{
Q_OBJECT
public:
- SubversionLogConfig(SubversionSettings &settings, QToolBar *toolBar) :
- VcsBaseEditorConfig(toolBar)
+ explicit SubversionLogConfig(QToolBar *toolBar)
+ : VcsBaseEditorConfig(toolBar)
{
mapSetting(addToggleButton("--verbose", Tr::tr("Verbose"),
Tr::tr("Show files changed in each revision")),
- &settings.logVerbose);
+ &settings().logVerbose);
}
};
-SubversionClient::SubversionClient(SubversionSettings *settings) : VcsBaseClient(settings)
+SubversionClient::SubversionClient() : VcsBaseClient(&Internal::settings())
{
- s_settings = settings;
- setLogConfigCreator([settings](QToolBar *toolBar) {
- return new SubversionLogConfig(*settings, toolBar);
- });
+ setLogConfigCreator([](QToolBar *toolBar) { return new SubversionLogConfig(toolBar); });
}
bool SubversionClient::doCommit(const FilePath &repositoryRoot,
@@ -101,11 +96,11 @@ Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const
// Add authorization options to the command line arguments.
CommandLine &operator<<(Utils::CommandLine &command, SubversionClient::AddAuthOptions)
{
- if (!s_settings->hasAuthentication())
+ if (!settings().hasAuthentication())
return command;
- const QString userName = s_settings->userName.value();
- const QString password = s_settings->password.value();
+ const QString userName = settings().userName();
+ const QString password = settings().password();
if (userName.isEmpty())
return command;
@@ -239,7 +234,7 @@ void SubversionDiffEditorController::setChangeNumber(int changeNumber)
SubversionDiffEditorController *SubversionClient::findOrCreateDiffEditor(const QString &documentId,
const FilePath &source, const QString &title, const FilePath &workingDirectory)
{
- auto &settings = static_cast<SubversionSettings &>(this->settings());
+ SubversionSettings &settings = Internal::settings();
IDocument *document = DiffEditorController::findOrCreateDocument(documentId, title);
auto controller = qobject_cast<SubversionDiffEditorController *>(
DiffEditorController::controller(document));
diff --git a/src/plugins/subversion/subversionclient.h b/src/plugins/subversion/subversionclient.h
index d3beec2b4c..b2ce0f9061 100644
--- a/src/plugins/subversion/subversionclient.h
+++ b/src/plugins/subversion/subversionclient.h
@@ -18,7 +18,7 @@ class SubversionClient : public VcsBase::VcsBaseClient
Q_OBJECT
public:
- SubversionClient(SubversionSettings *settings);
+ SubversionClient();
bool doCommit(const Utils::FilePath &repositoryRoot,
const QStringList &files,
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 8d2be99c0c..cdcfbb96d6 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -261,7 +261,6 @@ private:
const QStringList m_svnDirectories;
- SubversionSettings m_settings;
SubversionClient *m_client = nullptr;
QString m_commitMessageFileName;
FilePath m_commitRepository;
@@ -289,7 +288,7 @@ private:
QAction *m_menuAction = nullptr;
- SubversionSettingsPage m_settingsPage{&m_settings};
+ SubversionSettingsPage m_settingsPage;
public:
VcsSubmitEditorFactory submitEditorFactory {
@@ -358,7 +357,7 @@ SubversionPluginPrivate::SubversionPluginPrivate()
{
dd = this;
- m_client = new SubversionClient(&m_settings);
+ m_client = new SubversionClient();
setTopicCache(new SubversionTopicCache(this));
@@ -524,7 +523,7 @@ SubversionPluginPrivate::SubversionPluginPrivate()
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
- connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged);
+ connect(&settings(), &AspectContainer::applied, this, &IVersionControl::configurationChanged);
}
bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const
@@ -640,7 +639,7 @@ void SubversionPluginPrivate::revertAll()
QMessageBox::Yes, QMessageBox::No) == QMessageBox::No)
return;
// NoteL: Svn "revert ." doesn not work.
- CommandLine args{m_settings.binaryPath.filePath(), {"revert"}};
+ CommandLine args{settings().binaryPath.filePath(), {"revert"}};
args << SubversionClient::AddAuthOptions();
args << QLatin1String("--recursive") << state.topLevel().toString();
const auto revertResponse = runSvn(state.topLevel(), args, RunFlags::ShowStdOut);
@@ -657,7 +656,7 @@ void SubversionPluginPrivate::revertCurrentFile()
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
- CommandLine diffArgs{m_settings.binaryPath.filePath(), {"diff"}};
+ CommandLine diffArgs{settings().binaryPath.filePath(), {"diff"}};
diffArgs << SubversionClient::AddAuthOptions();
diffArgs << SubversionClient::escapeFile(state.relativeCurrentFile());
@@ -675,7 +674,7 @@ void SubversionPluginPrivate::revertCurrentFile()
FileChangeBlocker fcb(state.currentFile());
// revert
- CommandLine args{m_settings.binaryPath.filePath(), {"revert"}};
+ CommandLine args{settings().binaryPath.filePath(), {"revert"}};
args << SubversionClient::AddAuthOptions();
args << SubversionClient::escapeFile(state.relativeCurrentFile());
@@ -736,7 +735,7 @@ void SubversionPluginPrivate::startCommit(const FilePath &workingDir, const QStr
return;
}
- CommandLine args{m_settings.binaryPath.filePath(), {"status"}};
+ CommandLine args{settings().binaryPath.filePath(), {"status"}};
args << SubversionClient::AddAuthOptions();
args << SubversionClient::escapeFiles(files);
@@ -815,7 +814,7 @@ void SubversionPluginPrivate::svnStatus(const FilePath &workingDir, const QStrin
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
- CommandLine args{m_settings.binaryPath.filePath(), {"status"}};
+ CommandLine args{settings().binaryPath.filePath(), {"status"}};
args << SubversionClient::AddAuthOptions();
if (!relativePath.isEmpty())
args << SubversionClient::escapeFile(relativePath);
@@ -841,7 +840,7 @@ void SubversionPluginPrivate::updateProject()
void SubversionPluginPrivate::svnUpdate(const FilePath &workingDir, const QString &relativePath)
{
- CommandLine args{m_settings.binaryPath.filePath(), {"update"}};
+ CommandLine args{settings().binaryPath.filePath(), {"update"}};
args << SubversionClient::AddAuthOptions();
args << Constants::NON_INTERACTIVE_OPTION;
if (!relativePath.isEmpty())
@@ -865,9 +864,9 @@ void SubversionPluginPrivate::vcsAnnotateHelper(const FilePath &workingDir, cons
const FilePath source = VcsBaseEditor::getSource(workingDir, file);
QTextCodec *codec = VcsBaseEditor::getCodec(source);
- CommandLine args{m_settings.binaryPath.filePath(), {"annotate"}};
+ CommandLine args{settings().binaryPath.filePath(), {"annotate"}};
args << SubversionClient::AddAuthOptions();
- if (m_settings.spaceIgnorantAnnotation.value())
+ if (settings().spaceIgnorantAnnotation.value())
args << "-x" << "-uw";
if (!revision.isEmpty())
args << "-r" << revision;
@@ -949,10 +948,10 @@ CommandResult SubversionPluginPrivate::runSvn(const FilePath &workingDir,
const CommandLine &command, RunFlags flags,
QTextCodec *outputCodec, int timeoutMutiplier) const
{
- if (m_settings.binaryPath().isEmpty())
+ if (settings().binaryPath().isEmpty())
return CommandResult(ProcessResult::StartFailed, Tr::tr("No subversion executable specified."));
- const int timeoutS = m_settings.timeout() * timeoutMutiplier;
+ const int timeoutS = settings().timeout() * timeoutMutiplier;
return m_client->vcsSynchronousExec(workingDir, command, flags, timeoutS, outputCodec);
}
@@ -1008,7 +1007,7 @@ QString SubversionPluginPrivate::synchronousTopic(const FilePath &repository) co
bool SubversionPluginPrivate::vcsAdd(const FilePath &workingDir, const QString &rawFileName)
{
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
- CommandLine args{m_settings.binaryPath.filePath()};
+ CommandLine args{settings().binaryPath.filePath()};
args << "add" << SubversionClient::AddAuthOptions() << "--parents" << file;
return runSvn(workingDir, args, RunFlags::ShowStdOut).result()
== ProcessResult::FinishedWithSuccess;
@@ -1018,7 +1017,7 @@ bool SubversionPluginPrivate::vcsDelete(const FilePath &workingDir, const QStrin
{
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
- CommandLine args{m_settings.binaryPath.filePath()};
+ CommandLine args{settings().binaryPath.filePath()};
args << "delete" << SubversionClient::AddAuthOptions() << "--force" << file;
return runSvn(workingDir, args, RunFlags::ShowStdOut).result()
@@ -1027,7 +1026,7 @@ bool SubversionPluginPrivate::vcsDelete(const FilePath &workingDir, const QStrin
bool SubversionPluginPrivate::vcsMove(const FilePath &workingDir, const QString &from, const QString &to)
{
- CommandLine args{m_settings.binaryPath.filePath(), {"move"}};
+ CommandLine args{settings().binaryPath.filePath(), {"move"}};
args << SubversionClient::AddAuthOptions()
<< QDir::toNativeSeparators(SubversionClient::escapeFile(from))
<< QDir::toNativeSeparators(SubversionClient::escapeFile(to));
@@ -1040,7 +1039,7 @@ bool SubversionPluginPrivate::vcsCheckout(const FilePath &directory, const QByte
QUrl tempUrl = QUrl::fromEncoded(url);
const QString username = tempUrl.userName();
const QString password = tempUrl.password();
- CommandLine args{m_settings.binaryPath.filePath(), {"checkout"}};
+ CommandLine args{settings().binaryPath.filePath(), {"checkout"}};
args << Constants::NON_INTERACTIVE_OPTION;
if (!username.isEmpty()) {
@@ -1087,7 +1086,7 @@ bool SubversionPluginPrivate::managesDirectory(const FilePath &directory, FilePa
bool SubversionPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const
{
- CommandLine args{m_settings.binaryPath.filePath()};
+ CommandLine args{settings().binaryPath.filePath()};
args << "status" << SubversionClient::AddAuthOptions()
<< QDir::toNativeSeparators(SubversionClient::escapeFile(fileName));
const QString output = runSvn(workingDirectory, args).cleanedStdOut();
@@ -1126,7 +1125,7 @@ bool SubversionPluginPrivate::isVcsFileOrDirectory(const FilePath &filePath) con
bool SubversionPluginPrivate::isConfigured() const
{
- const FilePath binary = m_settings.binaryPath.filePath();
+ const FilePath binary = settings().binaryPath.filePath();
if (binary.isEmpty())
return false;
QFileInfo fi = binary.toFileInfo();
@@ -1189,7 +1188,7 @@ VcsCommand *SubversionPluginPrivate::createInitialCheckoutCommand(const QString
const QString &localName,
const QStringList &extraArgs)
{
- CommandLine args{m_settings.binaryPath.filePath()};
+ CommandLine args{settings().binaryPath.filePath()};
args << "checkout";
args << SubversionClient::AddAuthOptions();
args << Subversion::Constants::NON_INTERACTIVE_OPTION << extraArgs << url << localName;
diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp
index d26dceac7c..1e56e27ccb 100644
--- a/src/plugins/subversion/subversionsettings.cpp
+++ b/src/plugins/subversion/subversionsettings.cpp
@@ -78,15 +78,15 @@ bool SubversionSettings::hasAuthentication() const
return useAuthentication.value() && !userName.value().isEmpty();
}
-SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings)
+SubversionSettingsPage::SubversionSettingsPage()
{
setId(VcsBase::Constants::VCS_ID_SUBVERSION);
setDisplayName(Tr::tr("Subversion"));
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
- setSettings(settings);
+ setSettings(&settings());
- setLayouter([settings](QWidget *widget) {
- SubversionSettings &s = *settings;
+ setLayouter([](QWidget *widget) {
+ SubversionSettings &s = settings();
using namespace Layouting;
Column {
@@ -117,4 +117,10 @@ SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings)
});
}
+SubversionSettings &settings()
+{
+ static SubversionSettings theSettings;
+ return theSettings;
+}
+
} // Subversion::Internal
diff --git a/src/plugins/subversion/subversionsettings.h b/src/plugins/subversion/subversionsettings.h
index 206a19d59f..080dbd6c0c 100644
--- a/src/plugins/subversion/subversionsettings.h
+++ b/src/plugins/subversion/subversionsettings.h
@@ -23,10 +23,12 @@ public:
Utils::BoolAspect logVerbose;
};
+SubversionSettings &settings();
+
class SubversionSettingsPage final : public Core::IOptionsPage
{
public:
- explicit SubversionSettingsPage(SubversionSettings *settings);
+ SubversionSettingsPage();
};
} // Subversion::Internal