-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings.cpp
72 lines (60 loc) · 1.34 KB
/
settings.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
#include "settings.h"
void Settings::saveJson()
{
QFile qfile(m_saveFile);
qfile.open( QIODevice::WriteOnly | QIODevice::Text);
QJsonDocument saveDoc( m_object);
qfile.write(saveDoc.toJson());
qfile.close();
}
void Settings::openJson()
{
QFile qfile(m_saveFile);
if (qfile.exists())
{
qfile.open( QIODevice::ReadOnly | QIODevice::Text);
QByteArray jsonData = qfile.readAll();
QJsonDocument jsonDoc = QJsonDocument::fromJson( jsonData);
m_object = jsonDoc.object();
qfile.close();
} else {
m_object = DefaultSettings::object();
}
}
Settings::Settings(QString fileName)
{
m_saveFile = fileName;
openJson();
}
Settings::~Settings()
{
saveJson();
}
QJsonValue Settings::value(const QString &key)
{
return m_object.value(key);
}
void Settings::insert(const QString &key, const QJsonValue &value)
{
m_objectChanges.insert(key, value);
}
void Settings::undoChanges()
{
m_objectChanges = QJsonObject();
}
void Settings::applyChanges()
{
QJsonObject::const_iterator it = m_objectChanges.begin();
while (it != m_objectChanges.end())
{
m_object.remove( it.key());
m_object.insert( it.key(), it.value());
++it;
}
emit sSettingsChanged();
}
void Settings::applyChangesAndSave()
{
applyChanges();
saveJson();
}