From 8085a2875b58633e3785d48e190849f9dd781824 Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Sat, 16 Nov 2024 18:06:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=84=E6=80=81logic?= =?UTF-8?q?=E5=B1=82=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Configuration.cpp | 479 +++++++++++++++++++++++++++++++++------------- Configuration.h | 5 +- 2 files changed, 349 insertions(+), 135 deletions(-) diff --git a/Configuration.cpp b/Configuration.cpp index da79842..4bc5792 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -346,48 +346,135 @@ void CConfiguration::on_treeView_Relay_customContextMenuRequested(const QPoint & menu.exec(QCursor::pos()); //显示菜单 } +// 递归遍历 QTreeView 的节点,构建 JSON 结构 +QJsonObject CConfiguration::createJsonFromTreeNode(QStandardItem *item) { + QJsonObject nodeObject,inputNodeObj; + QJsonArray inputNodeArray; + + // 根据节点的类型判断是 logicOR、logicAND 还是叶子节点 + QString nodeType = item->text(); + if (nodeType.contains("logicOR") || nodeType.contains("logicAND")){ + QJsonArray childrenArray; + + // 遍历子节点 + for (int i = 0; i < item->rowCount(); ++i) { + QStandardItem *childItem = item->child(i); + childrenArray.append(createJsonFromTreeNode(childItem)); + } + // 添加 Combination 节点 + QJsonObject combination; + int MinimumNumber = item->data(Qt::UserRole + 1).toInt(); + if(nodeType.contains("logicOR")) + combination["MinimumNumber"] = 1; + else if(nodeType.contains("logicAND")) + combination["MinimumNumber"] = MinimumNumber; + inputNodeObj["Combination"] = combination; + // 将子节点数组存储在当前逻辑运算符节点下 + inputNodeObj["Inputs"] = childrenArray; + inputNodeArray.append(inputNodeObj); + if(nodeType.contains("logicOR")) + nodeObject[nodeType] = inputNodeArray; + else if(nodeType.contains("logicAND")) + nodeObject[nodeType.left(nodeType.length()-3)] = inputNodeArray; + + } else { + if(item->text().contains("警报")){ + nodeObject["alarm"] = 1; + nodeObject["danger"] = 0; + }else if (item->text().contains("危险")) { + nodeObject["danger"] = 1; + nodeObject["alarm"] = 0; + } + nodeObject["triggerFeatureName"] = item->text(); + nodeObject["nodeType"] = 1; + nodeObject["displayTitle"] = item->text(); + for (int k = 0;k < g_ChannelBaseInfo.size(); k++) { + if(g_ChannelBaseInfo[k].channelName == item->text().split("-")[0]){ + nodeObject["channelId"] = g_ChannelBaseInfo[k].channelID; + break; + } + } + } + + return nodeObject; +} +// 将生成的 JSON 保存到文件 +void CConfiguration::saveJsonToFile(const QJsonObject &jsonObject, const QString &filePath) { + QJsonDocument jsonDoc(jsonObject); + QFile file(filePath); + if (file.open(QIODevice::WriteOnly)) { + file.write(jsonDoc.toJson(QJsonDocument::Indented)); + file.close(); + qDebug() << "JSON 文件已生成:" << filePath; + } else { + qDebug() << "无法打开文件以保存 JSON 数据"; + } +} +// 从 QTreeView 中生成 JSON 数据 +QJsonObject CConfiguration::generateJsonFromTreeView(QTreeView *treeView) { + QStandardItemModel *model = qobject_cast(treeView->model()); + if (!model) return QJsonObject(); + + QJsonArray rootArray; + + // 遍历模型的每个根节点 + for (int i = 0; i < model->rowCount(); ++i) { + QStandardItem *rootItem = model->item(i); + rootArray.append(createJsonFromTreeNode(rootItem)); + } + + QJsonObject root; + root["logicTree"] = rootArray; // 顶层使用 "logicTree" 作为键 + return root; +} QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber) { - QJsonArray arrayAll,arrayAll2; - QJsonObject jsonObj,inputObj,inputObj2,MinimumNumberObj; + QJsonArray arrjsonObjLogic,arrjsonObjLogic2; QString strLogic; + QJsonArray ret; + QJsonArray arrItem; + QJsonObject logicObj,logicInputs; + QJsonArray tmplogic ; if(item->hasChildren()) { for(int i = 0;i < item->rowCount() ;i++) { - QJsonArray array; + QJsonObject inputObj,logic_inputObj,inputObj2,jsonObj,MinimumNumberObj; + QJsonObject jsonObjLogic,jsonObjLogic2; + QJsonArray array,arrayAll,logic_arrayAll,arrayAll2; + QJsonArray inputArray,inputArray2; QStandardItem * childitem = item->child(i); - strLogic = childitem->text(); + strLogic = item->text(); if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){ - QJsonArray inputArray,inputArray2; if(childitem->hasChildren()){ - for(int i = 0;i < childitem->rowCount() ;i++){ - QStandardItem * childitem2 = childitem->child(i); - if(childitem2->text().contains("警报")){ - jsonObj["alarm"] = 1; - jsonObj["danger"] = 0; - }else if (childitem2->text().contains("危险")) { - jsonObj["danger"] = 1; - jsonObj["alarm"] = 0; - } - jsonObj["triggerFeatureName"] = childitem2->text(); - jsonObj["nodeType"] = 1; - jsonObj["displayTitle"] = childitem2->text(); - for (int k = 0;k < g_ChannelBaseInfo.size(); k++) { - if(g_ChannelBaseInfo[k].channelName == childitem2->text().split("-")[0]){ - jsonObj["channelId"] = g_ChannelBaseInfo[k].channelID; - break; - } - } - - inputArray.append(jsonObj); - inputArray2.append(jsonObj); - } + arrItem = GetItem(childitem, MinimumNumber); + qDebug() << "m_array0" << arrItem << endl; }else{ QMessageBox::question(this, QStringLiteral("提示"), QStringLiteral("请选择正确的逻辑!")); return arrayAll; } - + }else{ + for(int i = 0;i < item->rowCount() ;i++){ + QStandardItem * childitem2 = item->child(i); + if(childitem2->text().contains("警报")){ + jsonObj["alarm"] = 1; + jsonObj["danger"] = 0; + }else if (childitem2->text().contains("危险")) { + jsonObj["danger"] = 1; + jsonObj["alarm"] = 0; + } + jsonObj["triggerFeatureName"] = childitem2->text(); + jsonObj["nodeType"] = 1; + jsonObj["displayTitle"] = childitem2->text(); + for (int k = 0;k < g_ChannelBaseInfo.size(); k++) { + if(g_ChannelBaseInfo[k].channelName == childitem2->text().split("-")[0]){ + jsonObj["channelId"] = g_ChannelBaseInfo[k].channelID; + break; + } + } + inputArray.append(jsonObj); + inputArray2.append(jsonObj); + } QString strTableName = " t_UnitConfiguration "; QVector vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName); for (int i = 0; i < vecUnitConfiguration.size(); i++) { @@ -407,19 +494,43 @@ QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber) inputObj2["Combination"] = MinimumNumberObj; arrayAll.append(inputObj); arrayAll2.append(inputObj2); + qDebug() << "arrayAll==========" << arrayAll << endl; + qDebug() << "strLogic" << strLogic.left(strLogic.length()-3) << endl; + jsonObjLogic[strLogic.left(strLogic.length()-3)] = arrayAll; + jsonObjLogic2[strLogic.left(strLogic.length()-3)] = arrayAll2; + arrjsonObjLogic.append(jsonObjLogic); + arrjsonObjLogic2.append(jsonObjLogic2); + } + if((childitem->text().contains("logicOR") || childitem->text().contains("logicAND")) && item->parent()){ + logicObj[strLogic] = arrItem; + qDebug() << "logicObj123" << logicObj << endl; + tmplogic.append(logicObj); + qDebug() << "tmplogic123" << tmplogic << endl; + } + if(!item->parent() && i + 1 == item->rowCount()) + { + qDebug() << "No parent" << item->text() << endl; + qDebug() << "m_array1" << arrItem << endl; + return arrItem; + }else if(item->parent() && i + 1 == item->rowCount()){ + qDebug() << "parent" << item->text() << endl; + MinimumNumberObj["MinimumNumber"] = 1; + logic_inputObj["Combination"] = MinimumNumberObj; + if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){ + logic_inputObj["Inputs"] = tmplogic; + }else{ + logic_inputObj["Inputs"] = arrjsonObjLogic; + } + logic_arrayAll.append(logic_inputObj); + qDebug() << "arrayAll111" << logic_arrayAll << endl; + return logic_arrayAll; } } } - QJsonObject jsonObjLogic,jsonObjLogic2; - qDebug() << "strLogic" << strLogic.left(strLogic.length()-3) << endl; - jsonObjLogic[strLogic.left(strLogic.length()-3)] = arrayAll; - jsonObjLogic2[strLogic.left(strLogic.length()-3)] = arrayAll2; - QJsonArray ret; - ret.append(jsonObjLogic); - m_deleteInputArray.append(jsonObjLogic2); - qDebug() << "m_array" << ret << endl; - return ret; + m_deleteInputArray.append(arrjsonObjLogic2); + qDebug() << "m_array2" << arrItem << endl; + return arrItem; // QJsonArray arrayAll,inputArray; @@ -565,22 +676,36 @@ void CConfiguration::on_pushButton_confirm_clicked() QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请选择正确的组态逻辑")); return; } - for(int i = 0;i < model_Relay->rowCount() ;i++) - { - QStandardItem *item = model_Relay->item(i); - qDebug() <<"item = " << item->text(); - QJsonArray arrayAll = GetItem(model_Relay->item(i)); - if(arrayAll.size() < 1) - return; - logicObj[item->text().left(7)] = arrayAll; - logicObj2[item->text().left(7)] = m_deleteInputArray; - logicExpressArray.append(logicObj); - logicExpressArray2.append(logicObj2); - } - ConfiguraitonsObj2 = ConfiguraitonsObj; - ConfiguraitonsObj["logicExpress"] = logicExpressArray; - ConfiguraitonsObj2["logicExpress"] = logicExpressArray2; +// for(int i = 0;i < model_Relay->rowCount() ;i++) +// { +// QStandardItem *item = model_Relay->item(i); +// qDebug() <<"item = " << item->text(); +// QJsonArray arrayAll = GetItem(model_Relay->item(i)); +// QJsonObject json = generateJsonFromTreeView(ui->treeView_Relay); +// saveJsonToFile(json, "TreeViewToJSON.json"); +// if(arrayAll.size() < 1) +// return; +// logicObj[item->text().left(7)] = arrayAll; +// logicObj2[item->text().left(7)] = m_deleteInputArray; +// logicExpressArray.append(logicObj); +// logicExpressArray2.append(logicObj2); +// } + QJsonArray rootArray; + // 遍历模型的每个根节点 + for (int i = 0; i < model_Relay->rowCount(); ++i) { + QStandardItem *rootItem = model_Relay->item(i); + rootArray.append(createJsonFromTreeNode(rootItem)); +// logicObj[rootItem->text().left(7)] = rootArray; +// logicObj2[rootItem->text().left(7)] = m_deleteInputArray; +// logicExpressArray.append(logicObj); +// logicExpressArray2.append(logicObj2); + } + + ConfiguraitonsObj2 = ConfiguraitonsObj; + ConfiguraitonsObj["logicExpress"] = rootArray; + ConfiguraitonsObj2["logicExpress"] = logicExpressArray2; + saveJsonToFile(ConfiguraitonsObj, "TreeViewToJSON.json"); QString strTableName = " t_UnitConfiguration "; QVector vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName); for (int i = 0; i < vecUnitConfiguration.size(); i++) { @@ -915,10 +1040,62 @@ void CConfiguration::on_comboBox_WC_currentIndexChanged(const QString &arg1) } } } +// 递归解析 JSON 并构建树模型 +void CConfiguration::populateTree(QStandardItem *parentItem, const QJsonObject &jsonObject) { + for (auto it = jsonObject.begin(); it != jsonObject.end(); ++it) { + QString key = it.key(); + QJsonValue value = it.value(); + if (key == "Combination") { +// // 添加 Combination 节点 +// QJsonObject combination = value.toObject(); +// int minNumber = combination["MinimumNumber"].toInt(); +// QString combinationText = QString("Combination (MinimumNumber: %1)").arg(minNumber); +// QStandardItem *combinationItem = new QStandardItem(combinationText); +// parentItem->appendRow(combinationItem); + } else if (key == "Inputs" && value.isArray()) { + // 解析 Inputs 数组 + QJsonArray inputsArray = value.toArray(); +// QStandardItem *inputsItem = new QStandardItem("Inputs"); +// parentItem->appendRow(inputsItem); -void CConfiguration::ViewRelay(int ChannelNoInBoard) -{ + for (const QJsonValue &inputValue : inputsArray) { + if (inputValue.isObject()) { + populateTree(parentItem, inputValue.toObject()); + } + } + } else if (key.startsWith("logic")) { + // 处理 logicAND 或 logicOR 节点 + QStandardItem *logicItem = new QStandardItem(key); + parentItem->appendRow(logicItem); + + if (value.isArray()) { + QJsonArray logicArray = value.toArray(); + for (const QJsonValue &logicValue : logicArray) { + if (logicValue.isObject()) { + QJsonObject logicCombination = logicValue["Combination"].toObject(); + int MinimumNumber =logicCombination["MinimumNumber"].toInt(); + qDebug() << "MinimumNumber" << MinimumNumber << endl; + logicItem->setData(MinimumNumber,Qt::UserRole+1); + if(key.contains("logicAND")) + logicItem->setText(QString("logicAND(%1)").arg(MinimumNumber)); + populateTree(logicItem, logicValue.toObject()); + } + } + } + } else if (value.isObject()) { + // 如果是嵌套对象 + QStandardItem *objectItem = new QStandardItem(key); + parentItem->appendRow(objectItem); + populateTree(objectItem, value.toObject()); + } else if (key == "displayTitle") { + // 叶子节点:展示 displayTitle + QStandardItem *leafItem = new QStandardItem(value.toString()); + parentItem->appendRow(leafItem); + } + } +} +void CConfiguration::ViewRelay(int ChannelNoInBoard){ model_Relay->clear(); ui->lineEdit_2->setText(""); QString strWorkConditonName = ui->comboBox_WC->currentText(); @@ -932,100 +1109,134 @@ void CConfiguration::ViewRelay(int ChannelNoInBoard) if(tempArray.at(j)["ChannelNoInBoard"] == ChannelNoInBoard){ ui->lineEdit_delay->setText(tempArray.at(j)["DelaySeconds"].toString()); QJsonArray tempArray2 = tempArray.at(j)["logicExpress"].toArray(); + // 递归解析 JSON 数据并填充到模型中 for (int k = 0; k < tempArray2.size(); k++) { QJsonObject tempObj2 = tempArray2[k].toObject(); - if (tempObj2.contains(QStringLiteral("logicAND"))){ - QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicAND")); - QStandardItem *itemAnd = new QStandardItem(QString("logicAND")); - model_Relay->appendRow(itemAnd); - QJsonArray array = arrayValue.toArray(); - for (int kk = 0; kk < array.size(); kk++) { - QJsonObject tempObj3 = array[kk].toObject(); - if (tempObj3.contains(QStringLiteral("logicAND"))){ - QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); - - QJsonObject Combination = objValue["Combination"].toObject(); - int MinimumNumber = Combination["MinimumNumber"].toInt(); - - QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); - itemAnd2->setData(MinimumNumber,Qt::UserRole+1); - itemAnd->appendRow(itemAnd2); - - QJsonArray inputsArray = objValue["Inputs"].toArray(); - for (int ii = 0; ii < inputsArray.size(); ii++) { - QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); - itemAnd2->appendRow(item); - } - } - if (tempObj3.contains(QStringLiteral("logicOR"))){ - QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); - QJsonObject Combination = objValue["Combination"].toObject(); - int MinimumNumber = Combination["MinimumNumber"].toInt(); - QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); - itemOr2->setData(MinimumNumber,Qt::UserRole+1); - itemAnd->appendRow(itemOr2); - - QJsonArray arrValue2 = objValue.toArray(); - for(int jj = 0; jj < arrValue2.size();jj++){ - QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); - for (int ii = 0; ii < inputsArray.size(); ii++) { - QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); - itemOr2->appendRow(item); - } - } - - } - } - - } if (tempObj2.contains(QStringLiteral("logicOR"))){ QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicOR")); QStandardItem *itemOr = new QStandardItem(QString("logicOR")); - model_Relay->appendRow(itemOr); QJsonArray array = arrayValue.toArray(); for (int kk = 0; kk < array.size(); kk++) { QJsonObject tempObj3 = array[k].toObject(); - if (tempObj3.contains(QStringLiteral("logicAND"))){ - QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); - QJsonArray array2 = objValue.toArray(); - for (int jj = 0; jj < array2.size(); jj++) { - QJsonObject tempObj4 = array2[jj].toObject(); - QJsonObject Combination = tempObj4["Combination"].toObject(); - int MinimumNumber = Combination["MinimumNumber"].toInt(); - QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); - QJsonArray inputsArray = tempObj4["Inputs"].toArray(); - for (int ii = 0; ii < inputsArray.size(); ii++) { - QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); - itemAnd2->appendRow(item); - } - itemAnd2->setData(MinimumNumber,Qt::UserRole+1); - itemOr->appendRow(itemAnd2); - } - } - if (tempObj3.contains(QStringLiteral("logicOR"))){ - QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); - QJsonObject Combination = objValue["Combination"].toObject(); - int MinimumNumber = Combination["MinimumNumber"].toInt(); - QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); - itemOr2->setData(MinimumNumber,Qt::UserRole+1); - itemOr->appendRow(itemOr2); - - QJsonArray arrValue2 = objValue.toArray(); - for(int jj = 0; jj < arrValue2.size();jj++){ - QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); - for (int ii = 0; ii < inputsArray.size(); ii++) { - QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); - itemOr2->appendRow(item); - } - } - } + populateTree(itemOr, tempObj3); } + model_Relay->appendRow(itemOr); } } } } } } +} +//void CConfiguration::ViewRelay(int ChannelNoInBoard) +//{ +// model_Relay->clear(); +// ui->lineEdit_2->setText(""); +// QString strWorkConditonName = ui->comboBox_WC->currentText(); +// for (int i = 0; i < m_vecWorkConditionObj.size(); i++) { +// QJsonObject tempObj = m_vecWorkConditionObj[i]; +// if(strWorkConditonName == tempObj["WorkConditionName"].toString()){ +// QJsonArray tempArray = tempObj["Configuraitons"].toArray(); +// QString strSecondDelaySeconds = tempObj["SecondDelaySeconds"].toString(); +// ui->lineEdit_2->setText(strSecondDelaySeconds); +// for (int j = 0;j < tempArray.size() ;j++ ) { +// if(tempArray.at(j)["ChannelNoInBoard"] == ChannelNoInBoard){ +// ui->lineEdit_delay->setText(tempArray.at(j)["DelaySeconds"].toString()); +// QJsonArray tempArray2 = tempArray.at(j)["logicExpress"].toArray(); +// for (int k = 0; k < tempArray2.size(); k++) { +// QJsonObject tempObj2 = tempArray2[k].toObject(); +// if (tempObj2.contains(QStringLiteral("logicAND"))){ +// QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicAND")); +// QStandardItem *itemAnd = new QStandardItem(QString("logicAND")); +// model_Relay->appendRow(itemAnd); +// QJsonArray array = arrayValue.toArray(); +// for (int kk = 0; kk < array.size(); kk++) { +// QJsonObject tempObj3 = array[kk].toObject(); +// if (tempObj3.contains(QStringLiteral("logicAND"))){ +// QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); + +// QJsonObject Combination = objValue["Combination"].toObject(); +// int MinimumNumber = Combination["MinimumNumber"].toInt(); + +// QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); +// itemAnd2->setData(MinimumNumber,Qt::UserRole+1); +// itemAnd->appendRow(itemAnd2); + +// QJsonArray inputsArray = objValue["Inputs"].toArray(); +// for (int ii = 0; ii < inputsArray.size(); ii++) { +// QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); +// itemAnd2->appendRow(item); +// } +// } +// if (tempObj3.contains(QStringLiteral("logicOR"))){ +// QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); +// QJsonObject Combination = objValue["Combination"].toObject(); +// int MinimumNumber = Combination["MinimumNumber"].toInt(); +// QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); +// itemOr2->setData(MinimumNumber,Qt::UserRole+1); +// itemAnd->appendRow(itemOr2); + +// QJsonArray arrValue2 = objValue.toArray(); +// for(int jj = 0; jj < arrValue2.size();jj++){ +// QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); +// for (int ii = 0; ii < inputsArray.size(); ii++) { +// QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); +// itemOr2->appendRow(item); +// } +// } + +// } +// } + +// } +// if (tempObj2.contains(QStringLiteral("logicOR"))){ +// QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicOR")); +// QStandardItem *itemOr = new QStandardItem(QString("logicOR")); +// model_Relay->appendRow(itemOr); +// QJsonArray array = arrayValue.toArray(); +// for (int kk = 0; kk < array.size(); kk++) { +// QJsonObject tempObj3 = array[k].toObject(); +// if (tempObj3.contains(QStringLiteral("logicAND"))){ +// QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); +// QJsonArray array2 = objValue.toArray(); +// for (int jj = 0; jj < array2.size(); jj++) { +// QJsonObject tempObj4 = array2[jj].toObject(); +// QJsonObject Combination = tempObj4["Combination"].toObject(); +// int MinimumNumber = Combination["MinimumNumber"].toInt(); +// QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); +// QJsonArray inputsArray = tempObj4["Inputs"].toArray(); +// for (int ii = 0; ii < inputsArray.size(); ii++) { +// QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); +// itemAnd2->appendRow(item); +// } +// itemAnd2->setData(MinimumNumber,Qt::UserRole+1); +// itemOr->appendRow(itemAnd2); +// } +// } +// if (tempObj3.contains(QStringLiteral("logicOR"))){ +// QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); +// QJsonObject Combination = objValue["Combination"].toObject(); +// int MinimumNumber = Combination["MinimumNumber"].toInt(); +// QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); +// itemOr2->setData(MinimumNumber,Qt::UserRole+1); +// itemOr->appendRow(itemOr2); + +// QJsonArray arrValue2 = objValue.toArray(); +// for(int jj = 0; jj < arrValue2.size();jj++){ +// QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); +// for (int ii = 0; ii < inputsArray.size(); ii++) { +// QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); +// itemOr2->appendRow(item); +// } +// } +// } +// } +// } +// } +// } +// } +// } +// } // for(int i = 0;i < model_Available->rowCount() ;i++){ // model_Relay->removeRow(i); @@ -1128,7 +1339,7 @@ void CConfiguration::ViewRelay(int ChannelNoInBoard) // } // } // } -} +//} void CConfiguration::on_radioButton_1_clicked() { diff --git a/Configuration.h b/Configuration.h index 4c594e1..71628d8 100644 --- a/Configuration.h +++ b/Configuration.h @@ -65,7 +65,9 @@ private: QStandardItemModel *model_Relay; QVector m_WorkCondition; - + QJsonObject createJsonFromTreeNode(QStandardItem *item); + void saveJsonToFile(const QJsonObject &jsonObject, const QString &filePath); + QJsonObject generateJsonFromTreeView(QTreeView *treeView); QJsonArray GetItem(QStandardItem *item,int MinimumNumber = -1); QJsonArray m_arrayAll; QJsonArray m_array; @@ -85,6 +87,7 @@ private: QJsonObject SelectChannel(int channelNo); void ViewRelay(int ChannelNoInBoard); void PushData(); + void populateTree(QStandardItem *parentItem, const QJsonObject &jsonObject); int m_isConfirm; int m_curentRLY; };