diff options
| author | Dominik Holland <dominik.holland@qt.io> | 2022-11-24 16:50:31 +0100 |
|---|---|---|
| committer | Dominik Holland <dominik.holland@qt.io> | 2022-12-07 11:29:19 +0100 |
| commit | 5085f5f1ec3c194afec2aef77a6519bc151bcccd (patch) | |
| tree | c2573add38cbdba49f129a74fe3c87f77569613a /src/interfaceframework/qifconfiguration.cpp | |
| parent | 5bdda53b86fddfebc322c4b7fe50ab6881649160 (diff) | |
QIfConfiguration: Fix backendSettings ini parsing
Reading QVariantMaps from a ini file using QSettings
is only possible when the binary format is used.
To make the ini human-readable, we use '/' as a
separator in key names and parse the values ourself.
Change-Id: Id9203913052e04eab442903142006a1a57491be2
Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Diffstat (limited to 'src/interfaceframework/qifconfiguration.cpp')
| -rw-r--r-- | src/interfaceframework/qifconfiguration.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/interfaceframework/qifconfiguration.cpp b/src/interfaceframework/qifconfiguration.cpp index f497ac5b..4215dccc 100644 --- a/src/interfaceframework/qifconfiguration.cpp +++ b/src/interfaceframework/qifconfiguration.cpp @@ -8,7 +8,6 @@ #include "qifqmlconversion_helper.h" #include <QLibraryInfo> -#include <QSettings> #include <QDir> QT_BEGIN_NAMESPACE @@ -58,6 +57,18 @@ QIfAbstractFeature::DiscoveryMode discoveryModeFromString(const QString &modeStr return QIfAbstractFeature::InvalidAutoDiscovery; } +QVariantMap QIfConfigurationManager::readGroup(QSettings *settings, QAnyStringView group) +{ + QVariantMap map; + settings->beginGroup(group); + for (const QString& key : settings->childKeys()) + map.insert(key, settings->value(key)); + for (const QString& group : settings->childGroups()) + map.insert(group, readGroup(settings, group)); + settings->endGroup(); + return map; +} + void QIfConfigurationManager::readInitialSettings(const QString &configPath) { qCDebug(qLcIfConfig) << "Loading initial settings from " << configPath; @@ -68,8 +79,6 @@ void QIfConfigurationManager::readInitialSettings(const QString &configPath) auto settingsObject = new QIfSettingsObject; settings.beginGroup(group); - settingsObject->serviceSettingsSet = settings.contains("serviceSettings"); - settingsObject->serviceSettings = settings.value("serviceSettings").toMap(); settingsObject->simulationFileSet = settings.contains("simulationFile"); settingsObject->simulationFile = settings.value("simulationFile").toString(); settingsObject->simulationDataFileSet = settings.contains("simulationDataFile"); @@ -77,6 +86,11 @@ void QIfConfigurationManager::readInitialSettings(const QString &configPath) settingsObject->preferredBackendsSet = settings.contains("preferredBackends"); settingsObject->preferredBackends = settings.value("preferredBackends").toStringList(); QVariant discoveryModeVariant = settings.value("discoveryMode"); + + if (settings.childGroups().contains("serviceSettings")) { + settingsObject->serviceSettingsSet = true; + settingsObject->serviceSettings = readGroup(&settings, "serviceSettings"); + } settings.endGroup(); if (discoveryModeVariant.isValid()) { |
