summaryrefslogtreecommitdiffstats
path: root/src/interfaceframework/qifconfiguration.cpp
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2022-11-24 16:50:31 +0100
committerDominik Holland <dominik.holland@qt.io>2022-12-07 11:29:19 +0100
commit5085f5f1ec3c194afec2aef77a6519bc151bcccd (patch)
treec2573add38cbdba49f129a74fe3c87f77569613a /src/interfaceframework/qifconfiguration.cpp
parent5bdda53b86fddfebc322c4b7fe50ab6881649160 (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.cpp20
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()) {