#include "Config.h" Config::Config(QObject *parent) : QObject(parent) { qInfo() << "Config Operation"; QDir *Dir = new QDir; if(!Dir->exists("./Config")) if(Dir->mkdir("./Config"))//如果文件夹不存在就新建 { qInfo() << "create config dir"; } delete Dir; Dir = nullptr; loadJson(ConfigFile); } Config::~Config() { } void Config::loadJson(const QString& jsonFilename) { if (jsonFilename.isEmpty()) { return; } qDebug() << "Loading " << jsonFilename; QFile jsonFile(jsonFilename); if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qWarning() << "Unable to open file" << jsonFilename << jsonFile.errorString(); return; } QByteArray bytes = jsonFile.readAll(); jsonFile.close(); QJsonParseError jsonParseError; QJsonDocument doc = QJsonDocument::fromJson(bytes, &jsonParseError); if (jsonParseError.error != QJsonParseError::NoError) { qWarning() << jsonFilename << "Unable to open json document" << jsonParseError.errorString(); return; } ConfigJson = doc.object(); } QJsonObject Config::getJsonObject(QString key) { QJsonObject obj; QJsonValue Value = ConfigJson.value(key); if(Value.isObject()) { obj = Value.toObject(); } return obj; } void Config::setJsonObject(QString key,QJsonValue value) { ConfigJson[key] = value; QFile file(ConfigFile); if(!file.open(QIODevice::ReadWrite|QFile::Truncate)) { qDebug() << "File open error"; } QJsonDocument doc(QJsonDocument::fromJson(file.readAll())); doc.setObject(ConfigJson); file.write(doc.toJson()); file.close(); } QString Config::getCommandFile() { QJsonObject obj = getJsonObject("commandfile"); QString file = obj.value("path").toString(); return file; } void Config::setCommandFile(QString file) { QJsonObject obj; obj["path"] = file; setJsonObject("commandfile",obj); } void Config::getConnet(QString key,QVariant *type, QVariant *iauto, QVariant *par1,QVariant *par2, QVariant *par3,QVariant *par4, QVariant *par5) { QJsonObject obj = getJsonObject(key); *type = obj.value("type").toString(); *iauto = obj.value("auto").toBool(); *par1 = obj.value("param1").toString(); *par2 = obj.value("param2").toString(); *par3 = obj.value("param3").toString(); *par4 = obj.value("param4").toString(); *par5 = obj.value("param5").toString(); } void Config::setConnet(QString key, QVariant type, QVariant iauto, QVariant par1, QVariant par2, QVariant par3, QVariant par4, QVariant par5) { QJsonObject obj; obj["type"] = type.toString(); obj["auto"] = iauto.toBool(); obj["param1"] = par1.toString(); obj["param2"] = par2.toString(); obj["param3"] = par3.toString(); obj["param4"] = par4.toString(); obj["param5"] = par5.toString(); setJsonObject(key,obj); } void Config::get_GCS_ID(QVariant *id) { QJsonObject obj = getJsonObject("GlobalSetting"); *id = obj.value("GCS").toInt(); } void Config::set_GCS_ID(QVariant id) { QJsonObject obj; obj["GCS"] = id.toInt(); setJsonObject("GlobalSetting",obj); } void Config::get_ExportInfo(QVariant *value,QVariant *id) { QJsonObject obj = getJsonObject("ExportInfo"); *value = obj.value("Export").toBool(); *id = obj.value("ID").toInt(); } void Config::set_ExportInfo(QVariant value,QVariant id) { QJsonObject obj; obj["Export"] = value.toBool(); obj["ID"] = id.toInt(); setJsonObject("ExportInfo",obj); } void Config::getServoOffset(QVariant *ch1_d0,QVariant *ch1_kd,QVariant *ch1_len, QVariant *ch2_d0,QVariant *ch2_kd,QVariant *ch2_len, QVariant *ch3_d0,QVariant *ch3_kd,QVariant *ch3_len, QVariant *ch4_d0,QVariant *ch4_kd,QVariant *ch4_len, QVariant *ch5_d0,QVariant *ch5_kd,QVariant *ch5_len, QVariant *ch6_d0,QVariant *ch6_kd,QVariant *ch6_len, QVariant *ch7_d0,QVariant *ch7_kd,QVariant *ch7_len, QVariant *ch8_d0,QVariant *ch8_kd,QVariant *ch8_len) { QJsonObject obj = getJsonObject("ServoOffset"); *ch1_d0 = obj.value("ch1_d0").toString(); *ch1_kd = obj.value("ch1_kd").toString(); *ch1_len = obj.value("ch1_len").toString(); *ch2_d0 = obj.value("ch2_d0").toString(); *ch2_kd = obj.value("ch2_kd").toString(); *ch2_len = obj.value("ch2_len").toString(); *ch3_d0 = obj.value("ch3_d0").toString(); *ch3_kd = obj.value("ch3_kd").toString(); *ch3_len = obj.value("ch3_len").toString(); *ch4_d0 = obj.value("ch4_d0").toString(); *ch4_kd = obj.value("ch4_kd").toString(); *ch4_len = obj.value("ch4_len").toString(); *ch5_d0 = obj.value("ch5_d0").toString(); *ch5_kd = obj.value("ch5_kd").toString(); *ch5_len = obj.value("ch5_len").toString(); *ch6_d0 = obj.value("ch6_d0").toString(); *ch6_kd = obj.value("ch6_kd").toString(); *ch6_len = obj.value("ch6_len").toString(); *ch7_d0 = obj.value("ch7_d0").toString(); *ch7_kd = obj.value("ch7_kd").toString(); *ch7_len = obj.value("ch7_len").toString(); *ch8_d0 = obj.value("ch8_d0").toString(); *ch8_kd = obj.value("ch8_kd").toString(); *ch8_len = obj.value("ch8_len").toString(); } void Config::setServoOffset(QVariant ch1_d0,QVariant ch1_kd,QVariant ch1_len, QVariant ch2_d0,QVariant ch2_kd,QVariant ch2_len, QVariant ch3_d0,QVariant ch3_kd,QVariant ch3_len, QVariant ch4_d0,QVariant ch4_kd,QVariant ch4_len, QVariant ch5_d0,QVariant ch5_kd,QVariant ch5_len, QVariant ch6_d0,QVariant ch6_kd,QVariant ch6_len, QVariant ch7_d0,QVariant ch7_kd,QVariant ch7_len, QVariant ch8_d0,QVariant ch8_kd,QVariant ch8_len) { QJsonObject obj; obj["ch1_d0"] = ch1_d0.toString();obj["ch1_kd"] = ch1_kd.toString();obj["ch1_len"] = ch1_len.toString(); obj["ch2_d0"] = ch2_d0.toString();obj["ch2_kd"] = ch2_kd.toString();obj["ch2_len"] = ch2_len.toString(); obj["ch3_d0"] = ch3_d0.toString();obj["ch3_kd"] = ch3_kd.toString();obj["ch3_len"] = ch3_len.toString(); obj["ch4_d0"] = ch4_d0.toString();obj["ch4_kd"] = ch4_kd.toString();obj["ch4_len"] = ch4_len.toString(); obj["ch5_d0"] = ch5_d0.toString();obj["ch5_kd"] = ch5_kd.toString();obj["ch5_len"] = ch5_len.toString(); obj["ch6_d0"] = ch6_d0.toString();obj["ch6_kd"] = ch6_kd.toString();obj["ch6_len"] = ch6_len.toString(); obj["ch7_d0"] = ch7_d0.toString();obj["ch7_kd"] = ch7_kd.toString();obj["ch7_len"] = ch7_len.toString(); obj["ch8_d0"] = ch8_d0.toString();obj["ch8_kd"] = ch8_kd.toString();obj["ch8_len"] = ch8_len.toString(); setJsonObject("ServoOffset",obj); } void Config::getHeartBeat(QVariant *state,QVariant *frq) { QJsonObject obj = getJsonObject("HeartBeat"); *state = obj.value("state").toBool(); *frq = obj.value("frq").toDouble(); } void Config::setHeartBeat(QVariant state,QVariant frq) { QJsonObject obj; obj["state"] = state.toBool(); obj["frq"] = frq.toDouble(); setJsonObject("HeartBeat",obj); } void Config::getMapType(QVariant *type) { QJsonObject obj = getJsonObject("Map"); *type = obj.value("MapType").toString(); } void Config::setMapType(QVariant type) { QJsonObject obj; obj["MapType"] = type.toString(); setJsonObject("Map",obj); } void Config::getBeep(QVariant *value) { QJsonObject obj = getJsonObject("Warnning"); *value = obj.value("Beep").toBool(); } void Config::setBeep(QVariant value) { QJsonObject obj; obj["Beep"] = value.toBool(); setJsonObject("Warnning",obj); } void Config::getTTS(QVariant *value) { QJsonObject obj = getJsonObject("Sound"); *value = obj.value("tts").toBool(); } void Config::setTTS(QVariant value) { QJsonObject obj; obj["tts"] = value.toBool(); setJsonObject("Sound",obj); } QMap Config::getVirtualMargin(int type) { QJsonObject obj = getJsonObject("VirtualMargin"); QMap map; QJsonArray array_obj; switch (type) { case 0: array_obj = obj.value("red").toArray(); break; case 1: array_obj = obj.value("orange").toArray(); break; case 2: array_obj = obj.value("drop1").toArray(); break; case 3: array_obj = obj.value("drop2").toArray(); break; } foreach (QJsonValue v, array_obj) { Config::_latlng latlng; latlng.index = v.toObject().value("index").toInt(); latlng.latitude = v.toObject().value("latitude").toDouble(); latlng.longitude = v.toObject().value("longitude").toDouble(); map.insert(latlng.index,latlng); } return map; } void Config::setVirtualMargin(QMap mvs,int type) { QJsonObject obj = getJsonObject("VirtualMargin");//总 QJsonArray notice_obj; QJsonArray warning_obj; QJsonArray drop1_obj; QJsonArray drop2_obj; if(type == 0)//红 { notice_obj = obj.value("orange").toArray(); drop1_obj = obj.value("drop1").toArray(); drop2_obj = obj.value("drop2").toArray(); foreach (Config::_latlng latlng, mvs) { QJsonObject v; v["index"] = latlng.index; v["latitude"] = latlng.latitude; v["longitude"] = latlng.longitude; warning_obj.append(v); } } else if(type == 1)//黄 { warning_obj = obj.value("red").toArray(); drop1_obj = obj.value("drop1").toArray(); drop2_obj = obj.value("drop2").toArray(); foreach (Config::_latlng latlng, mvs) { QJsonObject v; v["index"] = latlng.index; v["latitude"] = latlng.latitude; v["longitude"] = latlng.longitude; notice_obj.append(v); } } else if(type == 2)//drop1 { warning_obj = obj.value("red").toArray(); notice_obj = obj.value("orange").toArray(); drop2_obj = obj.value("drop2").toArray(); foreach (Config::_latlng latlng, mvs) { QJsonObject v; v["index"] = latlng.index; v["latitude"] = latlng.latitude; v["longitude"] = latlng.longitude; drop1_obj.append(v); } } else if(type == 3)//drop2 { warning_obj = obj.value("red").toArray(); notice_obj = obj.value("orange").toArray(); drop1_obj = obj.value("drop1").toArray(); foreach (Config::_latlng latlng, mvs) { QJsonObject v; v["index"] = latlng.index; v["latitude"] = latlng.latitude; v["longitude"] = latlng.longitude; drop2_obj.append(v); } } obj["orange"] = notice_obj; obj["red"] = warning_obj; obj["drop1"] = drop1_obj; obj["drop2"] = drop2_obj; setJsonObject("VirtualMargin",obj); }