2024-03-04 09:57:20 +00:00
|
|
|
#include "analysisjson.h"
|
|
|
|
#include <QFile>
|
|
|
|
#include <QJsonObject>
|
|
|
|
#include <QJsonArray>
|
|
|
|
#include <QDir>
|
|
|
|
#include <QFileInfo>
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
|
|
AnalysisJson::AnalysisJson(QString path)
|
|
|
|
{
|
|
|
|
if(QFile::exists(path)){
|
|
|
|
QFile file(path);
|
|
|
|
if(file.open(QIODevice::OpenModeFlag::ReadOnly))
|
|
|
|
{
|
|
|
|
m_json = QJsonDocument::fromJson(file.readAll());
|
|
|
|
file.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
std::vector<AnalysisJson::json_node> AnalysisJson::GetNode()
|
|
|
|
{
|
|
|
|
std::vector<AnalysisJson::json_node> nodes;
|
|
|
|
if(!m_json.isObject())
|
|
|
|
return nodes;
|
|
|
|
auto obj = m_json.object();
|
|
|
|
|
|
|
|
auto keys = obj.keys().toVector();
|
|
|
|
std::sort(keys.begin(),keys.end(),[](QString x,QString y){
|
|
|
|
return x.toInt()<y.toInt();
|
|
|
|
});
|
|
|
|
|
|
|
|
for(auto key : keys)
|
|
|
|
{
|
|
|
|
if(key != "global")
|
|
|
|
nodes.push_back(json_node{ obj[key].toObject()["title"].toString(),
|
|
|
|
obj[key].toObject()["name"].toString(),
|
|
|
|
obj[key].toObject()["man"].toBool(),
|
|
|
|
obj[key].toObject()["desc"].toString(),
|
|
|
|
obj[key].toObject()["station"].toString(),
|
2024-07-03 02:52:54 +00:00
|
|
|
obj[key].toObject()["resolution"].toInt(),
|
|
|
|
obj[key].toObject()["dynamic-correct-data"].toString()
|
2024-03-04 09:57:20 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
return nodes;
|
|
|
|
}
|
|
|
|
|
|
|
|
AnalysisJson::json_global AnalysisJson::GetGlobal()
|
|
|
|
{
|
|
|
|
if(!m_json.isObject())
|
|
|
|
return json_global();
|
|
|
|
auto obj = m_json.object()["global"].toObject();
|
|
|
|
return json_global{ obj["vid-to"].toInt(),
|
|
|
|
obj["pid-to"].toInt(),
|
|
|
|
obj["speed-mode"].toInt(),
|
|
|
|
obj["sleep-time"].toInt(),
|
|
|
|
obj["cpu-size"].toInt(),
|
|
|
|
obj["disk-size"].toInt(),
|
|
|
|
obj["lock-device"].toBool(),
|
|
|
|
obj["device-model"].toString(),
|
2024-07-12 06:50:54 +00:00
|
|
|
obj["firmware-version"].toString(),
|
|
|
|
obj["motor-version"].toString()
|
2024-03-04 09:57:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bool AnalysisJson::savejson(QString path, std::vector<AnalysisJson::json_node> json)
|
|
|
|
{
|
|
|
|
|
|
|
|
QFileInfo info(path);
|
|
|
|
if(!info.isFile())
|
|
|
|
return false;
|
|
|
|
if(!info.dir().exists())
|
|
|
|
QDir().mkdir(info.dir().path());
|
|
|
|
QJsonDocument doc;
|
|
|
|
QJsonObject obj;
|
|
|
|
int index =1;
|
|
|
|
for(auto json_ : json)
|
|
|
|
{
|
|
|
|
QJsonObject tmp_obj;
|
|
|
|
tmp_obj["title"] = json_.title;
|
|
|
|
tmp_obj["name"] = json_.name;
|
|
|
|
tmp_obj["man"] = json_.is_man;
|
|
|
|
tmp_obj["desc"] = json_.desc;
|
|
|
|
obj[QString::number(index++)] = tmp_obj;
|
|
|
|
}
|
|
|
|
doc.setObject(obj);
|
|
|
|
QFile file(path);
|
|
|
|
if(file.open(QIODevice::OpenModeFlag::WriteOnly))
|
|
|
|
{
|
|
|
|
file.write(doc.toJson());
|
|
|
|
file.close();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool AnalysisJson::savejson(QString path, QJsonDocument doc)
|
|
|
|
{
|
|
|
|
QFileInfo info(path);
|
|
|
|
if(!info.isFile())
|
|
|
|
return false;
|
|
|
|
if(!info.dir().exists())
|
|
|
|
QDir().mkdir(info.dir().path());
|
|
|
|
QFile file(path);
|
|
|
|
if(file.open(QIODevice::OpenModeFlag::WriteOnly))
|
|
|
|
{
|
|
|
|
file.write(doc.toJson());
|
|
|
|
file.close();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|