From e05b5d8b27114e4633602ee3dc7a39f5ae2a6f5e Mon Sep 17 00:00:00 2001 From: Martin Kampas Date: Thu, 28 Mar 2013 14:59:19 +0100 Subject: [PATCH] Split SsuSettings::merge() to make testing easier --- libssu/ssusettings.cpp | 17 ++++++++++++----- libssu/ssusettings.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/libssu/ssusettings.cpp b/libssu/ssusettings.cpp index dd75fa0..5bd1acd 100644 --- a/libssu/ssusettings.cpp +++ b/libssu/ssusettings.cpp @@ -67,27 +67,33 @@ void SsuSettings::merge(bool keepOld){ if (settingsFiles.count() > 0 && !keepOld) clear(); + merge(this, settingsFiles); + sync(); +} + +void SsuSettings::merge(QSettings *masterSettings, const QStringList &settingsFiles){ + SsuLog *ssuLog = SsuLog::instance(); + foreach (const QString &settingsFile, settingsFiles){ QSettings settings(settingsFile, QSettings::IniFormat); QStringList groups = settings.childGroups(); ssuLog->print(LOG_DEBUG, QString("Merging %1 into %2") .arg(settingsFile) - .arg(fileName())); + .arg(masterSettings->fileName())); foreach (const QString &group, groups){ - beginGroup(group); + masterSettings->beginGroup(group); settings.beginGroup(group); QStringList keys = settings.allKeys(); foreach (const QString &key, keys){ - setValue(key, settings.value(key)); + masterSettings->setValue(key, settings.value(key)); } settings.endGroup(); - endGroup(); + masterSettings->endGroup(); } - sync(); } } @@ -175,5 +181,6 @@ void SsuSettings::upgrade(){ } setValue("configVersion", i); } + sync(); } } diff --git a/libssu/ssusettings.h b/libssu/ssusettings.h index 7808a89..648c5c7 100644 --- a/libssu/ssusettings.h +++ b/libssu/ssusettings.h @@ -30,6 +30,7 @@ class SsuSettings: public QSettings { private: QString defaultSettingsFile, settingsd; void merge(bool keepOld=false); + static void merge(QSettings *masterSettings, const QStringList &settingsFiles); void upgrade(); };