-
-
Notifications
You must be signed in to change notification settings - Fork 401
/
Copy pathSettingsManager.cpp
59 lines (50 loc) · 1.62 KB
/
SettingsManager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// proj
#include <hyperion/SettingsManager.h>
#include <db/SettingsTable.h>
#include <utils/JsonUtils.h>
#include <utils/jsonschema/QJsonFactory.h>
#include <QPair>
using namespace semver;
SettingsManager::SettingsManager(quint8 instance, QObject* parent)
: QObject(parent)
, _log(Logger::getInstance("SETTINGSMGR", "I" + QString::number(instance)))
, _instance(instance)
, _sTable(new SettingsTable(instance, this))
{
_sTable->addMissingDefaults();
}
QJsonDocument SettingsManager::getSetting(settings::type type) const
{
return getSetting(settings::typeToString(type));
}
QJsonDocument SettingsManager::getSetting(const QString& type) const
{
return _sTable->getSettingsRecordJson(type);
}
QJsonObject SettingsManager::getSettings(const QStringList& filteredTypes ) const
{
return _sTable->getSettings(filteredTypes);
}
QJsonObject SettingsManager::getSettings(const QVariant& instance, const QStringList& filteredTypes ) const
{
return _sTable->getSettings(instance, filteredTypes);
}
QPair<bool, QStringList> SettingsManager::saveSettings(const QJsonObject& config)
{
QStringList errorList;
for (auto &key : config.keys())
{
const QJsonValue configItem = config.value(key);
const QString data = JsonUtils::jsonValueToQString(configItem);
if (_sTable->getSettingsRecordString(key) != data)
{
if (!_sTable->createSettingsRecord(key, data))
{
errorList.append(QString("Failed to save configuration item: %1").arg(key));
return qMakePair (false, errorList);
}
emit settingsChanged(settings::stringToType(key), QJsonDocument::fromVariant(configItem.toVariant()));
}
}
return qMakePair (true, errorList );
}