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);