From c87284356c1e27d7f0324a5201d9281ed7e73522 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 16 Feb 2021 14:51:16 +0100 Subject: [PATCH] VCS: Do not write defaults to settings Saves useless entries in settings file and makes it possible to change defaults later. Task-number: QTCREATORBUG-24762 Change-Id: Iee7d39f2bf5d8de6903ca914ea533a678fad62f8 Reviewed-by: Orgad Shaneh --- src/plugins/vcsbase/commonvcssettings.cpp | 16 +++++++--------- src/plugins/vcsbase/vcsbaseclient.cpp | 3 ++- src/plugins/vcsbase/vcsbaseclient.h | 4 +++- src/plugins/vcsbase/vcsbaseclientsettings.cpp | 6 ++++-- src/plugins/vcsbase/vcsbaseclientsettings.h | 2 +- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/plugins/vcsbase/commonvcssettings.cpp b/src/plugins/vcsbase/commonvcssettings.cpp index 182e5b35aca..b9be1d343ae 100644 --- a/src/plugins/vcsbase/commonvcssettings.cpp +++ b/src/plugins/vcsbase/commonvcssettings.cpp @@ -64,15 +64,13 @@ CommonVcsSettings::CommonVcsSettings() : void CommonVcsSettings::toSettings(Utils::QtcSettings *s) const { - s->beginGroup(QLatin1String(settingsGroupC)); - s->setValue(QLatin1String(nickNameMailMapKeyC), nickNameMailMap); - s->setValue(QLatin1String(nickNameFieldListFileKeyC), nickNameFieldListFile); - s->setValue(QLatin1String(submitMessageCheckScriptKeyC), submitMessageCheckScript); - s->setValue(QLatin1String(lineWrapKeyC), lineWrap); - s->setValue(QLatin1String(lineWrapWidthKeyC), lineWrapWidth); - s->setValueWithDefault(QLatin1String(sshPasswordPromptKeyC), - sshPasswordPrompt, - sshPasswordPromptDefault()); + s->beginGroup(settingsGroupC); + s->setValueWithDefault(nickNameMailMapKeyC, nickNameMailMap); + s->setValueWithDefault(nickNameFieldListFileKeyC, nickNameFieldListFile); + s->setValueWithDefault(submitMessageCheckScriptKeyC, submitMessageCheckScript); + s->setValueWithDefault(lineWrapKeyC, lineWrap, lineWrapDefault); + s->setValueWithDefault(lineWrapWidthKeyC, lineWrapWidth, lineWrapWidthDefault); + s->setValueWithDefault(sshPasswordPromptKeyC, sshPasswordPrompt, sshPasswordPromptDefault()); s->endGroup(); } diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index 6b44848665b..86fc118cbb8 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -76,6 +76,7 @@ namespace VcsBase { VcsBaseClientImpl::VcsBaseClientImpl(VcsBaseClientSettings *settings) : m_clientSettings(settings) { + m_defaultSettings = *m_clientSettings; m_clientSettings->readSettings(Core::ICore::settings()); connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested, this, &VcsBaseClientImpl::saveSettings); @@ -249,7 +250,7 @@ VcsBaseEditorWidget *VcsBaseClientImpl::createVcsEditor(Utils::Id kind, QString void VcsBaseClientImpl::saveSettings() { - settings().writeSettings(Core::ICore::settings()); + settings().writeSettings(Core::ICore::settings(), m_defaultSettings); } VcsBaseClient::VcsBaseClient(VcsBaseClientSettings *settings) : diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index 258a93cb57c..7d47ed03745 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -27,6 +27,8 @@ #include "vcsbase_global.h" +#include "vcsbaseclientsettings.h" + #include #include #include @@ -47,7 +49,6 @@ namespace VcsBase { class VcsCommand; class VcsBaseEditorWidget; -class VcsBaseClientSettings; class VcsJob; class VcsBaseClientImplPrivate; class VcsBaseEditorConfig; @@ -128,6 +129,7 @@ private: void saveSettings(); VcsBaseClientSettings *m_clientSettings; + VcsBaseClientSettings m_defaultSettings; }; class VCSBASE_EXPORT VcsBaseClient : public VcsBaseClientImpl diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.cpp b/src/plugins/vcsbase/vcsbaseclientsettings.cpp index 9407673da80..42760f77af1 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.cpp +++ b/src/plugins/vcsbase/vcsbaseclientsettings.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -226,14 +227,15 @@ VcsBaseClientSettings::~VcsBaseClientSettings() { } -void VcsBaseClientSettings::writeSettings(QSettings *settings) const +void VcsBaseClientSettings::writeSettings(QSettings *settings, + const VcsBaseClientSettings &defaultSettings) const { QTC_ASSERT(!settingsGroup().isEmpty(), return); settings->remove(settingsGroup()); settings->beginGroup(settingsGroup()); foreach (const QString &key, keys()) - settings->setValue(key, value(key)); + QtcSettings::setValueWithDefault(settings, key, value(key), defaultSettings.value(key)); settings->endGroup(); } diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.h b/src/plugins/vcsbase/vcsbaseclientsettings.h index facdd50ab3b..494e726597a 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.h +++ b/src/plugins/vcsbase/vcsbaseclientsettings.h @@ -56,7 +56,7 @@ public: VcsBaseClientSettings &operator=(const VcsBaseClientSettings &other); virtual ~VcsBaseClientSettings(); - void writeSettings(QSettings *settings) const; + void writeSettings(QSettings *settings, const VcsBaseClientSettings &defaultSettings) const; void readSettings(const QSettings *settings); bool equals(const VcsBaseClientSettings &rhs) const;