MCPcopy Create free account
hub / github.com/awawa-dev/HyperHDR / InstanceConfig

Method InstanceConfig

sources/base/InstanceConfig.cpp:16–144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14std::atomic<bool> InstanceConfig::_backupMade(false);
15
16InstanceConfig::InstanceConfig(bool master, quint8 instanceIndex, QObject* parent)
17 : QObject(parent)
18 , _log(Logger::getInstance(QString("INSTANCE_CFG%1").arg((master) ? QString() : QString::number(instanceIndex))))
19{
20 QMutexLocker locker(&_lockerSettingsManager);
21
22 Info(_log, "Loading instance configuration");
23
24 _sTable = std::unique_ptr<SettingsTable>(new SettingsTable(instanceIndex));
25
26 // get schema
27 if (_schemaJson.isEmpty())
28 {
29 Q_INIT_RESOURCE(resource);
30 try
31 {
32 _schemaJson = QJsonUtils::readSchema(":/hyperhdr-schema");
33 }
34 catch (const std::runtime_error& error)
35 {
36 throw std::runtime_error(error.what());
37 }
38 }
39
40 // get default config
41 QJsonObject defaultConfig;
42 for (settings::type selector = settings::type::SNDEFFECT; selector != settings::type::INVALID; selector = settings::type(((int)selector) + 1))
43 {
44 if (selector != settings::type::LEDS)
45 defaultConfig.insert(typeToString(selector), QJsonObject());
46 else
47 defaultConfig.insert(typeToString(selector), QJsonArray());
48 }
49
50 // transform json to string lists
51 QStringList keyList = defaultConfig.keys();
52 QStringList defValueList;
53 for (const auto& key : keyList)
54 {
55 if (defaultConfig[key].isObject())
56 {
57 defValueList << QString(QJsonDocument(defaultConfig[key].toObject()).toJson(QJsonDocument::Compact));
58 }
59 else if (defaultConfig[key].isArray())
60 {
61 defValueList << QString(QJsonDocument(defaultConfig[key].toArray()).toJson(QJsonDocument::Compact));
62 }
63 }
64
65 // fill database with default data if required
66 bool hasData = false;
67 for (const auto& key : keyList)
68 {
69 QString val = defValueList.takeFirst();
70 // prevent overwrite
71 if (!_sTable->recordExist(key))
72 _sTable->createSettingsRecord(key, val);
73 else

Callers

nothing calls this directly

Calls 13

readSchemaFunction · 0.85
typeEnum · 0.85
typeToStringFunction · 0.85
isEmptyMethod · 0.80
recordExistMethod · 0.80
createSettingsRecordMethod · 0.80
getSettingsRecordMethod · 0.80
countMethod · 0.80
setSchemaMethod · 0.80
getMessagesMethod · 0.80
createLocalBackupMethod · 0.80

Tested by

no test coverage detected