Utils: Allow nested groups for settings keys

Will be helpful for the Autotest settings

Change-Id: I83a1cc27021124a14d8e8023164f20ede6c4d80e
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2021-03-24 16:34:05 +01:00
parent 19558c82c8
commit bfe398072d
2 changed files with 20 additions and 10 deletions

View File

@@ -2087,7 +2087,7 @@ class AspectContainerPrivate
public: public:
QList<BaseAspect *> m_items; // Not owned QList<BaseAspect *> m_items; // Not owned
bool m_autoApply = true; bool m_autoApply = true;
QString m_settingsGroup; QStringList m_settingsGroup;
}; };
} // Internal } // Internal
@@ -2130,27 +2130,36 @@ void AspectContainer::toMap(QVariantMap &map) const
void AspectContainer::readSettings(QSettings *settings) void AspectContainer::readSettings(QSettings *settings)
{ {
if (!d->m_settingsGroup.isEmpty()) for (const QString &group : d->m_settingsGroup)
settings->beginGroup(d->m_settingsGroup); settings->beginGroup(group);
for (BaseAspect *aspect : qAsConst(d->m_items)) for (BaseAspect *aspect : qAsConst(d->m_items))
aspect->readSettings(settings); aspect->readSettings(settings);
if (!d->m_settingsGroup.isEmpty())
for (int i = 0; i != d->m_settingsGroup.size(); ++i)
settings->endGroup(); settings->endGroup();
} }
void AspectContainer::writeSettings(QSettings *settings) const void AspectContainer::writeSettings(QSettings *settings) const
{ {
if (!d->m_settingsGroup.isEmpty()) for (const QString &group : d->m_settingsGroup)
settings->beginGroup(d->m_settingsGroup); settings->beginGroup(group);
for (BaseAspect *aspect : qAsConst(d->m_items)) for (BaseAspect *aspect : qAsConst(d->m_items))
aspect->writeSettings(settings); aspect->writeSettings(settings);
if (!d->m_settingsGroup.isEmpty())
for (int i = 0; i != d->m_settingsGroup.size(); ++i)
settings->endGroup(); 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() void AspectContainer::apply()

View File

@@ -534,7 +534,8 @@ public:
void readSettings(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 &groupKey);
void setSettingsGroups(const QString &groupKey, const QString &subGroupKey);
void apply(); void apply();
void cancel(); void cancel();