3500/Configuration.cpp

1166 lines
54 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "Configuration.h"
#include "ui_Configuration.h"
#include <QStyleFactory>
#include <QMenu>
#include <QInputDialog>
#include <QScrollArea>
CConfiguration::CConfiguration(QWidget *parent) :
QWidget(parent),
ui(new Ui::CConfiguration)
{
ui->setupUi(this);
m_isConfirm = -1;
ui->widget_2->setProperty("flag", "configure");
ui->widget->setProperty("flag", "Title");
ui->widget_5->setProperty("flag", "normal");
QRegExp exp("[0-9\\.-]+$");
QValidator *Validator = new QRegExpValidator(exp);
ui->lineEdit_2->setValidator(Validator);
Init();
QHeaderView *pHeader=ui->treeView_Available->header();
pHeader->setSectionResizeMode(QHeaderView::ResizeToContents);
pHeader->setStretchLastSection(false);
QHeaderView *pHeader2=ui->treeView_Relay->header();
pHeader2->setSectionResizeMode(QHeaderView::ResizeToContents);
pHeader2->setStretchLastSection(false);
connect(ui->comboBox_WC,SIGNAL(currentTextChanged(const QString &)),this,SLOT(on_comboBox_WC_currentTextChanged2(const QString&)));
}
CConfiguration::~CConfiguration()
{
qDebug()<< "~CConfiguration" << endl;
// for(int i = 0;i < model_Available->rowCount() ;i++){
// model_Relay->removeRow(i);
// }
// for(int i = 0;i < model_Relay->rowCount() ;i++){
// model_Relay->removeRow(i);
// }
// delete model_Available;
// delete model_Relay;
// model_Relay = NULL;
// model_Available = NULL;
delete ui;
}
void CConfiguration::Init()
{
QString wherecon = "";
wherecon = QString("Enable = \"1\" ");
m_WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition",wherecon);
QStringList strWorkConditionList;
for (int i = 0; i < m_WorkCondition.size(); i++) {
strWorkConditionList << m_WorkCondition.at(i).WorkConditionName;
}
ui->treeView_Available->setContextMenuPolicy(Qt::CustomContextMenu);
ui->treeView_Available->setStyle(QStyleFactory::create("windows"));
model_Available = new QStandardItemModel(ui->treeView_Available); //创建模型指定父类
ui->treeView_Available->setModel(model_Available);
ui->treeView_Available->setHeaderHidden(true);
ui->treeView_Relay->setContextMenuPolicy(Qt::CustomContextMenu);
ui->treeView_Relay->setStyle(QStyleFactory::create("windows"));
model_Relay = new QStandardItemModel(ui->treeView_Relay); //创建模型指定父类
ui->treeView_Relay->setModel(model_Relay);
ui->treeView_Relay->setHeaderHidden(true);
QStandardItem* item1 = new QStandardItem("Operator");
QStandardItem* item2 = new QStandardItem("Operand");
model_Available->appendRow(item1);
model_Available->appendRow(item2);
QStandardItem *itemAnd = new QStandardItem(QString("logicAND(1)"));
itemAnd->setData(1,Qt::UserRole+1);
QStandardItem *itemOr = new QStandardItem(QString("logicOR"));
item1->appendRow(itemAnd);
item1->appendRow(itemOr);
QString name = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json";
QFile loadFile(name);
if(!loadFile.open(QIODevice::ReadOnly))
{
qDebug() << "could't open projects json";
return;
}
QString value = loadFile.readAll();
loadFile.close();
QJsonParseError parseJsonErr;
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
if (!(parseJsonErr.error == QJsonParseError::NoError)) {
QMessageBox::about(NULL, "提示", "读取文件错误!");
return;
}
ui->comboBox_WC->clear();
ui->comboBox_WC->addItems(strWorkConditionList);
QString strWC = ui->comboBox_WC->currentText();
qDebug() << strWC;
arrayTriggerConfig = document.array();
for (int i = 0; i < arrayTriggerConfig.size(); i++) {
if(strWC == arrayTriggerConfig.at(i)["workConditionName"].toString()){
QString strFirstDelaySeconds = arrayTriggerConfig.at(i)["FirstDelaySeconds"].toString();
QString strSecondDelaySeconds = arrayTriggerConfig.at(i)["SecondDelaySeconds"].toString();
QString strThirdDelaySeconds = arrayTriggerConfig.at(i)["ThirdDelaySeconds"].toString();
ui->lineEdit_2->setText(strSecondDelaySeconds);
QJsonArray TriggerSettings = arrayTriggerConfig.at(i)["triggerSettings"].toArray();
for (int j = 0; j < TriggerSettings.size(); j++){
QString channelName = TriggerSettings.at(j)["channelName"].toString();
QStandardItem *itemChannel = new QStandardItem(QString(channelName));
QJsonArray arrayConfig = TriggerSettings.at(j)["triggerConfig"].toArray();
if(arrayConfig.size() > 0){
item2->appendRow(itemChannel);
for (int k = 0; k < arrayConfig.size(); k++){
QStringList strList = arrayConfig.at(k)["triggerEventName"].toString().split('-');
QString strStaticData;
QStandardItem *item = NULL;
int xAlertOverEnabled = arrayConfig.at(k)["xAlertOverEnabled"].toInt();
int xAlertUnderEnabled = arrayConfig.at(k)["xAlertUnderEnabled"].toInt();
int xDangerOverEnabled = arrayConfig.at(k)["xDangerOverEnabled"].toInt();
int xDangerUnderEnabled = arrayConfig.at(k)["xDangerUnderEnabled"].toInt();
if(strList[0] == "MinValues")
strStaticData = "最小值";
else if(strList[0] == "MaxValues")
strStaticData = "最大值";
else if( strList[0] == "DCValues")
strStaticData = "平均值";
else if(strList[0] == "RMSValues")
strStaticData = "有效值";
else if(strList[0] == "DiagnosisPk2Pk")
strStaticData = "诊断峰峰值";
else if(strList[0] == "IntegratRMS")//积分
strStaticData = "积分有效值";
else if(strList[0] == "IntegratPk2Pk")
strStaticData = "积分峰峰值";
else if(strList[0] == "SpeedProfileSpeed")
strStaticData = "转速";
else if(strList[0] == "IntegratPk2Pk/2")//积分
strStaticData = "积分峰值";
else if(strList[0] == "DiagnosisPeak")
strStaticData = "峰值";
else if(strList[0] == "MonitorPk2Pk")
strStaticData = "监测保护峰峰值";
if(xAlertOverEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于警报值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"警报"));
itemChannel->appendRow(item);
}
if(xAlertUnderEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-"+ "低于警报值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"警报"));
itemChannel->appendRow(item);
}
if(xDangerOverEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于危险值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险"));
itemChannel->appendRow(item);
}
if(xDangerUnderEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "低于危险值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险"));
itemChannel->appendRow(item);
}
itemChannel->setData(strStaticData);
}
}
}
break;
}
}
LoadConfiguration();
}
void CConfiguration::LoadConfiguration()
{
QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json";
QFile loadFile(name);
if(!loadFile.open(QIODevice::ReadOnly))
{
qDebug() << "could't open projects json";
return;
}
QString value = loadFile.readAll();
loadFile.close();
QJsonParseError parseJsonErr;
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
if (!(parseJsonErr.error == QJsonParseError::NoError)) {
QMessageBox::about(NULL, "提示", "读取文件错误!");
return;
}
QString strWC = ui->comboBox_WC->currentText();
QJsonObject TriggerConfigObj = document.object();
QJsonArray arrayConfig = TriggerConfigObj["WorkConditionConfiguraitons"].toArray();
for (int i = 0; i < arrayConfig.size(); i++) {
m_vecWorkConditionObj.append(arrayConfig[i].toObject());
}
}
void CConfiguration::slotDeleteItem()
{
int BoardNo,ChannelNoInBoard;
QString ChannelId,ChannelName,SN;
QString strTableName = " t_UnitConfiguration ";
QJsonObject jsonObj;
QJsonObject logicObj,ConfiguraitonsObj,ConfiguraitonsWCObj;
QJsonArray logicExpressArray,ConfiguraitonsArray;
QModelIndex curIndex = ui->treeView_Relay->currentIndex();
if(curIndex.isValid())
{
QStandardItem* item = model_Relay->itemFromIndex(curIndex);
QString nodeText = item->text();
qDebug() << nodeText <<endl;
QString strWC = ui->comboBox_WC->currentText();
for (int i = 0; i < m_WorkCondition.size(); i++) {
if(m_WorkCondition[i].WorkConditionName == ui->comboBox_WC->currentText()){
SN = m_WorkCondition[i].SN;
}
}
for (int i = 0; i < g_ChannelBaseInfo.size(); i++) {
if(g_ChannelBaseInfo[i].bordNo == 10 && g_ChannelBaseInfo[i].channelNoInBoard == m_curentRLY){
BoardNo = g_ChannelBaseInfo[i].bordNo;
ChannelId = g_ChannelBaseInfo[i].channelID;
ChannelName = g_ChannelBaseInfo[i].channelName;
ChannelNoInBoard = g_ChannelBaseInfo[i].channelNoInBoard;
}
}
if(nodeText.contains("logicOR") || nodeText.contains("logicAND")){
QString strSql = QString(" values('%1','%2',%3,%4,'',4)").arg(SN).arg(ChannelId).arg(BoardNo).arg(ChannelNoInBoard);
g_SqliteDB->InsertData(strTableName,strSql);
}else{
QStandardItem* parantitem = item->parent();
QString paranNodeText = parantitem->text();
if(paranNodeText.contains("logicAND")){
if(nodeText.contains("警报")){
jsonObj["alarm"] = 1;
jsonObj["danger"] = 0;
}else if (nodeText.contains("危险")) {
jsonObj["danger"] = 1;
jsonObj["alarm"] = 0;
}
jsonObj["triggerFeatureName"] = nodeText;
jsonObj["nodeType"] = 1;
jsonObj["displayTitle"] = nodeText;
for (int k = 0;k < g_ChannelBaseInfo.size(); k++) {
if(g_ChannelBaseInfo[k].channelName == nodeText.split("-")[0]){
jsonObj["channelId"] = g_ChannelBaseInfo[k].channelID;
break;
}
}
jsonObj["channelOperate"] = 3;
QJsonDocument doc(jsonObj);
QString strJson(doc.toJson(QJsonDocument::Compact));
QString strSql = QString(" values('%1','%2','%3','%4','%5',3)").arg(SN).arg(ChannelId).arg(BoardNo).arg(ChannelNoInBoard).arg(strJson);
g_SqliteDB->InsertData(strTableName,strSql);
}
}
model_Relay->removeRow(curIndex.row(),curIndex.parent());
}
}
void CConfiguration::slotModifyItem()
{
QModelIndex curIndex = ui->treeView_Relay->currentIndex();
if(curIndex.isValid())
{
QStandardItem* item = model_Relay->itemFromIndex(curIndex);
if(item->rowCount() < 1){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("选择错误!"));
return;
}
bool ok;
// 获取整数
QString strTips =QString("请输入0到%1之间的数值").arg(item->rowCount());
int value1 = QInputDialog::getInt(this, tr("输入整数对话框"), strTips, item->rowCount(), 1, 10, 1, &ok);
if(!ok) return;
if(value1 > item->rowCount() || value1 < 1){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请输入正确的数字!"));
return ;
}
QString text = item->text().left(item->text().length()-3);
item->setData(value1,Qt::UserRole+1);
QString str = QString("(%1)").arg(value1);
item->setText(text + str);
}
}
void CConfiguration::on_treeView_Relay_customContextMenuRequested(const QPoint &pos)
{
qDebug() << "on_treeView_Relay_customContextMenuRequested" <<endl;
QModelIndex curIndex = ui->treeView_Relay->indexAt(pos); //当前点击的元素的index
QModelIndex index = curIndex.sibling(curIndex.row(),0); //该行的第1列元素的index
QMenu menu(this);
if (index.isValid())
{
//添加一行菜单,进行展开
menu.addAction(QStringLiteral("删除"), this, SLOT(slotDeleteItem()));
menu.addAction(QStringLiteral("选择满足要求的任意条件数量"), this, SLOT(slotModifyItem()));
menu.addSeparator(); //添加一个分隔线
//menu.addAction(QStringLiteral("增加"), this, SLOT(slotTreeMenuCollapse(bool)));
}
menu.exec(QCursor::pos()); //显示菜单
}
QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber)
{
QJsonArray arrayAll,arrayAll2;
QJsonObject jsonObj,inputObj,inputObj2,MinimumNumberObj;
QString strLogic;
if(item->hasChildren())
{
for(int i = 0;i < item->rowCount() ;i++)
{
QJsonArray array;
QStandardItem * childitem = item->child(i);
strLogic = childitem->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);
}
}else{
QMessageBox::question(this, QStringLiteral("提示"), QStringLiteral("请选择正确的逻辑!"));
return arrayAll;
}
QString strTableName = " t_UnitConfiguration ";
QVector<UnitConfiguration_t> vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName);
for (int i = 0; i < vecUnitConfiguration.size(); i++) {
if(vecUnitConfiguration[i].Operate == 3){
QJsonDocument document = QJsonDocument::fromJson(vecUnitConfiguration[i].Input.toUtf8());
QJsonObject jsonObj = document.object();
inputArray2.append(jsonObj);
}
}
inputObj2["Inputs"] = inputArray2;
inputObj["Inputs"] = inputArray;
MinimumNumber = childitem->data(Qt::UserRole + 1).toInt();
qDebug()<< "MinimumNumber" <<MinimumNumber<< endl;
MinimumNumberObj["MinimumNumber"] = MinimumNumber;
inputObj["Combination"] = MinimumNumberObj;
inputObj2["Combination"] = MinimumNumberObj;
arrayAll.append(inputObj);
arrayAll2.append(inputObj2);
}
}
}
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);
return ret;
// QJsonArray arrayAll,inputArray;
// QJsonObject jsonObj,inputObj,MinimumNumberObj;
// if(item->hasChildren())
// {
// for(int i = 0;i < item->rowCount() ;i++)
// {
// QJsonArray array;
// QStandardItem * childitem = item->child(i);
// if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){
// QJsonObject jsonObjLogic;
// MinimumNumber = childitem->data(Qt::UserRole + 1).toInt();
// jsonObjLogic[childitem->text().left(7)] = GetItem(childitem, MinimumNumber);
// m_array.append(jsonObjLogic);
// //qDebug() << "m_array"<<m_array << childitem->data(1) << endl;
// }else{
// if(childitem->text().contains("警报")){
// jsonObj["status"] = "alarm";
// }else if (childitem->text().contains("危险")) {
// jsonObj["status"] = "danger";
// }
// jsonObj["triggerFeatureName"] = childitem->text();
// jsonObj["nodeType"] = 1;
// jsonObj["displayTitle"] = childitem->text();
// jsonObj["channelId"] = childitem->text().split("-")[3];
// }
// if(!childitem->text().contains("logicOR") && !childitem->text().contains("logicAND")){
// inputArray.append(jsonObj);
// }
// if(!item->parent() && i + 1 == item->rowCount())
// {
// qDebug() << "No parent" << item->text()<< endl;
// return m_array;
// }else if(item->parent() && i + 1 == item->rowCount()){
// MinimumNumberObj["MinimumNumber"] = MinimumNumber;
// inputObj["Combination"] = MinimumNumberObj;
// inputObj["Inputs"] = inputArray;
// arrayAll.append(inputObj);
// return arrayAll;
// }
// }
// }
}
QJsonObject CConfiguration::SelectChannel(int channelNo)
{
QJsonObject ConfiguraitonsObj;
for (int i = 0; i < g_ChannelBaseInfo.size(); i++) {
if(g_ChannelBaseInfo[i].bordNo == 10 && g_ChannelBaseInfo[i].channelNoInBoard == channelNo){
ConfiguraitonsObj["BoardNo"] = g_ChannelBaseInfo[i].bordNo;
ConfiguraitonsObj["ChannelId"] = g_ChannelBaseInfo[i].channelID;
ConfiguraitonsObj["ChannelName"] = g_ChannelBaseInfo[i].channelName;
ConfiguraitonsObj["ChannelNoInBoard"] = g_ChannelBaseInfo[i].channelNoInBoard;
ConfiguraitonsObj["ChannelOperate"] = -1;
}
}
return ConfiguraitonsObj;
}
void CConfiguration::slotNetMgr(QString sAddr, const QVariant &msg)
{
QJsonObject objec = msg.value<QJsonObject>();
if(objec.contains("cmd"))
{
QJsonValue arrays_value = objec.take("cmd");
//qDebug()<<"cmd ="<<arrays_value.toString();
if(arrays_value.toString() == "110"){
bool Status = objec.take("success").toBool();
if(Status){
PushData();
disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
}
}
}
}
void CConfiguration::on_pushButton_save_clicked()
{
connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
g_NetMgr->DetectNet();
}
void CConfiguration::on_pushButton_confirm_clicked()
{
QJsonObject logicObj,logicObj2,ConfiguraitonsObj,ConfiguraitonsObj2,ConfiguraitonsWCObj,ConfiguraitonsWCObj2;
QJsonArray logicExpressArray,logicExpressArray2,ConfiguraitonsArray,ConfiguraitonsArray2;
int flag = -1;
if(ui->radioButton_1->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(3);
}else if(ui->radioButton_2->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(4);
}else if(ui->radioButton_3->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(5);
}else if(ui->radioButton_4->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(6);
}else if(ui->radioButton_5->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(7);
}else if(ui->radioButton_6->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(8);
}else if(ui->radioButton_7->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(9);
}else if(ui->radioButton_8->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(10);
}else if(ui->radioButton_9->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(11);
}else if(ui->radioButton_10->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(12);
}
if(flag == -1){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先选择继电器!"));
return;
}
m_isConfirm = 1;
if(model_Relay->rowCount() > 1){
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;
QString strTableName = " t_UnitConfiguration ";
QVector<UnitConfiguration_t> vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName);
for (int i = 0; i < vecUnitConfiguration.size(); i++) {
if(vecUnitConfiguration[i].Operate == 3){
ConfiguraitonsObj2["ChannelOperate"] = 3;
}else if(vecUnitConfiguration[i].Operate == 4){
ConfiguraitonsObj2["ChannelOperate"] = 4;
}
}
qDebug() << "m_deleteInputObj" << ConfiguraitonsArray2 << endl;
ConfiguraitonsArray.append(ConfiguraitonsObj);
ConfiguraitonsArray2.append(ConfiguraitonsObj2);
QJsonArray().swap(m_array);
QJsonArray().swap(m_arrayAll);
if(ui->lineEdit_2->text() == ""){
ConfiguraitonsWCObj["SecondDelaySeconds"] = "0";
ConfiguraitonsWCObj2["SecondDelaySeconds"] = "0";
}
else{
ConfiguraitonsWCObj["SecondDelaySeconds"] = ui->lineEdit_2->text();
ConfiguraitonsWCObj2["SecondDelaySeconds"] = ui->lineEdit_2->text();
}
QString strCurrentSN = "";
for (int i = 0; i < m_WorkCondition.size(); i++) {
if(m_WorkCondition[i].WorkConditionName == ui->comboBox_WC->currentText()){
ConfiguraitonsWCObj["SN"] = m_WorkCondition[i].SN;
strCurrentSN = m_WorkCondition[i].SN;
ConfiguraitonsWCObj["WorkConditionName"] = m_WorkCondition[i].WorkConditionName;
ConfiguraitonsWCObj2["SN"] = m_WorkCondition[i].SN;
ConfiguraitonsWCObj2["WorkConditionName"] = m_WorkCondition[i].WorkConditionName;
}
}
ConfiguraitonsWCObj["Configuraitons"] = ConfiguraitonsArray;
ConfiguraitonsWCObj2["Configuraitons"] = ConfiguraitonsArray2;
//防止点击重复应用
if(m_vecWorkConditionObj.size() > 0){
QVector<QJsonObject> vecWorkConditionObj = m_vecWorkConditionObj;
int flag = -1,flag2 = -1;
for (int i = 0; i < vecWorkConditionObj.size(); i++){
if(vecWorkConditionObj.at(i)["SN"].toString() == strCurrentSN){
flag = 1;
QJsonArray configuraitonsArray = vecWorkConditionObj.at(i)["Configuraitons"].toArray();
QJsonArray tempArray = configuraitonsArray;
for (int j = 0; j < configuraitonsArray.size(); j++) {
if(ConfiguraitonsObj["ChannelId"].toString() == configuraitonsArray.at(j)["ChannelId"].toString()){
flag2 = 1;
for (int ii = 0; ii < tempArray.size(); ii++) {
if(tempArray.at(ii)["ChannelId"].toString() == ConfiguraitonsObj["ChannelId"].toString()){
tempArray.removeAt(ii);
}
}
tempArray.append(ConfiguraitonsObj);
}
if(j + 1 == configuraitonsArray.size() && flag2 == -1){
tempArray.append(ConfiguraitonsObj);
}
}
ConfiguraitonsWCObj["Configuraitons"] = tempArray;
m_vecWorkConditionObj.removeAt(i);
m_vecWorkConditionObj.append(ConfiguraitonsWCObj);
}
if( i + 1 == vecWorkConditionObj.size() && flag == -1){
m_vecWorkConditionObj.append(ConfiguraitonsWCObj);
}
}
}else{
m_vecWorkConditionObj.append(ConfiguraitonsWCObj);
}
if(m_vecWorkConditionObj2.size() > 0){
QVector<QJsonObject> vecWorkConditionObj = m_vecWorkConditionObj2;
int flag = -1,flag2 = -1;
for (int i = 0; i < vecWorkConditionObj.size(); i++){
if(vecWorkConditionObj.at(i)["SN"].toString() == strCurrentSN){
flag = 1;
QJsonArray configuraitonsArray = vecWorkConditionObj.at(i)["Configuraitons"].toArray();
QJsonArray tempArray = configuraitonsArray;
for (int j = 0; j < configuraitonsArray.size(); j++) {
if(ConfiguraitonsObj2["ChannelId"].toString() == configuraitonsArray.at(j)["ChannelId"].toString()){
flag2 = 1;
for (int ii = 0; ii < tempArray.size(); ii++) {
if(tempArray.at(ii)["ChannelId"].toString() == ConfiguraitonsObj2["ChannelId"].toString()){
tempArray.removeAt(ii);
}
}
tempArray.append(ConfiguraitonsObj2);
}
if(j + 1 == configuraitonsArray.size() && flag2 == -1){
tempArray.append(ConfiguraitonsObj2);
}
}
ConfiguraitonsWCObj2["Configuraitons"] = tempArray;
m_vecWorkConditionObj2.removeAt(i);
m_vecWorkConditionObj2.append(ConfiguraitonsWCObj2);
}
if( i + 1 == vecWorkConditionObj.size() && flag == -1){
m_vecWorkConditionObj2.append(ConfiguraitonsWCObj2);
}
}
}else{
m_vecWorkConditionObj2.append(ConfiguraitonsWCObj2);
}
QJsonArray().swap(m_deleteInputArray);
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("应用成功!"));
}
void CConfiguration::on_comboBox_WC_currentTextChanged2(const QString &arg1)
{
qDebug() << "on_comboBox_WC_currentTextChanged" << endl;
for(int i = 0;i < model_Available->rowCount() ;i++){
QStandardItem *item = model_Available->item(i);
if(item->text() == "Operand"){
if(item->hasChildren()){
for(int ii = 0;ii < item->rowCount() ;ii++){
item->removeRow(ii);
}
}
model_Available->removeRow(i);
}
}
for(int i = 0;i < model_Available->rowCount() ;i++){
model_Relay->removeRow(i);
}
QStandardItem* item2 = new QStandardItem("Operand");
model_Available->appendRow(item2);
for (int i = 0; i < arrayTriggerConfig.size(); i++) {
if(arg1 == arrayTriggerConfig.at(i)["workConditionName"].toString()){
QJsonArray TriggerSettings = arrayTriggerConfig.at(i)["triggerSettings"].toArray();
for (int j = 0; j < TriggerSettings.size(); j++){
QString channelName = TriggerSettings.at(j)["channelName"].toString();
QStandardItem *itemChannel = new QStandardItem(QString(channelName));
itemChannel->setDragEnabled(false);
itemChannel->setDropEnabled(false);
QJsonArray arrayConfig = TriggerSettings.at(j)["triggerConfig"].toArray();
if(arrayConfig.size() > 0){
item2->appendRow(itemChannel);
for (int k = 0; k < arrayConfig.size(); k++){
QStringList strList = arrayConfig.at(k)["triggerEventName"].toString().split('-');
QString strStaticData;
QStandardItem *item = NULL;
int xAlertOverEnabled = arrayConfig.at(k)["xAlertOverEnabled"].toInt();
int xAlertUnderEnabled = arrayConfig.at(k)["xAlertUnderEnabled"].toInt();
int xDangerOverEnabled = arrayConfig.at(k)["xDangerOverEnabled"].toInt();
int xDangerUnderEnabled = arrayConfig.at(k)["xDangerUnderEnabled"].toInt();
if(strList[0] == "MinValues")
strStaticData = "最小值";
else if(strList[0] == "MaxValues")
strStaticData = "最大值";
else if( strList[0] == "DCValues")
strStaticData = "平均值";
else if(strList[0] == "RMSValues")
strStaticData = "有效值";
else if(strList[0] == "DiagnosisPk2Pk")
strStaticData = "诊断峰峰值";
else if(strList[0] == "IntegratRMS")//积分
strStaticData = "积分有效值";
else if(strList[0] == "IntegratPk2Pk")
strStaticData = "积分峰峰值";
else if(strList[0] == "SpeedProfileSpeed")
strStaticData = "转速";
else if(strList[0] == "IntegratPk2Pk/2")//积分
strStaticData = "积分峰值";
else if(strList[0] == "DiagnosisPeak")
strStaticData = "峰值";
else if(strList[0] == "MonitorPk2Pk")
strStaticData = "监测保护峰峰值";
if(xAlertOverEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于警报值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"警报"));
itemChannel->appendRow(item);
}
if(xAlertUnderEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-"+ "低于警报值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"警报"));
itemChannel->appendRow(item);
}
if(xDangerOverEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于危险值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险"));
itemChannel->appendRow(item);
}
if(xDangerUnderEnabled == 1){
item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "低于危险值"));
//item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险"));
itemChannel->appendRow(item);
}
itemChannel->setData(strStaticData);
}
}
}
break;
}
}
}
void CConfiguration::PushData()
{
if(m_isConfirm == -1){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先点击\"应用\""));
return ;
}
m_isConfirm = -1;
QJsonArray WorkConditionConfiguraitonsArray2;
if(m_vecWorkConditionObj.size() > 0){
for (int i = 0; i < m_vecWorkConditionObj.size(); i++) {
m_WorkConditionConfiguraitonsArray.append(m_vecWorkConditionObj[i]);
}
for (int i = 0; i < m_vecWorkConditionObj2.size(); i++) {
WorkConditionConfiguraitonsArray2.append(m_vecWorkConditionObj2[i]);
}
}else{
m_WorkConditionConfiguraitonsArray.append(m_ConfiguraitonsWCObj);
}
QJsonObject WorkConditionConfiguraitonsObj,WorkConditionConfiguraitonsObj2;
WorkConditionConfiguraitonsObj["WorkConditionConfiguraitons"] = m_WorkConditionConfiguraitonsArray;
WorkConditionConfiguraitonsObj2["WorkConditionConfiguraitons"] = WorkConditionConfiguraitonsArray2;
QJsonDocument jsonDoc;
jsonDoc.setObject(WorkConditionConfiguraitonsObj);
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json";
QJsonDocument jsonDoc2;
jsonDoc2.setObject(WorkConditionConfiguraitonsObj2);
QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json";
QFile file(fileName);
file.open(QIODevice::WriteOnly);
file.write(jsonDoc.toJson());
file.close();
QFile file2(fileName2);
file2.open(QIODevice::WriteOnly);
file2.write(jsonDoc2.toJson());
file2.close();
// QString strTableName = " t_UnitConfiguration ";
// QVector<UnitConfiguration_t> vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName);
// for (int i = 0; i < m_WorkConditionConfiguraitonsArray.size(); i++) {
// for (int j = 0; j < vecUnitConfiguration.size(); j++) {
// QJsonObject WorkConditionConfiguraitonsObj = m_WorkConditionConfiguraitonsArray.at(i).toObject();
// if(WorkConditionConfiguraitonsObj["SN"].toString() == vecUnitConfiguration[j].WorkConditionID){
// QJsonArray ConfiguraitonsArray = WorkConditionConfiguraitonsObj["Configuraitons"].toArray();
// for (int k = 0; k < ConfiguraitonsArray.size(); k++) {
// QJsonObject ConfiguraitonsObj = ConfiguraitonsArray[k].toObject();
// if(ConfiguraitonsObj["ChannelId"].toString() == vecUnitConfiguration[j].ChannelID){
// if(vecUnitConfiguration[j].Operate == 3){
// QJsonArray UnitConfigurationArray = m_WorkConditionConfiguraitonsArray.at(i).toArray();
// ConfiguraitonsObj["ChannelOperate"] = 3;
// ConfiguraitonsArray[k] = ConfiguraitonsObj;
// WorkConditionConfiguraitonsObj["Configuraitons"] = ConfiguraitonsArray;
// m_WorkConditionConfiguraitonsArray.removeAt(i);
// m_WorkConditionConfiguraitonsArray.insert(i, WorkConditionConfiguraitonsObj);
// }else if(vecUnitConfiguration[j].Operate == 4){
// QJsonArray UnitConfigurationArray = m_WorkConditionConfiguraitonsArray.at(i).toArray();
// ConfiguraitonsObj["ChannelOperate"] = 4;
// ConfiguraitonsArray[k] = ConfiguraitonsObj;
// WorkConditionConfiguraitonsObj["Configuraitons"] = ConfiguraitonsArray;
// m_WorkConditionConfiguraitonsArray.removeAt(i);
// m_WorkConditionConfiguraitonsArray.insert(i, WorkConditionConfiguraitonsObj);
// }
// }
// }
// }
// }
// }
qDebug() << WorkConditionConfiguraitonsArray2 << endl;
qDebug() << m_WorkConditionConfiguraitonsArray << endl;
QJsonArray().swap(m_WorkConditionConfiguraitonsArray);
QJsonArray().swap(m_array);
QJsonArray().swap(m_ConfiguraitonsArray);
QJsonArray().swap(m_deleteInputArray);
QVector<QJsonObject>().swap(m_vecWorkConditionObj2);
QString tableName = " t_UnitConfiguration ";
g_SqliteDB->DeleteDataW(tableName,"");
QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations.json");
g_FtpClient->SetServerInfo(str);
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
g_FtpClient->UpLoadFile(fileName,"UnitConfigurations.json");
QString str2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations2.json");
g_FtpClient->SetServerInfo(str2);
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
g_FtpClient->UpLoadFile(fileName2,"UnitConfigurations2.json");
}
void CConfiguration::on_comboBox_WC_currentIndexChanged(const QString &arg1)
{
for (int i = 0; i < m_vecWorkConditionObj.size(); i++) {
QJsonObject tempObj = m_vecWorkConditionObj[i];
if(ui->comboBox_WC->currentText() == tempObj["WorkConditionName"].toString()){
QJsonArray tempArray = tempObj["Configuraitons"].toArray();
for (int j = 0;j < tempArray.size() ;j++ ) {
}
}
}
}
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){
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);
// }
// 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();
// for (int j = 0;j < tempArray.size() ;j++ ) {
// if(tempArray.at(j)["ChannelNoInBoard"] == ChannelNoInBoard){
// 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"));
// 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);
// itemOr->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);
// 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);
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
}
void CConfiguration::on_radioButton_1_clicked()
{
m_curentRLY = 3;
ViewRelay(3);
}
void CConfiguration::on_radioButton_2_clicked()
{
m_curentRLY = 4;
ViewRelay(4);
}
void CConfiguration::on_radioButton_3_clicked()
{
m_curentRLY = 5;
ViewRelay(5);
}
void CConfiguration::on_radioButton_4_clicked()
{
m_curentRLY = 6;
ViewRelay(6);
}
void CConfiguration::on_radioButton_5_clicked()
{
m_curentRLY = 7;
ViewRelay(7);
}
void CConfiguration::on_radioButton_6_clicked()
{
m_curentRLY = 8;
ViewRelay(8);
}
void CConfiguration::on_radioButton_8_clicked()
{
m_curentRLY = 10;
ViewRelay(10);
}
void CConfiguration::on_radioButton_7_clicked()
{
m_curentRLY = 9;
ViewRelay(9);
}
void CConfiguration::on_radioButton_9_clicked()
{
m_curentRLY = 11;
ViewRelay(11);
}
void CConfiguration::on_radioButton_10_clicked()
{
m_curentRLY = 12;
ViewRelay(12);
}
void CConfiguration::on_treeView_Available_pressed(const QModelIndex &index)
{
}