diff options
Diffstat (limited to 'src/lib/corelib/tools/settings.cpp')
-rw-r--r-- | src/lib/corelib/tools/settings.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/lib/corelib/tools/settings.cpp b/src/lib/corelib/tools/settings.cpp index 8b22c45e5..4a3d9d727 100644 --- a/src/lib/corelib/tools/settings.cpp +++ b/src/lib/corelib/tools/settings.cpp @@ -135,13 +135,22 @@ QStringList Settings::allKeys(Scopes scopes) const return keys; } -QStringList Settings::directChildren(const QString &parentGroup, Scope scope) const +QStringList Settings::directChildren(const QString &parentGroup, Scopes scopes) const { - QSettings * const settings = settingsForScope(scope); - settings->beginGroup(internalRepresentation(parentGroup)); - QStringList children = settings->childGroups(); - children << settings->childKeys(); - settings->endGroup(); + auto helper = [this, &parentGroup](const Scope scope) { + QSettings * const settings = settingsForScope(scope); + settings->beginGroup(internalRepresentation(parentGroup)); + QStringList children = settings->childGroups(); + children << settings->childKeys(); + settings->endGroup(); + return children; + }; + + QStringList children; + if (scopes & UserScope) + children += helper(UserScope); + if (scopes & SystemScope) + children += helper(SystemScope); fixupKeys(children); return children; } |