From b46072c724f17986adc899672ae8e6c8cea3f071 Mon Sep 17 00:00:00 2001 From: cerf <delorme.hugues@gmail.com> Date: Thu, 23 Jun 2011 10:32:37 +0200 Subject: [PATCH] vcsbase: auto save settings when requested by Core::ICore Bazaar and Mercurial plugins are impacted Change-Id: Ia781dae79983350d773f454de32f812e876bfbfb Merge-request: 350 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/645 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> --- src/plugins/bazaar/bazaarplugin.cpp | 3 +-- src/plugins/bazaar/bazaarsettings.cpp | 13 +++++++------ src/plugins/bazaar/bazaarsettings.h | 4 ++-- src/plugins/bazaar/optionspage.cpp | 3 +-- src/plugins/mercurial/mercurialplugin.cpp | 2 +- src/plugins/mercurial/mercurialsettings.cpp | 13 +++++++------ src/plugins/mercurial/mercurialsettings.h | 4 ++-- src/plugins/mercurial/optionspage.cpp | 3 +-- src/plugins/vcsbase/vcsbaseclient.cpp | 6 ++++++ src/plugins/vcsbase/vcsbaseclient.h | 1 + src/plugins/vcsbase/vcsbaseclientsettings.cpp | 18 ++++++++++++++---- src/plugins/vcsbase/vcsbaseclientsettings.h | 8 ++++++-- 12 files changed, 49 insertions(+), 29 deletions(-) diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp index e543aee1522..9f67b4d093d 100644 --- a/src/plugins/bazaar/bazaarplugin.cpp +++ b/src/plugins/bazaar/bazaarplugin.cpp @@ -136,7 +136,6 @@ BazaarPlugin::BazaarPlugin() : BazaarPlugin::~BazaarPlugin() { - m_bazaarSettings.writeSettings(m_core->settings(), Constants::BAZAAR); if (m_client) { delete m_client; m_client = 0; @@ -162,7 +161,7 @@ bool BazaarPlugin::initialize(const QStringList &arguments, QString *errorMessag m_optionsPage = new OptionsPage(); addAutoReleasedObject(m_optionsPage); - m_bazaarSettings.readSettings(m_core->settings(), Constants::BAZAAR); + m_bazaarSettings.readSettings(m_core->settings()); connect(m_optionsPage, SIGNAL(settingsChanged()), m_client, SLOT(settingsChanged())); connect(m_client, SIGNAL(changed(QVariant)), versionControl(), SLOT(changed(QVariant))); diff --git a/src/plugins/bazaar/bazaarsettings.cpp b/src/plugins/bazaar/bazaarsettings.cpp index ab99ccdcd99..83a8f84d688 100644 --- a/src/plugins/bazaar/bazaarsettings.cpp +++ b/src/plugins/bazaar/bazaarsettings.cpp @@ -45,6 +45,7 @@ BazaarSettings::BazaarSettings() : diffIgnoreWhiteSpace(false), diffIgnoreBlankLines(false) { + setSettingsGroup(QLatin1String(Constants::BAZAAR)); setBinary(QLatin1String(Constants::BAZAARDEFAULT)); } @@ -63,19 +64,19 @@ bool BazaarSettings::sameUserId(const BazaarSettings& other) const return userName() == other.userName() && email() == other.email(); } -void BazaarSettings::writeSettings(QSettings *settings, const QString &group) const +void BazaarSettings::writeSettings(QSettings *settings) const { - VCSBaseClientSettings::writeSettings(settings, group); - settings->beginGroup(group); + VCSBaseClientSettings::writeSettings(settings); + settings->beginGroup(settingsGroup()); settings->setValue(diffIgnoreWhiteSpaceKey, diffIgnoreWhiteSpace); settings->setValue(diffIgnoreBlankLinesKey, diffIgnoreBlankLines); settings->endGroup(); } -void BazaarSettings::readSettings(const QSettings *settings, const QString &group) +void BazaarSettings::readSettings(const QSettings *settings) { - VCSBaseClientSettings::readSettings(settings, group); - const QString keyRoot = group + QLatin1Char('/'); + VCSBaseClientSettings::readSettings(settings); + const QString keyRoot = settingsGroup() + QLatin1Char('/'); diffIgnoreWhiteSpace = settings->value(keyRoot + diffIgnoreWhiteSpaceKey, false).toBool(); diffIgnoreBlankLines = settings->value(keyRoot + diffIgnoreBlankLinesKey, false).toBool(); } diff --git a/src/plugins/bazaar/bazaarsettings.h b/src/plugins/bazaar/bazaarsettings.h index 65f8d22eda1..b23573d8012 100644 --- a/src/plugins/bazaar/bazaarsettings.h +++ b/src/plugins/bazaar/bazaarsettings.h @@ -45,8 +45,8 @@ public: BazaarSettings& operator=(const BazaarSettings& other); bool sameUserId(const BazaarSettings& other) const; - virtual void writeSettings(QSettings *settings, const QString &group) const; - virtual void readSettings(const QSettings *settings, const QString &group); + virtual void writeSettings(QSettings *settings) const; + virtual void readSettings(const QSettings *settings); virtual bool equals(const VCSBaseClientSettings &rhs) const; bool diffIgnoreWhiteSpace; diff --git a/src/plugins/bazaar/optionspage.cpp b/src/plugins/bazaar/optionspage.cpp index 5d5fc1a3351..457e4502370 100644 --- a/src/plugins/bazaar/optionspage.cpp +++ b/src/plugins/bazaar/optionspage.cpp @@ -126,8 +126,7 @@ void OptionsPage::apply() if (newSettings != plugin->settings()) { //assume success and emit signal that settings are changed; plugin->setSettings(newSettings); - newSettings.writeSettings(Core::ICore::instance()->settings(), - Constants::BAZAAR); + newSettings.writeSettings(Core::ICore::instance()->settings()); emit settingsChanged(); } } diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index 804cfe6663d..a59338e958a 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -164,7 +164,7 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString * optionsPage = new OptionsPage(); addAutoReleasedObject(optionsPage); - mercurialSettings.readSettings(core->settings(), QLatin1String("Mercurial")); + mercurialSettings.readSettings(core->settings()); connect(optionsPage, SIGNAL(settingsChanged()), m_client, SLOT(settingsChanged())); diff --git a/src/plugins/mercurial/mercurialsettings.cpp b/src/plugins/mercurial/mercurialsettings.cpp index 6b80e221bc9..6c52885262d 100644 --- a/src/plugins/mercurial/mercurialsettings.cpp +++ b/src/plugins/mercurial/mercurialsettings.cpp @@ -45,6 +45,7 @@ namespace Internal { diffIgnoreWhiteSpace(false), diffIgnoreBlankLines(false) { + setSettingsGroup(QLatin1String("Mercurial")); setBinary(QLatin1String(Constants::MERCURIALDEFAULT)); } @@ -58,19 +59,19 @@ namespace Internal { return *this; } - void MercurialSettings::writeSettings(QSettings *settings, const QString &group) const + void MercurialSettings::writeSettings(QSettings *settings) const { - VCSBaseClientSettings::writeSettings(settings, group); - settings->beginGroup(group); + VCSBaseClientSettings::writeSettings(settings); + settings->beginGroup(this->settingsGroup()); settings->setValue(diffIgnoreWhiteSpaceKey, diffIgnoreWhiteSpace); settings->setValue(diffIgnoreBlankLinesKey, diffIgnoreBlankLines); settings->endGroup(); } - void MercurialSettings::readSettings(const QSettings *settings, const QString &group) + void MercurialSettings::readSettings(const QSettings *settings) { - VCSBaseClientSettings::readSettings(settings, group); - const QString keyRoot = group + QLatin1Char('/'); + VCSBaseClientSettings::readSettings(settings); + const QString keyRoot = this->settingsGroup() + QLatin1Char('/'); diffIgnoreWhiteSpace = settings->value(keyRoot + diffIgnoreWhiteSpaceKey, false).toBool(); diffIgnoreBlankLines = settings->value(keyRoot + diffIgnoreBlankLinesKey, false).toBool(); } diff --git a/src/plugins/mercurial/mercurialsettings.h b/src/plugins/mercurial/mercurialsettings.h index 36ef096aa6f..12d199838f2 100644 --- a/src/plugins/mercurial/mercurialsettings.h +++ b/src/plugins/mercurial/mercurialsettings.h @@ -44,8 +44,8 @@ public: MercurialSettings(); MercurialSettings& operator=(const MercurialSettings& other); - virtual void writeSettings(QSettings *settings, const QString &group) const; - virtual void readSettings(const QSettings *settings, const QString &group); + virtual void writeSettings(QSettings *settings) const; + virtual void readSettings(const QSettings *settings); virtual bool equals(const VCSBaseClientSettings &rhs) const; bool diffIgnoreWhiteSpace; diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp index 961b784cddc..b529c695e3e 100644 --- a/src/plugins/mercurial/optionspage.cpp +++ b/src/plugins/mercurial/optionspage.cpp @@ -125,8 +125,7 @@ void OptionsPage::apply() if (newSettings != plugin->settings()) { //assume success and emit signal that settings are changed; plugin->setSettings(newSettings); - newSettings.writeSettings(Core::ICore::instance()->settings(), - QLatin1String("Mercurial")); + newSettings.writeSettings(Core::ICore::instance()->settings()); emit settingsChanged(); } } diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index 9c8f02d02a1..4f0f3181d05 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -97,6 +97,7 @@ VCSBaseClient::VCSBaseClient(VCSBaseClientSettings *settings) : d(new VCSBaseClientPrivate(settings)) { qRegisterMetaType<QVariant>(); + connect(d->m_core, SIGNAL(saveSettingsRequested()), this, SLOT(saveSettings())); } VCSBaseClient::~VCSBaseClient() @@ -252,6 +253,11 @@ void VCSBaseClient::slotAnnotateRevisionRequested(const QString &source, annotate(fi.absolutePath(), fi.fileName(), change, lineNumber); } +void VCSBaseClient::saveSettings() +{ + d->m_clientSettings->writeSettings(d->m_core->settings()); +} + void VCSBaseClient::annotate(const QString &workingDir, const QString &file, const QString revision /* = QString() */, int lineNumber /* = -1 */) diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index c99529ba5c7..83b6e41cc77 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -185,6 +185,7 @@ protected: private slots: void statusParser(const QByteArray &data); void slotAnnotateRevisionRequested(const QString &source, QString change, int lineNumber); + void saveSettings(); private: QScopedPointer<VCSBaseClientPrivate> d; diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.cpp b/src/plugins/vcsbase/vcsbaseclientsettings.cpp index 517140ce9f6..65e85dcf221 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.cpp +++ b/src/plugins/vcsbase/vcsbaseclientsettings.cpp @@ -129,9 +129,19 @@ void VCSBaseClientSettings::setTimeoutSeconds(int s) m_timeoutSeconds = s; } -void VCSBaseClientSettings::writeSettings(QSettings *settings, const QString &group) const +QString VCSBaseClientSettings::settingsGroup() const { - settings->beginGroup(group); + return m_settingsGroup; +} + +void VCSBaseClientSettings::setSettingsGroup(const QString &group) +{ + m_settingsGroup = group; +} + +void VCSBaseClientSettings::writeSettings(QSettings *settings) const +{ + settings->beginGroup(settingsGroup()); settings->setValue(QLatin1String("VCS_Path"), m_binary); settings->setValue(QLatin1String("VCS_Username"), m_user); settings->setValue(QLatin1String("VCS_Email"), m_mail); @@ -141,9 +151,9 @@ void VCSBaseClientSettings::writeSettings(QSettings *settings, const QString &gr settings->endGroup(); } -void VCSBaseClientSettings::readSettings(const QSettings *settings, const QString &group) +void VCSBaseClientSettings::readSettings(const QSettings *settings) { - const QString keyRoot = group + QLatin1Char('/'); + const QString keyRoot = settingsGroup() + QLatin1Char('/'); m_binary = settings->value(keyRoot + QLatin1String("VCS_Path"), QString()).toString(); m_user = settings->value(keyRoot + QLatin1String("VCS_Username"), QString()).toString(); m_mail = settings->value(keyRoot + QLatin1String("VCS_Email"), QString()).toString(); diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.h b/src/plugins/vcsbase/vcsbaseclientsettings.h index c53c0a516fd..38171500b1e 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.h +++ b/src/plugins/vcsbase/vcsbaseclientsettings.h @@ -71,8 +71,11 @@ public: int timeoutSeconds() const; void setTimeoutSeconds(int s); - virtual void writeSettings(QSettings *settings, const QString &group) const; - virtual void readSettings(const QSettings *settings, const QString &group); + QString settingsGroup() const; + void setSettingsGroup(const QString &group); + + virtual void writeSettings(QSettings *settings) const; + virtual void readSettings(const QSettings *settings); virtual bool equals(const VCSBaseClientSettings &rhs) const; @@ -84,6 +87,7 @@ private: int m_logCount; bool m_prompt; int m_timeoutSeconds; + QString m_settingsGroup; }; inline bool operator==(const VCSBaseClientSettings &s1, const VCSBaseClientSettings &s2) -- GitLab