Repository navigation
Expand file tree
/
Copy pathstorageManager.cpp
More file actions
101 lines (85 loc) · 3.02 KB
/
Copy pathstorageManager.cpp
File metadata and controls
101 lines (85 loc) · 3.02 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "storageManager.h"
void StorageManager::saveData(const QJsonObject &data, const QString &fileName) {
QJsonDocument doc(data);
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Could not open" << fileName << "for writing";
return;
}
file.write(doc.toJson());
file.close();
qDebug() << "Data saved to" << fileName;
}
void StorageManager::saveUserProfile(const UserProfile &user, const QString &fileName) {
QJsonObject userJson = user.toJson();
QJsonDocument doc(userJson);
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Could not open" << fileName << "for writing";
return;
}
file.write(doc.toJson());
file.close();
qDebug() << "User profile saved to" << fileName;
}
QJsonObject StorageManager::loadMeasurement(const QString &fileName) const {
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Could not open" << fileName << "for reading";
return QJsonObject();
}
QJsonDocument doc = QJsonDocument::fromJson(file.readAll());
file.close();
return doc.object();
}
QJsonObject StorageManager::loadData(const QString &fileName) const {
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Could not open" << fileName << "for reading";
return QJsonObject();
}
QJsonDocument doc = QJsonDocument::fromJson(file.readAll());
file.close();
return doc.object();
}
UserProfile StorageManager::loadUserProfile(const QString &fileName) const {
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Could not open" << fileName << "for reading";
return UserProfile();
}
QJsonDocument doc = QJsonDocument::fromJson(file.readAll());
file.close();
UserProfile user;
user.fromJson(doc.object());
return user;
}
void StorageManager::saveMeasurement(const QJsonObject &measurement, const QString &fileName) {
QDir measurementDir("measurements");
if (!measurementDir.exists()) {
measurementDir.mkpath(".");
}
QString fullPath = measurementDir.filePath(fileName);
QJsonDocument doc(measurement);
QFile file(fullPath);
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Could not open" << fullPath << "for writing";
return;
}
file.write(doc.toJson(QJsonDocument::Indented));
file.close();
qDebug() << "Measurement saved to" << fullPath;
}
QList<QJsonObject> StorageManager::loadAllMeasurements() {
QList<QJsonObject> measurements;
QDir measurementDir("measurements");
if (!measurementDir.exists()) return measurements;
QStringList fileList = measurementDir.entryList(QStringList() << "*.json", QDir::Files);
for (const QString &filename : fileList) {
QJsonObject measurement = loadMeasurement(measurementDir.filePath(filename));
if (!measurement.isEmpty()) {
measurements.append(measurement);
}
}
return measurements;
}