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:
QList<BaseAspect *> 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()

View File

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