From bfe398072d7a1beea7665cf158aa2727d2400eac Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 24 Mar 2021 16:34:05 +0100 Subject: [PATCH] Utils: Allow nested groups for settings keys Will be helpful for the Autotest settings Change-Id: I83a1cc27021124a14d8e8023164f20ede6c4d80e Reviewed-by: David Schulz --- src/libs/utils/aspects.cpp | 27 ++++++++++++++++++--------- src/libs/utils/aspects.h | 3 ++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 34143fb1f17..9bab649895b 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -2087,7 +2087,7 @@ class AspectContainerPrivate public: QList m_items; // Not owned bool m_autoApply = true; - QString m_settingsGroup; + QStringList m_settingsGroup; }; } // Internal @@ -2130,27 +2130,36 @@ void AspectContainer::toMap(QVariantMap &map) const void AspectContainer::readSettings(QSettings *settings) { - if (!d->m_settingsGroup.isEmpty()) - settings->beginGroup(d->m_settingsGroup); + for (const QString &group : d->m_settingsGroup) + settings->beginGroup(group); + for (BaseAspect *aspect : qAsConst(d->m_items)) aspect->readSettings(settings); - if (!d->m_settingsGroup.isEmpty()) + + for (int i = 0; i != d->m_settingsGroup.size(); ++i) settings->endGroup(); } void AspectContainer::writeSettings(QSettings *settings) const { - if (!d->m_settingsGroup.isEmpty()) - settings->beginGroup(d->m_settingsGroup); + for (const QString &group : d->m_settingsGroup) + settings->beginGroup(group); + for (BaseAspect *aspect : qAsConst(d->m_items)) aspect->writeSettings(settings); - if (!d->m_settingsGroup.isEmpty()) + + for (int i = 0; i != d->m_settingsGroup.size(); ++i) settings->endGroup(); } -void AspectContainer::setSettingsGroup(const QString &key) +void AspectContainer::setSettingsGroup(const QString &groupKey) { - d->m_settingsGroup = key; + d->m_settingsGroup = QStringList{groupKey}; +} + +void AspectContainer::setSettingsGroups(const QString &groupKey, const QString &subGroupKey) +{ + d->m_settingsGroup = QStringList{groupKey, subGroupKey}; } void AspectContainer::apply() diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index b54d46e0ce7..e8d8d99cee0 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -534,7 +534,8 @@ public: void readSettings(QSettings *settings); void writeSettings(QSettings *settings) const; - void setSettingsGroup(const QString &key); + void setSettingsGroup(const QString &groupKey); + void setSettingsGroups(const QString &groupKey, const QString &subGroupKey); void apply(); void cancel();