-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConfigure.cpp
160 lines (140 loc) · 4.86 KB
/
Configure.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
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include "Configure.h"
//json
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QJsonValue>
#include <QFile>
QString GetConfigPath()
{
QString strCorePath = QCoreApplication::applicationFilePath();
return strCorePath + ".json";
}
int ReadConfigFile(const QString& stConfigPath, config_s& _cfg)
{
QFile file(stConfigPath);
if(!file.open(QIODevice::ReadWrite)) {
return -1;
}
QByteArray ba = file.readAll();
QJsonParseError complex_json_error;
QJsonDocument complex_parse_doucment = QJsonDocument::fromJson(ba, &complex_json_error);
if (complex_json_error.error == QJsonParseError::NoError)
{
if (complex_parse_doucment.isObject())
{
//开始解析json对象
QJsonObject jsonObject = complex_parse_doucment.object();
if (jsonObject.contains("remItem"))
{
QJsonValue login_value = jsonObject.take("remItem");
if (login_value.isBool())
{
_cfg.bRemItem = login_value.toBool();
}
}
if (jsonObject.contains("remPath"))
{
QJsonValue remPath_value = jsonObject.take("remPath");
if (remPath_value.isBool())
{
_cfg.bRemPath = remPath_value.toBool();
}
}
if (jsonObject.contains("DstPaths"))
{
QJsonValue arrays_value = jsonObject.take("DstPaths");
if (arrays_value.isArray())
{
QJsonArray arrDstPathArray = arrays_value.toArray();
_cfg.lDirPaths.clear();
for (int i = 0; i < arrDstPathArray.size(); i++)
{
QJsonValue subArrayValue = arrDstPathArray.at(i);
if (subArrayValue.isString())
{
_cfg.lDirPaths.push_back(subArrayValue.toString());
}
}
}
}
if (jsonObject.contains("ItemPaths"))
{
QJsonValue itemPath_value = jsonObject.take("ItemPaths");
if (itemPath_value.isArray())
{
QJsonArray itemArray = itemPath_value.toArray();
_cfg.lItemPaths.clear();
for (int i = 0; i < itemArray.size(); i++)
{
QJsonValue subArrayValue = itemArray.at(i);
if (subArrayValue.isString())
{
_cfg.lItemPaths.push_back(subArrayValue.toString());
}
}
}
}
if (jsonObject.contains("Suffixs"))
{
QJsonValue suffix_value = jsonObject.take("Suffixs");
if (suffix_value.isArray())
{
QJsonArray suffixArray = suffix_value.toArray();
_cfg.lSuffixs.clear();
for (int i = 0; i < suffixArray.size(); i++)
{
QJsonValue subArrayValue = suffixArray.at(i);
if (subArrayValue.isString())
{
_cfg.lSuffixs.push_back(subArrayValue.toString());
}
}
}
}
}
}
return 0;
}
int WriteConfigFile(const QString& stConfigPath, config_s& _cfg)
{
QFile file(stConfigPath);
if(!file.open(QIODevice::ReadWrite)) {
return -1;
}
// 清空文件中的原有内容
file.resize(0);
// 使用QJsonObject对象插入键值对。
QJsonObject jsonObject;
jsonObject.insert("remItem", _cfg.bRemItem);
jsonObject.insert("remPath", _cfg.bRemPath);
QJsonArray jsonArrayAccountInfo;
for(int i = 0; i < _cfg.lDirPaths.size(); i++)
{
QString stCurPath = _cfg.lDirPaths[i];
jsonArrayAccountInfo.append(stCurPath);
}
jsonObject.insert("DstPaths", jsonArrayAccountInfo);
QJsonArray jsonArrayItems;
for(int i = 0; i < _cfg.lItemPaths.size(); i++)
{
QString stCurPath = _cfg.lItemPaths[i];
jsonArrayItems.append(stCurPath);
}
jsonObject.insert("ItemPaths", jsonArrayItems);
QJsonArray jsonArraySuffixs;
for(int i = 0; i < _cfg.lSuffixs.size(); i++)
{
QString stCurPath = _cfg.lSuffixs[i];
jsonArraySuffixs.append(stCurPath);
}
jsonObject.insert("Suffixs", jsonArraySuffixs);
// 使用QJsonDocument设置该json对象
QJsonDocument jsonDoc;
jsonDoc.setObject(jsonObject);
// 将json以文本形式写入文件并关闭文件。
file.write(jsonDoc.toJson());
file.close();
return 0;
}