Utils: simplify loading/saving grouped settings

Change-Id: I8e06fb301eab193137f3e77d841698b9f4881deb
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
David Schulz
2021-03-24 11:16:18 +01:00
parent 8e507c215b
commit eeedf4cd8c
2 changed files with 12 additions and 23 deletions

View File

@@ -2060,36 +2060,25 @@ void AspectContainer::toMap(QVariantMap &map) const
aspect->toMap(map); aspect->toMap(map);
} }
void AspectContainer::readSettings(const QSettings *settings) void AspectContainer::readSettings(QSettings *settings)
{ {
if (d->m_settingsGroup.isEmpty()) { if (!d->m_settingsGroup.isEmpty())
settings->beginGroup(d->m_settingsGroup);
for (BaseAspect *aspect : qAsConst(d->m_items)) for (BaseAspect *aspect : qAsConst(d->m_items))
aspect->readSettings(settings); aspect->readSettings(settings);
} else { if (!d->m_settingsGroup.isEmpty())
const QString keyRoot = d->m_settingsGroup + '/'; settings->endGroup();
forEachAspect([settings, keyRoot](BaseAspect *aspect) {
QString key = aspect->settingsKey();
const QVariant value = settings->value(keyRoot + key, aspect->defaultValue());
aspect->setValue(value);
});
}
} }
void AspectContainer::writeSettings(QSettings *settings) const void AspectContainer::writeSettings(QSettings *settings) const
{ {
if (d->m_settingsGroup.isEmpty()) { if (!d->m_settingsGroup.isEmpty())
settings->beginGroup(d->m_settingsGroup);
for (BaseAspect *aspect : qAsConst(d->m_items)) for (BaseAspect *aspect : qAsConst(d->m_items))
aspect->writeSettings(settings); aspect->writeSettings(settings);
} else { if (!d->m_settingsGroup.isEmpty())
settings->remove(d->m_settingsGroup);
settings->beginGroup(d->m_settingsGroup);
forEachAspect([settings](BaseAspect *aspect) {
QtcSettings::setValueWithDefault(settings, aspect->settingsKey(),
aspect->value(), aspect->defaultValue());
});
settings->endGroup(); settings->endGroup();
} }
}
void AspectContainer::setSettingsGroup(const QString &key) void AspectContainer::setSettingsGroup(const QString &key)
{ {

View File

@@ -520,7 +520,7 @@ public:
void fromMap(const QVariantMap &map); void fromMap(const QVariantMap &map);
void toMap(QVariantMap &map) const; void toMap(QVariantMap &map) const;
void readSettings(const QSettings *settings); void readSettings(QSettings *settings);
void writeSettings(QSettings *settings) const; void writeSettings(QSettings *settings) const;
void setSettingsGroup(const QString &key); void setSettingsGroup(const QString &key);