add save monitor functions
This commit is contained in:
parent
993c9b8e3a
commit
c7f51ae47d
|
|
@ -7,6 +7,7 @@
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
#include <QJsonArray>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QStandardItemModel>
|
#include <QStandardItemModel>
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
@ -1083,6 +1084,35 @@ struct monitorRelationSturctItem //监控关系结构item
|
||||||
int nEquipType; //设备类别
|
int nEquipType; //设备类别
|
||||||
QString sName; //名称
|
QString sName; //名称
|
||||||
QUuid uid; //id
|
QUuid uid; //id
|
||||||
|
|
||||||
|
QJsonObject toJson() const {
|
||||||
|
QJsonObject obj;
|
||||||
|
obj["nCategory"] = nCategory;
|
||||||
|
obj["nEquipType"] = nEquipType;
|
||||||
|
obj["sName"] = sName;
|
||||||
|
obj["uid"] = uid.toString();
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从JSON对象解析
|
||||||
|
void fromJson(const QJsonObject& json) {
|
||||||
|
nCategory = json["nCategory"].toInt();
|
||||||
|
nEquipType = json["nEquipType"].toInt();
|
||||||
|
sName = json["sName"].toString();
|
||||||
|
uid = QUuid::fromString(json["uid"].toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查有效性
|
||||||
|
bool isValid() const {
|
||||||
|
return !uid.isNull() && !sName.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重载相等运算符
|
||||||
|
bool operator==(const monitorRelationSturctItem& other) const {
|
||||||
|
return uid == other.uid &&
|
||||||
|
sName == other.sName &&
|
||||||
|
nCategory == other.nCategory;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct monitorRelationItem //监控关系item
|
struct monitorRelationItem //监控关系item
|
||||||
|
|
@ -1090,6 +1120,68 @@ struct monitorRelationItem //监控关系item
|
||||||
monitorRelationSturctItem parent;
|
monitorRelationSturctItem parent;
|
||||||
monitorRelationSturctItem item;
|
monitorRelationSturctItem item;
|
||||||
QList<monitorRelationSturctItem> subList;
|
QList<monitorRelationSturctItem> subList;
|
||||||
|
|
||||||
|
QJsonObject toJson() const {
|
||||||
|
QJsonObject obj;
|
||||||
|
obj["parent"] = parent.toJson();
|
||||||
|
obj["item"] = item.toJson();
|
||||||
|
|
||||||
|
// 序列化子列表
|
||||||
|
QJsonArray subArray;
|
||||||
|
for (const auto& subItem : subList) {
|
||||||
|
subArray.append(subItem.toJson());
|
||||||
|
}
|
||||||
|
obj["subList"] = subArray;
|
||||||
|
obj["subCount"] = subList.size();
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从JSON对象解析
|
||||||
|
void fromJson(const QJsonObject& json) {
|
||||||
|
parent.fromJson(json["parent"].toObject());
|
||||||
|
item.fromJson(json["item"].toObject());
|
||||||
|
|
||||||
|
// 解析子列表
|
||||||
|
subList.clear();
|
||||||
|
QJsonArray subArray = json["subList"].toArray();
|
||||||
|
for (const QJsonValue& subValue : subArray) {
|
||||||
|
monitorRelationSturctItem sub;
|
||||||
|
sub.fromJson(subValue.toObject());
|
||||||
|
subList.append(sub);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查有效性
|
||||||
|
bool isValid() const {
|
||||||
|
return parent.isValid() && item.isValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加子项
|
||||||
|
void addSubItem(const monitorRelationSturctItem& subItem) {
|
||||||
|
subList.append(subItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除子项
|
||||||
|
bool removeSubItem(const QUuid& subUid) {
|
||||||
|
for (int i = 0; i < subList.size(); ++i) {
|
||||||
|
if (subList[i].uid == subUid) {
|
||||||
|
subList.removeAt(i);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找子项
|
||||||
|
monitorRelationSturctItem* findSubItem(const QUuid& subUid) {
|
||||||
|
for (auto& sub : subList) {
|
||||||
|
if (sub.uid == subUid) {
|
||||||
|
return ⊂
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct monitorItemAttributeInfo //单个监控item属性
|
struct monitorItemAttributeInfo //单个监控item属性
|
||||||
|
|
@ -1105,6 +1197,50 @@ struct monitorItemAttributeInfo //单个监控item属性
|
||||||
QString sTimeRange; //时间范围(分)
|
QString sTimeRange; //时间范围(分)
|
||||||
QString sValue; //属性值
|
QString sValue; //属性值
|
||||||
bool bSelected = false;
|
bool bSelected = false;
|
||||||
|
|
||||||
|
// 转换为JSON对象
|
||||||
|
QJsonObject toJson() const {
|
||||||
|
QJsonObject obj;
|
||||||
|
obj["sGroup"] = sGroup;
|
||||||
|
obj["sTag"] = sTag;
|
||||||
|
obj["sName"] = sName;
|
||||||
|
obj["nConnectType"] = nConnectType;
|
||||||
|
obj["sConnectPara"] = sConnectPara;
|
||||||
|
obj["nShowType"] = nShowType;
|
||||||
|
obj["bShowDiagram"] = bShowDiagram;
|
||||||
|
obj["nGraphType"] = nGraphType;
|
||||||
|
obj["sTimeRange"] = sTimeRange;
|
||||||
|
obj["sValue"] = sValue;
|
||||||
|
obj["bSelected"] = bSelected;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从JSON对象解析
|
||||||
|
void fromJson(const QJsonObject& json) {
|
||||||
|
sGroup = json["sGroup"].toString();
|
||||||
|
sTag = json["sTag"].toString();
|
||||||
|
sName = json["sName"].toString();
|
||||||
|
nConnectType = json["nConnectType"].toInt();
|
||||||
|
sConnectPara = json["sConnectPara"].toString();
|
||||||
|
nShowType = json["nShowType"].toInt();
|
||||||
|
bShowDiagram = json["bShowDiagram"].toBool();
|
||||||
|
nGraphType = json["nGraphType"].toInt();
|
||||||
|
sTimeRange = json["sTimeRange"].toString();
|
||||||
|
sValue = json["sValue"].toString();
|
||||||
|
bSelected = json["bSelected"].toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查有效性
|
||||||
|
bool isValid() const {
|
||||||
|
return !sTag.isEmpty() && !sName.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重载相等运算符
|
||||||
|
bool operator==(const monitorItemAttributeInfo& other) const {
|
||||||
|
return sTag == other.sTag &&
|
||||||
|
sName == other.sName &&
|
||||||
|
sGroup == other.sGroup;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class monitorItemState{ //监控item的状态
|
enum class monitorItemState{ //监控item的状态
|
||||||
|
|
@ -1134,6 +1270,36 @@ struct monitorItemDisplayInfo //监控模式显示信息
|
||||||
int nHeight;
|
int nHeight;
|
||||||
QString sMeta; //元模型名
|
QString sMeta; //元模型名
|
||||||
QString sModel; //工程模名
|
QString sModel; //工程模名
|
||||||
|
|
||||||
|
QJsonObject toJson() const {
|
||||||
|
QJsonObject obj;
|
||||||
|
obj["nItemType"] = nItemType;
|
||||||
|
obj["sStateName"] = sStateName;
|
||||||
|
obj["bEnable"] = bEnable;
|
||||||
|
obj["sColor"] = sColor;
|
||||||
|
obj["bytPicture"] = QString(bytPicture.toBase64());
|
||||||
|
obj["nWidth"] = nWidth;
|
||||||
|
obj["nHeight"] = nHeight;
|
||||||
|
obj["sMeta"] = sMeta;
|
||||||
|
obj["sModel"] = sModel;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从JSON对象解析 - 成员函数
|
||||||
|
void fromJson(const QJsonObject& json) {
|
||||||
|
nItemType = json["nItemType"].toInt();
|
||||||
|
sStateName = json["sStateName"].toString();
|
||||||
|
bEnable = json["bEnable"].toBool();
|
||||||
|
sColor = json["sColor"].toString();
|
||||||
|
|
||||||
|
QString pictureBase64 = json["bytPicture"].toString();
|
||||||
|
bytPicture = QByteArray::fromBase64(pictureBase64.toUtf8());
|
||||||
|
|
||||||
|
nWidth = json["nWidth"].toInt();
|
||||||
|
nHeight = json["nHeight"].toInt();
|
||||||
|
sMeta = json["sMeta"].toString();
|
||||||
|
sModel = json["sModel"].toString();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct monitorItemTypeStruct //监控设备类型
|
struct monitorItemTypeStruct //监控设备类型
|
||||||
|
|
@ -1152,6 +1318,20 @@ struct monitorItemTypeStruct //监控设备类型
|
||||||
bool operator<(const monitorItemTypeStruct& other) const {
|
bool operator<(const monitorItemTypeStruct& other) const {
|
||||||
return sTag < other.sTag || (sTag == other.sTag && sName < other.sName);
|
return sTag < other.sTag || (sTag == other.sTag && sName < other.sName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 转换为JSON对象 - 成员函数
|
||||||
|
QJsonObject toJson() const {
|
||||||
|
QJsonObject obj;
|
||||||
|
obj["sTag"] = sTag;
|
||||||
|
obj["sName"] = sName;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从JSON对象解析 - 成员函数
|
||||||
|
void fromJson(const QJsonObject& json) {
|
||||||
|
sTag = json["sTag"].toString();
|
||||||
|
sName = json["sName"].toString();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct monitorItemStateStruct //监控设备状态
|
struct monitorItemStateStruct //监控设备状态
|
||||||
|
|
@ -1170,6 +1350,20 @@ struct monitorItemStateStruct //监控设备状态
|
||||||
bool operator<(const monitorItemStateStruct& other) const {
|
bool operator<(const monitorItemStateStruct& other) const {
|
||||||
return sState < other.sState || (sState == other.sState && eState < other.eState);
|
return sState < other.sState || (sState == other.sState && eState < other.eState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 转换为JSON对象 - 成员函数
|
||||||
|
QJsonObject toJson() const {
|
||||||
|
QJsonObject obj;
|
||||||
|
obj["sState"] = sState;
|
||||||
|
obj["eState"] = static_cast<int>(eState);
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从JSON对象解析 - 成员函数
|
||||||
|
void fromJson(const QJsonObject& json) {
|
||||||
|
sState = json["sState"].toString();
|
||||||
|
eState = static_cast<monitorItemState>(json["eState"].toInt());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ModelTypeInfo{ //类型临时信息
|
struct ModelTypeInfo{ //类型临时信息
|
||||||
|
|
|
||||||
|
|
@ -39,9 +39,17 @@ public:
|
||||||
|
|
||||||
virtual void loadNodes(QJsonObject obj) {}; //加载图元信息
|
virtual void loadNodes(QJsonObject obj) {}; //加载图元信息
|
||||||
virtual void saveNodes(int pageId) {}; //保存到数据库
|
virtual void saveNodes(int pageId) {}; //保存到数据库
|
||||||
|
virtual QJsonObject getDiagramInfo() {return QJsonObject();}
|
||||||
|
|
||||||
DesignerScene* getScene() {return m_pGraphicsScene;}
|
DesignerScene* getScene() {return m_pGraphicsScene;}
|
||||||
DesignerView* getView() {return m_pGraphicsView;}
|
DesignerView* getView() {return m_pGraphicsView;}
|
||||||
|
|
||||||
|
void setGeneratePanelLst(QStringList lst){_lstGeneratePanel = lst;}
|
||||||
|
QStringList& getGeneratePanelLst(){return _lstGeneratePanel;}
|
||||||
|
void setGenerateByPanel(QString s) {_sGenerateByPanel = s;}
|
||||||
|
QString getGenerateByPanel() {return _sGenerateByPanel;}
|
||||||
|
|
||||||
|
PowerEntity* getEntity() {return _pEntity;}
|
||||||
signals:
|
signals:
|
||||||
void panelDelete(const QString&,int);
|
void panelDelete(const QString&,int);
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -58,6 +66,8 @@ protected:
|
||||||
QVBoxLayout* _verticalLayout;
|
QVBoxLayout* _verticalLayout;
|
||||||
QHBoxLayout* _horizontalLayout;
|
QHBoxLayout* _horizontalLayout;
|
||||||
QSplitter* _hSplitter;
|
QSplitter* _hSplitter;
|
||||||
|
QStringList _lstGeneratePanel; //生成的panel列表
|
||||||
|
QString _sGenerateByPanel; //被哪个panel生成
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,8 @@ public slots:
|
||||||
void onSignal_monitorSelected(DiagramInfo); //监控选中
|
void onSignal_monitorSelected(DiagramInfo); //监控选中
|
||||||
void onSignal_saveMonitor(QList<QPair<QString,QUuid>>); //保存选中的监控
|
void onSignal_saveMonitor(QList<QPair<QString,QUuid>>); //保存选中的监控
|
||||||
|
|
||||||
|
void updateMonitorListFromDB(); //从数据库更新监控列表
|
||||||
|
|
||||||
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> getMapDraw() {return m_mapDrawPanel;}
|
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> getMapDraw() {return m_mapDrawPanel;}
|
||||||
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> getMapEdit() {return m_mapEditPanel;}
|
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> getMapEdit() {return m_mapEditPanel;}
|
||||||
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> getMapMonitor() {return m_mapMonitorPanel;}
|
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> getMapMonitor() {return m_mapMonitorPanel;}
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,10 @@ public:
|
||||||
/*************************监控(运行时)**************************/
|
/*************************监控(运行时)**************************/
|
||||||
void generateMonitor(QString,QList<monitorRelationItem>); //生成监控 (监控名,选中的设备列表)
|
void generateMonitor(QString,QList<monitorRelationItem>); //生成监控 (监控名,选中的设备列表)
|
||||||
void generateMonitorConfig(MonitorPanel*); //生成监控配置参数结构
|
void generateMonitorConfig(MonitorPanel*); //生成监控配置参数结构
|
||||||
|
void setMonitorPara(QMap<QUuid,QList<monitorItemAttributeInfo>> map){m_monitorPara = map;}
|
||||||
QMap<QUuid,QList<monitorItemAttributeInfo>>& getMonitorPara() {return m_monitorPara;}
|
QMap<QUuid,QList<monitorItemAttributeInfo>>& getMonitorPara() {return m_monitorPara;}
|
||||||
|
void setMonitorRelation(QList<monitorRelationItem> lst){m_lstMonitorRelation = lst;}
|
||||||
|
QList<monitorRelationItem> getMonitorRelation() {return m_lstMonitorRelation;}
|
||||||
|
|
||||||
void monitorItemSelected(QUuid); //运行时item选中事件
|
void monitorItemSelected(QUuid); //运行时item选中事件
|
||||||
void monitorItemDetailAttr(QUuid); //显示属性详情
|
void monitorItemDetailAttr(QUuid); //显示属性详情
|
||||||
|
|
@ -164,6 +167,7 @@ private:
|
||||||
QMap<QUuid,QList<monitorItemAttributeInfo>> m_monitorPara; //监控参数
|
QMap<QUuid,QList<monitorItemAttributeInfo>> m_monitorPara; //监控参数
|
||||||
QMap<int,QList<QPair<monitorItemState,QString>>> m_monitorStateMap; //元件状态对照表 <type,<state,状态名>>
|
QMap<int,QList<QPair<monitorItemState,QString>>> m_monitorStateMap; //元件状态对照表 <type,<state,状态名>>
|
||||||
QMap<monitorItemTypeStruct,QMap<monitorItemStateStruct,monitorItemDisplayInfo>> m_monitorDisplaySetting; //元件设置
|
QMap<monitorItemTypeStruct,QMap<monitorItemStateStruct,monitorItemDisplayInfo>> m_monitorDisplaySetting; //元件设置
|
||||||
|
QList<monitorRelationItem> m_lstMonitorRelation; //监控item层级关系
|
||||||
public:
|
public:
|
||||||
static bool _dataInitialised;
|
static bool _dataInitialised;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,16 @@ public:
|
||||||
|
|
||||||
void initDisplayState(); //初始化显示状态参照表
|
void initDisplayState(); //初始化显示状态参照表
|
||||||
void initDisplaySetting(); //初始化显示状态设置
|
void initDisplaySetting(); //初始化显示状态设置
|
||||||
|
public:
|
||||||
|
//对层级关系的序列化与反序列化
|
||||||
|
QJsonArray serializeRelationToJsonArray(const QList<monitorRelationItem>& data) const;
|
||||||
|
bool deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList<monitorRelationItem>& result);
|
||||||
|
//对para的序列化与反序列化
|
||||||
|
QJsonArray serializeParaToJsonArray(const QMap<QUuid, QList<monitorItemAttributeInfo>>& data) const;
|
||||||
|
bool deserializeParaFromJsonArray(const QJsonArray& jsonArray,QMap<QUuid, QList<monitorItemAttributeInfo>>& result);
|
||||||
|
//对displaySetiing的序列化与反序列化
|
||||||
|
QJsonArray serializeDisplayToJsonArray(const QMap<monitorItemTypeStruct, QMap<monitorItemStateStruct, monitorItemDisplayInfo>>& data) const;
|
||||||
|
void deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,QMap<monitorItemTypeStruct, QMap<monitorItemStateStruct, monitorItemDisplayInfo>>& result);
|
||||||
public slots:
|
public slots:
|
||||||
void onRunClicked();
|
void onRunClicked();
|
||||||
void onStopClicked();
|
void onStopClicked();
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,12 @@ BaseDrawingPanel::BaseDrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramM
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
,_pModel(nullptr)
|
,_pModel(nullptr)
|
||||||
,_mode(mode)
|
,_mode(mode)
|
||||||
,_pEntity(pEntity)
|
,_pEntity(nullptr)
|
||||||
,_verticalLayout(nullptr)
|
,_verticalLayout(nullptr)
|
||||||
,_horizontalLayout(nullptr)
|
,_horizontalLayout(nullptr)
|
||||||
,_hSplitter(nullptr)
|
,_hSplitter(nullptr)
|
||||||
{
|
{
|
||||||
|
_pEntity = pEntity;
|
||||||
_pModel = new FixedPortsModel(pEntity);
|
_pModel = new FixedPortsModel(pEntity);
|
||||||
_pModel->setTopWidget(this);
|
_pModel->setTopWidget(this);
|
||||||
m_pSelectorManager = new SelectorManager(_pModel,this);
|
m_pSelectorManager = new SelectorManager(_pModel,this);
|
||||||
|
|
|
||||||
|
|
@ -116,15 +116,31 @@ void DiagramCavas::onSignal_addPage()
|
||||||
void DiagramCavas::onSignal_savePage()
|
void DiagramCavas::onSignal_savePage()
|
||||||
{
|
{
|
||||||
QWidget* pWindow= currentSubWindow()->widget();
|
QWidget* pWindow= currentSubWindow()->widget();
|
||||||
DrawingPanel* pPanel = dynamic_cast<DrawingPanel*>(pWindow);
|
BaseDrawingPanel* pPanel = dynamic_cast<BaseDrawingPanel*>(pWindow);
|
||||||
if(pPanel)
|
if(pPanel)
|
||||||
{
|
{
|
||||||
if(pPanel->getMode() == DM_run)
|
if(pPanel->getMode() == DM_run)
|
||||||
{
|
{
|
||||||
QMessageBox::about(NULL,QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"运行中无法保存!"));
|
auto pMonitor = dynamic_cast<MonitorPanel*>(pPanel);
|
||||||
|
if(pMonitor){
|
||||||
|
if(DataBase::GetInstance()->getPageIdByName(pMonitor->getParentPage()) == -1){
|
||||||
|
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"请先保存工程模型"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
auto pEntity = pMonitor->getEntity();
|
||||||
|
if(pEntity){
|
||||||
|
if(DataBase::GetInstance()->getMonitorIdByName(pEntity->name()).isNull()) //不存在,创建
|
||||||
|
DataBase::GetInstance()->insertMonitor(QUuid(pEntity->id()),pEntity->name(),pEntity->name(),pMonitor->getParentPage(),pMonitor->getMonitorInfo());
|
||||||
|
else
|
||||||
|
DataBase::GetInstance()->updateMonitor(pEntity->name(),pMonitor->getMonitorInfo());
|
||||||
|
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(pPanel->getMode() == DM_edit)
|
else if(pPanel->getMode() == DM_edit)
|
||||||
{
|
{
|
||||||
|
auto pDrawPanel = dynamic_cast<MonitorPanel*>(pPanel);
|
||||||
_curPage = pPanel->pageName();
|
_curPage = pPanel->pageName();
|
||||||
QMessageBox msgBox;
|
QMessageBox msgBox;
|
||||||
msgBox.setText(QString::fromWCharArray(L"提示"));
|
msgBox.setText(QString::fromWCharArray(L"提示"));
|
||||||
|
|
@ -215,8 +231,8 @@ void DiagramCavas::onSignal_loadMonitor(PowerEntity* p)
|
||||||
if(!m_mapMonitorPanel.contains(p->name()))
|
if(!m_mapMonitorPanel.contains(p->name()))
|
||||||
{
|
{
|
||||||
onSignal_addDrawingPanel(p,DiagramMode::DM_run);
|
onSignal_addDrawingPanel(p,DiagramMode::DM_run);
|
||||||
//QJsonObject context = DataBase::GetInstance()->getPageContextByName(p->name());
|
QJsonObject context = DataBase::GetInstance()->getMonitorContextByTag(p->name());
|
||||||
//m_mapDrawPanel[p->name()].first->loadNodes(context);
|
m_mapMonitorPanel[p->name()].first->loadNodes(context);
|
||||||
}
|
}
|
||||||
else //已存在
|
else //已存在
|
||||||
{
|
{
|
||||||
|
|
@ -609,3 +625,16 @@ void DiagramCavas::onSignal_saveMonitor(QList<QPair<QString,QUuid>> lst)
|
||||||
}
|
}
|
||||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功"));
|
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::updateMonitorListFromDB()
|
||||||
|
{
|
||||||
|
QList<monitorPageInfo> lstMonitor = DataBase::GetInstance()->getAllMonitor();
|
||||||
|
for(auto &info:lstMonitor)
|
||||||
|
{
|
||||||
|
auto p = TopologyManager::instance().findDiagram(info.uid.toString(),ModelFunctionType::RuntimeModel);
|
||||||
|
if(!p){
|
||||||
|
TopologyManager::instance().createDiagram(info.uid.toString(),info.name,ModelFunctionType::RuntimeModel);
|
||||||
|
emit updateMonitorList(info.parent,qMakePair(info.name,info.uid));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -319,13 +319,6 @@ void DrawingPanel::loadNodes(QJsonObject obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
emit _pModel->updateCurrentItems(lstSecond,false);
|
emit _pModel->updateCurrentItems(lstSecond,false);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if(_mode == DM_run)
|
|
||||||
{
|
|
||||||
//if(_pModel)
|
|
||||||
//_pModel->startHttpRequest();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ bool FixedPortsModel::addNodeItem(QUuid uuid,GraphicsProjectModelItem* pItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width,double height,double rotate)
|
QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double height,double rotate)
|
||||||
{
|
{
|
||||||
//todo:load图形时必有拓扑实体,关联到对应的entity
|
//todo:load图形时必有拓扑实体,关联到对应的entity
|
||||||
BaseProperty* pro = nullptr;
|
BaseProperty* pro = nullptr;
|
||||||
|
|
@ -776,8 +776,12 @@ void FixedPortsModel::loadNodeDataFromDataBase()
|
||||||
|
|
||||||
QString FixedPortsModel::addConnectLline(QUuid lineId,QUuid srcId,QUuid destId,QUuid srcPort,QUuid destPort)
|
QString FixedPortsModel::addConnectLline(QUuid lineId,QUuid srcId,QUuid destId,QUuid srcPort,QUuid destPort)
|
||||||
{
|
{
|
||||||
GraphicsProjectModelItem* src = _nodeItem[srcId];
|
GraphicsProjectModelItem* src = nullptr;
|
||||||
GraphicsProjectModelItem* dest = _nodeItem[destId];
|
if(_nodeItem.contains(srcId))
|
||||||
|
src = _nodeItem.value(srcId);
|
||||||
|
GraphicsProjectModelItem* dest = nullptr;
|
||||||
|
if(_nodeItem.contains(destId))
|
||||||
|
dest = _nodeItem.value(destId);
|
||||||
QMap<QUuid,BaseProperty*> mapData = BasePropertyManager::instance().getEntityData();
|
QMap<QUuid,BaseProperty*> mapData = BasePropertyManager::instance().getEntityData();
|
||||||
if(mapData.contains(lineId))
|
if(mapData.contains(lineId))
|
||||||
{
|
{
|
||||||
|
|
@ -2596,6 +2600,10 @@ void FixedPortsModel::generateMonitor(QString sPage,QList<monitorRelationItem> l
|
||||||
info.parentId = _pEntity->id();
|
info.parentId = _pEntity->id();
|
||||||
_cavas->onSignal_createDiagram(info,DiagramMode::DM_run);
|
_cavas->onSignal_createDiagram(info,DiagramMode::DM_run);
|
||||||
pPanel = _cavas->getMonitorPanel(sPage);
|
pPanel = _cavas->getMonitorPanel(sPage);
|
||||||
|
pPanel->getModelController()->setMonitorRelation(lst);
|
||||||
|
|
||||||
|
_widget->getGeneratePanelLst().append(sPage); //记录生成的运行页
|
||||||
|
pPanel->setParentPage(_pageName); //生成页记录被哪个组态生成
|
||||||
|
|
||||||
QList<monitorRelationItem> lstFirst;
|
QList<monitorRelationItem> lstFirst;
|
||||||
for(auto& itemInfo:lst)
|
for(auto& itemInfo:lst)
|
||||||
|
|
@ -2749,23 +2757,10 @@ void FixedPortsModel::monitorItemDetailAttr(QUuid uid)
|
||||||
void FixedPortsModel::monitorItemSet(QUuid uid)
|
void FixedPortsModel::monitorItemSet(QUuid uid)
|
||||||
{
|
{
|
||||||
if(_nodeItem.contains(uid)){
|
if(_nodeItem.contains(uid)){
|
||||||
//QList<QString> lstRemove; //需要从item移除的动态数据
|
|
||||||
QList<QString> lstAdd; //需要向item添加的动态数据
|
QList<QString> lstAdd; //需要向item添加的动态数据
|
||||||
|
|
||||||
auto pItem = _nodeItem.value(uid);
|
auto pItem = _nodeItem.value(uid);
|
||||||
auto lst = m_monitorPara.value(uid);
|
auto lst = m_monitorPara.value(uid);
|
||||||
//auto mapText = pItem->getDynamicText();
|
|
||||||
|
|
||||||
/*for(auto iter = mapText.begin();iter != mapText.end();++iter){
|
|
||||||
bool exist = false;
|
|
||||||
for(auto& info:lst){
|
|
||||||
if(info.sTag == iter.key()){ //新旧队列都存在
|
|
||||||
exist = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!exist)
|
|
||||||
lstRemove.append(iter.key());
|
|
||||||
}*/
|
|
||||||
|
|
||||||
for(auto& info:lst){
|
for(auto& info:lst){
|
||||||
if(info.bShowDiagram && info.bSelected){
|
if(info.bShowDiagram && info.bSelected){
|
||||||
|
|
@ -2773,9 +2768,6 @@ void FixedPortsModel::monitorItemSet(QUuid uid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*for(auto& str:lstRemove){
|
|
||||||
pItem->removeDynamicText(str);
|
|
||||||
}*/
|
|
||||||
pItem->removeAllDynamicText();
|
pItem->removeAllDynamicText();
|
||||||
|
|
||||||
for(auto& str:lstAdd){
|
for(auto& str:lstAdd){
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
#include <QToolBar>
|
#include <QToolBar>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
#include <QJsonDocument>
|
||||||
#include "graphicsDataModel/fixedPortsModel.h"
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
#include "graphicsItem/graphicsBaseItem.h"
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
#include "powerEntity.h"
|
#include "powerEntity.h"
|
||||||
|
|
@ -160,13 +161,144 @@ QJsonObject MonitorPanel::getMonitorInfo() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
obj["bays"] = arrBay;
|
obj["bays"] = arrBay;
|
||||||
|
|
||||||
|
auto relation = serializeRelationToJsonArray(_pModel->getMonitorRelation());
|
||||||
|
obj["relation"] = relation;
|
||||||
|
|
||||||
|
auto para = serializeParaToJsonArray(_pModel->getMonitorPara()); //设定参数
|
||||||
|
obj["para"] = para;
|
||||||
|
|
||||||
|
auto settingArr = serializeDisplayToJsonArray(_pModel->getMonitorDisplaySetting()); //显示参数
|
||||||
|
obj["displaySetting"] = settingArr;
|
||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MonitorPanel::loadNodes(QJsonObject obj)
|
void MonitorPanel::loadNodes(QJsonObject obj)
|
||||||
{
|
{
|
||||||
|
QJsonArray nodesJsonArray = obj["nodes"].toArray();
|
||||||
|
|
||||||
|
QList<QPair<QString,QUuid>> lst;
|
||||||
|
for (QJsonValueRef nodeJson : nodesJsonArray)
|
||||||
|
{
|
||||||
|
QJsonObject node = nodeJson.toObject();
|
||||||
|
QString uuid = node["id"].toString();
|
||||||
|
double dX = node["x"].toDouble();
|
||||||
|
double dY = node["y"].toDouble();
|
||||||
|
double dWidth = node["width"].toDouble();
|
||||||
|
double dHeight = node["height"].toDouble();
|
||||||
|
double dRotate = node["rotate"].toDouble();
|
||||||
|
|
||||||
|
if(_pModel)
|
||||||
|
{
|
||||||
|
QString sName = _pModel->addNodeItem(QUuid(uuid),QPointF(dX,dY),dWidth,dHeight,dRotate);
|
||||||
|
if(sName != "err"){
|
||||||
|
lst.append(qMakePair(sName,QUuid(uuid)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QJsonArray connectArr = obj["connections"].toArray();
|
||||||
|
for(QJsonValueRef connectJson:connectArr)
|
||||||
|
{
|
||||||
|
QJsonObject connect = connectJson.toObject();
|
||||||
|
QUuid id = QUuid(connect["id"].toString()); //电缆线id,关联component中的电缆
|
||||||
|
QUuid srcId = QUuid(connect["SrcNodeId"].toString());
|
||||||
|
QUuid srcPortId = QUuid(connect["SrcPortId"].toString());
|
||||||
|
QUuid destId = QUuid(connect["DestNodeId"].toString());
|
||||||
|
QUuid destPortId = QUuid(connect["DestPortId"].toString());
|
||||||
|
|
||||||
|
PowerConnection* pCon = TopologyManager::instance().connection(srcPortId.toString(),destPortId.toString());
|
||||||
|
if(pCon)
|
||||||
|
{
|
||||||
|
QString srcItemId = pCon->fromComponent();
|
||||||
|
QString destItemId = pCon->toComponent();
|
||||||
|
//todo:从拓扑结构中查找port的id
|
||||||
|
if(_pModel)
|
||||||
|
{
|
||||||
|
QString sName = _pModel->addConnectLline(id,QUuid(srcItemId),QUuid(destItemId),srcPortId,destPortId);
|
||||||
|
if(sName != "err"){
|
||||||
|
lst.append(qMakePair(sName,QUuid(id)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//todo:提示拓扑结构已改变
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonArray bayArr = obj["bays"].toArray();
|
||||||
|
for(QJsonValueRef bayJson:bayArr)
|
||||||
|
{
|
||||||
|
QJsonObject bay = bayJson.toObject();
|
||||||
|
QUuid id = QUuid(bay["id"].toString());
|
||||||
|
if(_pModel)
|
||||||
|
{
|
||||||
|
_pModel->addBayItem(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonArray paraArr = obj["para"].toArray();
|
||||||
|
QMap<QUuid, QList<monitorItemAttributeInfo>> mapPara;
|
||||||
|
bool resPara = deserializeParaFromJsonArray(paraArr,mapPara);
|
||||||
|
if(resPara){
|
||||||
|
if(_pModel){
|
||||||
|
_pModel->setMonitorPara(mapPara);
|
||||||
|
auto pItems = _pModel->getProjectItems();
|
||||||
|
for(auto& p:pItems){ //将设置值更新到每个item
|
||||||
|
auto pPro = p->getProperty();
|
||||||
|
if(pPro)
|
||||||
|
_pModel->monitorItemSet(pPro->uuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonArray displayArr = obj["displaySetting"].toArray();
|
||||||
|
QMap<monitorItemTypeStruct, QMap<monitorItemStateStruct, monitorItemDisplayInfo>> mapDisplay;
|
||||||
|
deserializeDisplayFromJsonArray(displayArr,mapDisplay);
|
||||||
|
if(_pModel){
|
||||||
|
_pModel->setMonitorDisplaySetting(mapDisplay);
|
||||||
|
_pModel->updateMonitorDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonArray relationArr = obj["relation"].toArray();
|
||||||
|
QList<monitorRelationItem> lstRelation;
|
||||||
|
bool resRel = deserializeRelationFromJsonArray(relationArr, lstRelation);
|
||||||
|
if(resRel){
|
||||||
|
QList<monitorRelationItem> lstFirst;
|
||||||
|
if(_pModel){
|
||||||
|
auto pItems = _pModel->getProjectItems();
|
||||||
|
for(auto& itemInfo:lstRelation)
|
||||||
|
{
|
||||||
|
if(itemInfo.item.nCategory == 0){ //设备
|
||||||
|
if(pItems.contains(itemInfo.item.uid)){
|
||||||
|
if(itemInfo.item.nEquipType == 1 || itemInfo.item.nEquipType == 15 || itemInfo.item.nEquipType == 16){ //先添加母线及独立设备
|
||||||
|
lstFirst.append(itemInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<monitorRelationItem> lstSecond;
|
||||||
|
for(auto& itemInfo:lstRelation) //第二次循环处理间隔内设备
|
||||||
|
{
|
||||||
|
if(itemInfo.item.nCategory == 0){ //间隔
|
||||||
|
if(pItems.contains(itemInfo.item.uid)){
|
||||||
|
if(itemInfo.item.nEquipType != 1 && itemInfo.item.nEquipType != 15 && itemInfo.item.nEquipType != 16){
|
||||||
|
lstSecond.append(itemInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateSelectedItems(lstFirst,true); //直接生成监控tree
|
||||||
|
updateSelectedItems(lstSecond,false);
|
||||||
|
|
||||||
|
_pModel->setMonitorRelation(lstRelation);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MonitorPanel::saveNodes(int pageId)
|
void MonitorPanel::saveNodes(int pageId)
|
||||||
|
|
@ -465,3 +597,162 @@ void MonitorPanel::initDisplaySetting()
|
||||||
_pModel->getMonitorDisplaySetting().insert(keyType,mapStates);
|
_pModel->getMonitorDisplaySetting().insert(keyType,mapStates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QJsonArray MonitorPanel::serializeRelationToJsonArray(const QList<monitorRelationItem>& data) const
|
||||||
|
{
|
||||||
|
QJsonArray rootArray;
|
||||||
|
|
||||||
|
for (const auto& relationItem : data) {
|
||||||
|
rootArray.append(relationItem.toJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从 QJsonArray 反序列化到 QList<monitorRelationItem>
|
||||||
|
bool MonitorPanel::deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList<monitorRelationItem>& result)
|
||||||
|
{
|
||||||
|
result.clear();
|
||||||
|
|
||||||
|
for (const QJsonValue& itemValue : jsonArray) {
|
||||||
|
if (!itemValue.isObject()) continue;
|
||||||
|
|
||||||
|
monitorRelationItem relationItem;
|
||||||
|
relationItem.fromJson(itemValue.toObject());
|
||||||
|
|
||||||
|
if (relationItem.isValid()) {
|
||||||
|
result.append(relationItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonArray MonitorPanel::serializeParaToJsonArray(const QMap<QUuid, QList<monitorItemAttributeInfo>>& data) const
|
||||||
|
{
|
||||||
|
QJsonArray rootArray;
|
||||||
|
|
||||||
|
for (auto it = data.begin(); it != data.end(); ++it) {
|
||||||
|
const QUuid& uuid = it.key();
|
||||||
|
const QList<monitorItemAttributeInfo>& attributeList = it.value();
|
||||||
|
|
||||||
|
QJsonObject uuidObject;
|
||||||
|
uuidObject["uuid"] = uuid.toString();
|
||||||
|
|
||||||
|
QJsonArray attributesArray;
|
||||||
|
|
||||||
|
// 序列化属性列表
|
||||||
|
for (const auto& attribute : attributeList) {
|
||||||
|
attributesArray.append(attribute.toJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
uuidObject["attributes"] = attributesArray;
|
||||||
|
uuidObject["attributeCount"] = attributesArray.size();
|
||||||
|
|
||||||
|
rootArray.append(uuidObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从 QJsonArray 反序列化到 QMap<QUuid, QList<monitorItemAttributeInfo>>
|
||||||
|
bool MonitorPanel::deserializeParaFromJsonArray(const QJsonArray& jsonArray,
|
||||||
|
QMap<QUuid, QList<monitorItemAttributeInfo>>& result)
|
||||||
|
{
|
||||||
|
result.clear();
|
||||||
|
|
||||||
|
for (const QJsonValue& uuidValue : jsonArray) {
|
||||||
|
if (!uuidValue.isObject()) continue;
|
||||||
|
|
||||||
|
QJsonObject uuidObject = uuidValue.toObject();
|
||||||
|
|
||||||
|
// 解析UUID
|
||||||
|
QUuid uuid = QUuid::fromString(uuidObject["uuid"].toString());
|
||||||
|
if (uuid.isNull()) continue;
|
||||||
|
|
||||||
|
// 解析属性列表
|
||||||
|
QList<monitorItemAttributeInfo> attributeList;
|
||||||
|
QJsonArray attributesArray = uuidObject["attributes"].toArray();
|
||||||
|
|
||||||
|
for (const QJsonValue& attrValue : attributesArray) {
|
||||||
|
if (!attrValue.isObject()) continue;
|
||||||
|
|
||||||
|
monitorItemAttributeInfo attribute;
|
||||||
|
attribute.fromJson(attrValue.toObject());
|
||||||
|
attributeList.append(attribute);
|
||||||
|
}
|
||||||
|
|
||||||
|
result[uuid] = attributeList;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QJsonArray MonitorPanel::serializeDisplayToJsonArray(const QMap<monitorItemTypeStruct, QMap<monitorItemStateStruct, monitorItemDisplayInfo>>& data) const
|
||||||
|
{
|
||||||
|
|
||||||
|
QJsonArray rootArray;
|
||||||
|
|
||||||
|
for (auto typeIt = data.begin(); typeIt != data.end(); ++typeIt) {
|
||||||
|
const monitorItemTypeStruct& typeKey = typeIt.key();
|
||||||
|
const auto& stateMap = typeIt.value();
|
||||||
|
|
||||||
|
QJsonObject typeObject;
|
||||||
|
typeObject["typeKey"] = typeKey.toJson();
|
||||||
|
|
||||||
|
QJsonArray statesArray;
|
||||||
|
|
||||||
|
for (auto stateIt = stateMap.begin(); stateIt != stateMap.end(); ++stateIt) {
|
||||||
|
const monitorItemStateStruct& stateKey = stateIt.key();
|
||||||
|
const monitorItemDisplayInfo& displayInfo = stateIt.value();
|
||||||
|
|
||||||
|
QJsonObject stateObject;
|
||||||
|
stateObject["stateKey"] = stateKey.toJson();
|
||||||
|
stateObject["displayInfo"] = displayInfo.toJson();
|
||||||
|
|
||||||
|
statesArray.append(stateObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
typeObject["states"] = statesArray;
|
||||||
|
rootArray.append(typeObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从JSON数组反序列化
|
||||||
|
void MonitorPanel::deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,QMap<monitorItemTypeStruct, QMap<monitorItemStateStruct, monitorItemDisplayInfo>>& result)
|
||||||
|
{
|
||||||
|
|
||||||
|
result.clear();
|
||||||
|
|
||||||
|
for (const QJsonValue& typeValue : jsonArray) {
|
||||||
|
if (!typeValue.isObject()) continue;
|
||||||
|
|
||||||
|
QJsonObject typeObject = typeValue.toObject();
|
||||||
|
|
||||||
|
// 解析类型键
|
||||||
|
monitorItemTypeStruct typeKey;
|
||||||
|
typeKey.fromJson(typeObject["typeKey"].toObject());
|
||||||
|
|
||||||
|
QMap<monitorItemStateStruct, monitorItemDisplayInfo> stateMap;
|
||||||
|
QJsonArray statesArray = typeObject["states"].toArray();
|
||||||
|
|
||||||
|
for (const QJsonValue& stateValue : statesArray) {
|
||||||
|
if (!stateValue.isObject()) continue;
|
||||||
|
|
||||||
|
QJsonObject stateObject = stateValue.toObject();
|
||||||
|
|
||||||
|
monitorItemStateStruct stateKey;
|
||||||
|
stateKey.fromJson(stateObject["stateKey"].toObject());
|
||||||
|
|
||||||
|
monitorItemDisplayInfo displayInfo;
|
||||||
|
displayInfo.fromJson(stateObject["displayInfo"].toObject());
|
||||||
|
|
||||||
|
stateMap[stateKey] = displayInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
result[typeKey] = stateMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,9 @@ void CMainWindow::initializeAction()
|
||||||
_pActMonitor->setChecked(true);
|
_pActMonitor->setChecked(true);
|
||||||
m_pMonitorItemsDock->show();
|
m_pMonitorItemsDock->show();
|
||||||
m_pMonitorPagesDock->show();
|
m_pMonitorPagesDock->show();
|
||||||
|
|
||||||
|
if(m_pDiagramCavas)
|
||||||
|
m_pDiagramCavas->updateMonitorListFromDB();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue