-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathprofileconfigparserimpl.cpp
More file actions
78 lines (60 loc) · 2.11 KB
/
profileconfigparserimpl.cpp
File metadata and controls
78 lines (60 loc) · 2.11 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "profileconfigparserimpl.h"
#include "macros.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
using namespace yasem;
ProfileConfigParserImpl::ProfileConfigParserImpl()
{
DEBUG() << "Profile paser initialized";
}
SDK::ProfileConfiguration ProfileConfigParserImpl::parseOptions(SDK::ProfileConfiguration &config, const QByteArray &data)
{
DEBUG() << data;
QJsonParseError *error = NULL;
QJsonDocument doc = QJsonDocument::fromJson(data, error);
if(doc.isNull())
{
WARN() << error->errorString();
return config;
}
QJsonArray root = doc.array();
for(int index = 0; index < config.groups.size(); index++)
{
SDK::ProfileConfigGroup group = config.groups.at(index);
config.groups.append(parseGroup(group, root.at(index).toObject()));
}
return config;
}
SDK::ProfileConfigGroup ProfileConfigParserImpl::parseGroup(SDK::ProfileConfigGroup &group, const QJsonObject &data)
{
group.m_title = data.value("title").toString();
QJsonArray options = data.value("options").toArray();
for(int index = 0; index < options.size(); index++)
{
SDK::ConfigOption option = group.m_options.at(index);
group.m_options.append(parseOption(option, options.at(index).toObject()));
}
return group;
}
SDK::ConfigOption ProfileConfigParserImpl::parseOption(SDK::ConfigOption &option, const QJsonObject &data)
{
option.m_tag = data.value("tag").toString();
option.m_name = data.value("name").toString();
option.m_type = data.value("type").toString();
option.m_default_value = data.value("default").toString();
option.m_title = data.value("title").toString();
option.m_comment = data.value("comment").toString();
option.m_options = parseSubOptions(data.value("options").toObject());
return option;
}
QHash<QString, QString> ProfileConfigParserImpl::parseSubOptions(const QJsonObject &data)
{
QHash<QString, QString> subOptions;
for(QString key: data.keys())
{
QString title = data.value(key).toString();
subOptions.insert(key, title);
}
return subOptions;
}