diff options
author | hjk <hjk@qt.io> | 2023-05-15 13:52:03 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-05-15 13:10:13 +0000 |
commit | d301ddabc7e10463a82d9decd67ad430e6285964 (patch) | |
tree | 0a0894a96403d4670394fe920c976222dc972e5e | |
parent | f6c995cdd0a84a7b9f3494597dd1383bee520b68 (diff) | |
download | qt-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.cpp | 23 | ||||
-rw-r--r-- | src/plugins/subversion/subversionclient.h | 2 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 41 | ||||
-rw-r--r-- | src/plugins/subversion/subversionsettings.cpp | 14 | ||||
-rw-r--r-- | src/plugins/subversion/subversionsettings.h | 4 |
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 |