-
Notifications
You must be signed in to change notification settings - Fork 5
/
global.h
141 lines (120 loc) · 3.13 KB
/
global.h
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#ifndef GLOBAL_H
#define GLOBAL_H
#include <QDebug>
#include <QString>
#include <QVariantMap>
struct Option2 {
enum Type {
Unknown,
Bool,
Enum,
String,
OptionalString,
AddString,
Void
};
QString name;
Type type;
QString typeString;
QVariant values;
QString moduleName;
QString filePath;
void setType(const QString &typeString) {
type = Unknown;
if (typeString == "boolean")
type = Bool;
if (typeString == "enum")
type = Enum;
if (typeString == "string")
type = String;
if (typeString == "optionalString")
type = OptionalString;
if (typeString == "addString")
type = AddString;
if (typeString == "void")
type = Void;
this->typeString = typeString;
}
QVariant createValues() {
if (type == Enum || type == AddString) {
QVariantList list;
if (values.type() == QVariant::Map) {
auto keys = values.toMap().keys();
foreach(QString k, keys)
list.append(k);
}
if (values.type() == QVariant::List) {
list = values.toList();
}
return list;
}
return QVariant();
}
QStringList applyValue(const QVariant &val) const {
switch (type) {
case Unknown:
return QStringList();
case Bool:
if (val.type() == QVariant::Bool) {
if (val.toBool())
return QStringList() << "-" + name;
else
return QStringList() << "-no-" + name;
}
break;
case Enum:
if (val.type() == QVariant::String)
return QStringList() << "-" + val.toString() + "-" + name;
break;
case OptionalString: {
QStringList ret;
ret << "-name";
if (!val.toString().isEmpty())
ret << val.toString();
return ret;
}
case String:
if (val.type() == QVariant::String)
return QStringList() << "-" + name << val.toString();
break;
case AddString: {
QStringList ret;
if (val.type() == QVariant::List) {
auto list = val.toList();
foreach (QVariant v, list)
ret << "-" + name << v.toString();
return ret;
}
break;
}
case Void:
if (val.type() == QVariant::Bool && val.toBool())
return QStringList() << "-" + name;
break;
}
return QStringList();
}
};
Q_DECLARE_METATYPE(Option2*);
struct Feature {
QString name;
QString label;
QString purpose;
QString section;
QString moduleName;
QString filePath;
QStringList condition;
};
Q_DECLARE_METATYPE(Feature*);
enum Roles {
CheckStateRole = Qt::UserRole,
DropDownRole,
TypeRole,
DataRole
};
class Global
{
public:
Global();
};
#endif // GLOBAL_H