From eeedf4cd8c2e79c7db6966a6030e587a1940aa99 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 24 Mar 2021 11:16:18 +0100 Subject: [PATCH] Utils: simplify loading/saving grouped settings Change-Id: I8e06fb301eab193137f3e77d841698b9f4881deb Reviewed-by: hjk --- src/libs/utils/aspects.cpp | 33 +++++++++++---------------------- src/libs/utils/aspects.h | 2 +- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 0296c631237..7826baa00d6 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -2060,35 +2060,24 @@ void AspectContainer::toMap(QVariantMap &map) const aspect->toMap(map); } -void AspectContainer::readSettings(const QSettings *settings) +void AspectContainer::readSettings(QSettings *settings) { - if (d->m_settingsGroup.isEmpty()) { - for (BaseAspect *aspect : qAsConst(d->m_items)) - aspect->readSettings(settings); - } else { - const QString keyRoot = d->m_settingsGroup + '/'; - forEachAspect([settings, keyRoot](BaseAspect *aspect) { - QString key = aspect->settingsKey(); - const QVariant value = settings->value(keyRoot + key, aspect->defaultValue()); - aspect->setValue(value); - }); - } + if (!d->m_settingsGroup.isEmpty()) + settings->beginGroup(d->m_settingsGroup); + for (BaseAspect *aspect : qAsConst(d->m_items)) + aspect->readSettings(settings); + if (!d->m_settingsGroup.isEmpty()) + settings->endGroup(); } void AspectContainer::writeSettings(QSettings *settings) const { - if (d->m_settingsGroup.isEmpty()) { - for (BaseAspect *aspect : qAsConst(d->m_items)) - aspect->writeSettings(settings); - } else { - settings->remove(d->m_settingsGroup); + if (!d->m_settingsGroup.isEmpty()) settings->beginGroup(d->m_settingsGroup); - forEachAspect([settings](BaseAspect *aspect) { - QtcSettings::setValueWithDefault(settings, aspect->settingsKey(), - aspect->value(), aspect->defaultValue()); - }); + for (BaseAspect *aspect : qAsConst(d->m_items)) + aspect->writeSettings(settings); + if (!d->m_settingsGroup.isEmpty()) settings->endGroup(); - } } void AspectContainer::setSettingsGroup(const QString &key) diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index 1f2712bff01..d4a57def07f 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -520,7 +520,7 @@ public: void fromMap(const QVariantMap &map); void toMap(QVariantMap &map) const; - void readSettings(const QSettings *settings); + void readSettings(QSettings *settings); void writeSettings(QSettings *settings) const; void setSettingsGroup(const QString &key);