-
Notifications
You must be signed in to change notification settings - Fork 147
Expand file tree
/
Copy pathQLanguage.cpp
More file actions
79 lines (64 loc) · 1.49 KB
/
QLanguage.cpp
File metadata and controls
79 lines (64 loc) · 1.49 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
77
78
79
// QCodeEditor
#include <QLanguage>
// Qt
#include <QIODevice>
#include <QXmlStreamReader>
QLanguage::QLanguage(QIODevice* device, QObject* parent) :
QObject(parent),
m_loaded(false),
m_list()
{
load(device);
}
bool QLanguage::load(QIODevice* device)
{
if (device == nullptr)
{
return false;
}
QXmlStreamReader reader(device);
QString name;
QStringList list;
bool readText = false;
while (!reader.atEnd() && !reader.hasError())
{
auto type = reader.readNext();
if (type == QXmlStreamReader::TokenType::StartElement)
{
if (reader.name().toString() == "section") {
if (!list.empty())
{
m_list[name] = list;
list.clear();
}
name = reader.attributes().value("name").toString();
} else if (reader.name().toString() == "name") {
readText = true;
}
}
else if (type == QXmlStreamReader::TokenType::Characters &&
readText)
{
list << reader.text().toString();
readText = false;
}
}
if (!list.empty())
{
m_list[name] = list;
}
m_loaded = !reader.hasError();
return m_loaded;
}
QStringList QLanguage::keys()
{
return m_list.keys();
}
QStringList QLanguage::names(const QString& key)
{
return m_list[key];
}
bool QLanguage::isLoaded() const
{
return m_loaded;
}