From d5609bd466ef5e7347a4a3c8cf0abd58a13a59c8 Mon Sep 17 00:00:00 2001 From: baiYue Date: Fri, 13 Mar 2026 08:31:37 +0800 Subject: [PATCH] mod header structure --- CMakeLists.txt | 13 +- common/backend/meta_model.h | 72 + common/backend/project_model.h | 283 +++ common/core_model/constants.h | 15 + common/core_model/data_transmission.h | 14 + common/core_model/diagram.h | 372 ++++ common/core_model/topology.h | 413 ++++ .../global.cpp => core_model/types.cpp} | 2 +- common/core_model/types.h | 172 ++ common/frontend/graphics_items.h | 28 + common/frontend/monitor_item.h | 236 +++ common/include/baseProperty.h | 6 +- common/include/extraPropertyManager.h | 3 +- common/include/global.h | 1687 ----------------- common/include/structDataSource.h | 10 +- common/source/baseProperty.cpp | 2 +- common/source/structDataSource.cpp | 6 +- diagramCavas/CMakeLists.txt | 15 +- diagramCavas/include/baseContentDlg.h | 13 +- diagramCavas/include/baseDrawingPanel.h | 2 +- diagramCavas/include/baseInfoDlg.h | 4 +- diagramCavas/include/baseScene.h | 2 +- diagramCavas/include/bayInfoDlg.h | 9 +- diagramCavas/include/bayMeasureDlg.h | 5 +- diagramCavas/include/ctExtraInfoDlg.h | 6 +- diagramCavas/include/diagramCavas.h | 26 +- diagramCavas/include/diagramConnectSetting.h | 2 +- .../diagramEditor/diagramEditorBaseBlock.h | 3 +- .../diagramEditorBayDetailAddDlg.h | 4 +- .../diagramEditorBayDetailSettingDlg.h | 4 +- .../diagramEditorBayPreviewDlg.h | 2 +- .../diagramEditorBaySettingDlg.h | 2 +- .../diagramEditor/diagramEditorPreviewDlg.h | 2 +- .../diagramEditorStructContainer.h | 3 +- .../diagramEditorTransDetailAddDlg.h | 4 +- .../diagramEditorTransDetailSettingDlg.h | 4 +- .../diagramEditorTransSettingDlg.h | 2 +- .../diagramEditor/diagramEditorWizard.h | 4 +- .../include/diagramEditor/editBaseStruct.h | 3 +- .../include/diagramEditor/editItems.h | 3 +- .../include/diagramEditor/editPanel.h | 5 +- .../diagramEditor/wizardBayContentDlg.h | 3 +- diagramCavas/include/drawingPanel.h | 2 +- .../include/graphicsDataModel/baseModel.h | 3 +- .../graphicsDataModel/diagramEditorModel.h | 7 +- .../graphicsDataModel/fixedPortsModel.h | 46 +- .../include/graphicsItem/electricSvgGroup.h | 4 +- .../include/graphicsItem/electricSvgItem.h | 2 +- .../electricFunctionModelConnectLineItem.h | 95 + .../electricFunctionModelPortItem.h | 24 + .../electricFunctionModelSvgGroupCT.h | 26 + .../electricFunctionModelSvgGroupPT.h | 25 + .../electricFunctionModelSvgItem.h | 30 + ...lectricFunctionModelSvgItem2wTransformer.h | 20 + ...lectricFunctionModelSvgItem3wTransformer.h | 20 + .../electricFunctionModelSvgItemBus.h | 23 + .../electricFunctionModelSvgItemCB.h | 22 + .../electricFunctionModelSvgItemCT.h | 21 + .../electricFunctionModelSvgItemCableEnd.h | 20 + .../electricFunctionModelSvgItemCableTer.h | 20 + .../electricFunctionModelSvgItemDS.h | 19 + .../electricFunctionModelSvgItemDTEDS.h | 20 + .../electricFunctionModelSvgItemES.h | 19 + .../electricFunctionModelSvgItemFES.h | 19 + .../electricFunctionModelSvgItemLA.h | 20 + .../electricFunctionModelSvgItemPI.h | 20 + .../electricFunctionModelSvgItemPT.h | 21 + .../graphicsFunctionModelItem.h | 41 + .../graphicsFunctionModelSvgGroup.h | 32 + .../include/graphicsItem/graphicsBaseItem.h | 29 +- .../include/graphicsItem/itemControlHandle.h | 3 +- diagramCavas/include/itemPropertyDlg.h | 12 +- diagramCavas/include/measureSettingDlg.h | 8 +- diagramCavas/include/monitorAttributeDlg.h | 2 +- .../include/monitorAttributeGroupDlg.h | 6 +- diagramCavas/include/monitorConfigDlg.h | 4 +- .../include/monitorDisplaySettingDlg.h | 11 +- diagramCavas/include/monitorPanel.h | 14 +- .../include/monitorSelectedItemsDlg.h | 1 - diagramCavas/include/powerConnection.h | 3 +- diagramCavas/include/powerEntity.h | 2 +- diagramCavas/include/propertyContentDlg.h | 10 +- diagramCavas/include/ptExtraInfoDlg.h | 6 +- .../include/structDataMeasurementModel.h | 2 +- .../include/structDataPropertyModel.h | 6 +- diagramCavas/include/topologyManager.h | 3 +- diagramCavas/include/util/creatingSelector.h | 6 +- diagramCavas/include/util/editingSelector.h | 2 +- diagramCavas/include/util/selectorManager.h | 4 +- diagramCavas/source/baseDrawingPanel.cpp | 3 +- diagramCavas/source/baseInfoDlg.cpp | 14 +- diagramCavas/source/bayInfoDlg.cpp | 10 +- diagramCavas/source/bayMeasureDlg.cpp | 6 +- diagramCavas/source/ctExtraInfoDlg.cpp | 12 +- diagramCavas/source/dataSourceDlg.cpp | 2 +- diagramCavas/source/designerScene.cpp | 6 +- diagramCavas/source/diagramCavas.cpp | 16 +- .../diagramEditorBayDetailAddDlg.cpp | 1 - .../diagramEditorBayPreviewDlg.cpp | 5 +- .../diagramEditorBaySettingDlg.cpp | 4 +- .../diagramEditor/diagramEditorPreviewDlg.cpp | 1 - .../diagramEditorTransPreviewDlg.cpp | 5 +- .../diagramEditorTransSettingDlg.cpp | 5 +- .../diagramEditor/diagramEditorWizard.cpp | 26 +- .../source/diagramEditor/editPanel.cpp | 52 +- .../source/diagramEditor/editRowData.cpp | 2 +- .../diagramEditor/wizardBusTableDelegate.cpp | 2 +- diagramCavas/source/drawingPanel.cpp | 12 +- .../source/graphicsDataModel/baseModel.cpp | 2 +- .../graphicsDataModel/diagramEditorModel.cpp | 87 +- .../graphicsDataModel/fixedPortsModel.cpp | 75 +- .../source/graphicsItem/electricSvgGroup.cpp | 4 +- .../graphicsItem/electricSvgGroupCT.cpp | 4 +- .../graphicsItem/electricSvgGroupPT.cpp | 4 +- .../source/graphicsItem/electricSvgItem.cpp | 2 +- .../electricSvgItem2wTransformer.cpp | 2 +- .../electricSvgItem3wTransformer.cpp | 2 +- .../source/graphicsItem/electricSvgItemCT.cpp | 2 +- .../graphicsItem/electricSvgItemCableEnd.cpp | 2 +- .../graphicsItem/electricSvgItemCableTer.cpp | 2 +- .../source/graphicsItem/electricSvgItemDS.cpp | 2 +- .../graphicsItem/electricSvgItemDTEDS.cpp | 2 +- .../source/graphicsItem/electricSvgItemES.cpp | 2 +- .../graphicsItem/electricSvgItemFES.cpp | 2 +- .../source/graphicsItem/electricSvgItemLA.cpp | 2 +- .../source/graphicsItem/electricSvgItemPI.cpp | 2 +- .../source/graphicsItem/electricSvgItemPT.cpp | 2 +- .../graphicsItem/electricSvgItemRect.cpp | 4 +- .../electricFunctionModelConnectLineItem.cpp | 974 ++++++++++ .../electricFunctionModelPortItem.cpp | 65 + .../electricFunctionModelSvgGroup.cpp | 149 ++ .../electricFunctionModelSvgGroupCT.cpp | 115 ++ .../electricFunctionModelSvgGroupPT.cpp | 181 ++ .../electricFunctionModelSvgItem.cpp | 190 ++ ...ctricFunctionModelSvgItem2wTransformer.cpp | 68 + ...ctricFunctionModelSvgItem3wTransformer.cpp | 69 + .../electricFunctionModelSvgItemBus.cpp | 104 + .../electricFunctionModelSvgItemCB.cpp | 75 + .../electricFunctionModelSvgItemCT.cpp | 108 ++ .../electricFunctionModelSvgItemCableEnd.cpp | 69 + .../electricFunctionModelSvgItemCableTer.cpp | 68 + .../electricFunctionModelSvgItemDS.cpp | 69 + .../electricFunctionModelSvgItemDTEDS.cpp | 69 + .../electricFunctionModelSvgItemES.cpp | 70 + .../electricFunctionModelSvgItemFES.cpp | 68 + .../electricFunctionModelSvgItemLA.cpp | 69 + .../electricFunctionModelSvgItemPI.cpp | 70 + .../electricFunctionModelSvgItemPT.cpp | 68 + .../graphicsFunctionModelItem.cpp | 97 + .../source/graphicsItem/graphicsBaseItem.cpp | 26 +- .../source/graphicsItem/itemControlHandle.cpp | 1 + diagramCavas/source/instance/dataAccessor.cpp | 3 +- diagramCavas/source/itemPropertyDlg.cpp | 26 +- diagramCavas/source/loadMonitorPageDlg.cpp | 3 +- diagramCavas/source/measureSettingDlg.cpp | 8 +- diagramCavas/source/monitorAttributeDlg.cpp | 4 +- .../source/monitorAttributeGroupDlg.cpp | 6 +- diagramCavas/source/monitorConfigDlg.cpp | 4 +- .../source/monitorDetailAttributeDlg.cpp | 4 +- .../source/monitorDisplaySettingDlg.cpp | 18 +- diagramCavas/source/monitorPanel.cpp | 204 +- diagramCavas/source/projectIconSetting.cpp | 2 +- diagramCavas/source/projectModelSetting.cpp | 6 +- diagramCavas/source/propertyContentDlg.cpp | 72 +- diagramCavas/source/ptExtraInfoDlg.cpp | 12 +- .../source/structDataMeasurementModel.cpp | 3 +- diagramCavas/source/structDataPreviewDlg.cpp | 2 +- .../source/structDataPropertyModel.cpp | 9 +- diagramCavas/source/util/baseSelector.cpp | 6 +- .../source/util/connectingSelector.cpp | 2 +- diagramCavas/source/util/creatingSelector.cpp | 2 +- diagramCavas/source/util/movingSelector.cpp | 6 +- diagramCavas/source/util/selectorManager.cpp | 2 +- diagramUtils/CMakeLists.txt | 11 +- diagramUtils/include/componentIconManager.h | 3 +- diagramUtils/include/dataBase.h | 53 +- diagramUtils/include/dataManager.h | 9 +- diagramUtils/include/projectManager.h | 7 +- diagramUtils/include/projectModelManager.h | 7 +- diagramUtils/source/componentIconManager.cpp | 2 +- diagramUtils/source/dataBase.cpp | 140 +- diagramUtils/source/dataManager.cpp | 50 +- diagramUtils/source/projectManager.cpp | 8 +- diagramUtils/source/projectModelManager.cpp | 36 +- include/diagramView.h | 3 +- include/electricElementsBox.h | 10 +- include/electricElementsPanel.h | 9 +- include/graphicElementsPanel.h | 3 +- include/monitorItemsDlg.h | 12 +- include/monitorPagesDlg.h | 4 +- include/projectModelDlg.h | 6 +- include/selectorDialog.h | 3 +- include/topologyView.h | 13 +- source/diagramView.cpp | 2 +- source/electricElementsBox.cpp | 2 +- source/electricElementsPanel.cpp | 2 +- source/main.cpp | 3 +- source/mainwindow.cpp | 2 +- source/monitorItemsDlg.cpp | 12 +- source/projectModelDlg.cpp | 56 +- source/projectTableDelegate.cpp | 8 +- source/selectorDialog.cpp | 2 +- source/topologyTree.cpp | 2 +- source/topologyView.cpp | 10 +- 204 files changed, 5855 insertions(+), 2492 deletions(-) create mode 100644 common/backend/meta_model.h create mode 100644 common/backend/project_model.h create mode 100644 common/core_model/constants.h create mode 100644 common/core_model/data_transmission.h create mode 100644 common/core_model/diagram.h create mode 100644 common/core_model/topology.h rename common/{source/global.cpp => core_model/types.cpp} (95%) create mode 100644 common/core_model/types.h create mode 100644 common/frontend/graphics_items.h create mode 100644 common/frontend/monitor_item.h delete mode 100644 common/include/global.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelPortItem.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelItem.h create mode 100644 diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelPortItem.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.cpp create mode 100644 diagramCavas/source/graphicsItem/functionModelItem/graphicsFunctionModelItem.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 297e695..0c8a37d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ set(H_HEADER_FILES include/monitorPagesDlg.h include/baseDockWidget.h - common/include/global.h + #common/include/global.h common/include/tools.h common/include/httpInterface.h common/include/baseProperty.h @@ -71,6 +71,12 @@ set(H_HEADER_FILES common/include/operatingSystem.hpp common/include/structDataSource.h common/include/extraPropertyManager.h + + common/core_model/types.h + common/core_model/topology.h + common/core_model/diagram.h + common/backend/project_model.h + common/backend/meta_model.h ) set(CPP_SOURCE_FILES source/main.cpp @@ -95,11 +101,13 @@ set(CPP_SOURCE_FILES source/baseDockWidget.cpp common/source/httpInterface.cpp - common/source/global.cpp + #common/source/global.cpp common/source/tools.cpp common/source/baseProperty.cpp common/source/structDataSource.cpp common/source/extraPropertyManager.cpp + + common/core_model/types.cpp ) set(UI_FILES ui/mainwindow.ui @@ -147,6 +155,7 @@ include_directories(common/include) include_directories(${PostgreSQL_INCLUDE_DIRS}) target_include_directories(DiagramDesigner PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_include_directories(DiagramDesigner PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/common") target_include_directories(DiagramDesigner PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/PropertyEditor/source/include)") target_link_libraries(DiagramDesigner PUBLIC Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui diff --git a/common/backend/meta_model.h b/common/backend/meta_model.h new file mode 100644 index 0000000..1b2550f --- /dev/null +++ b/common/backend/meta_model.h @@ -0,0 +1,72 @@ +#ifndef META_MODEL_H +#define META_MODEL_H +/*********元模型********/ +#include +#include + +struct attributeGroup { + int id = 0; + QString groupType; + QString groupName; + int isPublic = -1; + QString remark; +}; + +struct dataType //数据类型(元模) +{ + int id = 0; + QString dataType; + QString databaseType; +}; + +struct modelType { + int id = 0; + QString modelType; + QString modelName; + int graphicElement; // 图形元素类型 + QByteArray icon; //图片 + QString remark; +}; + +struct modelGroup +{ + int id = 0; + qint64 modelTypeId = 0; + qint64 attributeGroupId = 0; +}; + +struct attribute { + int id = 0; + QString attribute; // 属性名 + QString attributeName; // 别名 + qint64 dataTypeId = 0; //数据类型id + int lengthPrecision = 0; //长度限制(varchar) + int scale = 0; //小数点位数 + int isNotNull = 0; //是否非空 + QString defaultValue; //默认值 + QString valueRange; //数值范围 + int isVisible = 1; +}; + +struct modelAttribute //模型属性表(所有模型属性的索引) +{ + int id = 0; + qint64 modelTypeId = 0; + qint64 attributeGroupId = 0; + qint64 attributeId = 0; +}; + +struct modelAttributePublic //公共属性表 +{ + int id = 0; + qint64 attributeGroupId = 0; + qint64 attributeId = 0; +}; + +struct modelConnectivity { //模型连接性表(元模是否可以连接) + int id = 0; + QString fromModel; //属性名 + QString toModel; + int connectivity = 0; //是否可连 +}; +#endif diff --git a/common/backend/project_model.h b/common/backend/project_model.h new file mode 100644 index 0000000..e0df632 --- /dev/null +++ b/common/backend/project_model.h @@ -0,0 +1,283 @@ +#ifndef PROJECT_MODEL_H +#define PROJECT_MODEL_H + +#include +#include +#include +#include +#include +#include "tools.h" + +struct ProjectManagerStruct { + int id = 0; + QString name; // 工程模表名 + QString tag; // 工程模名称 + QString metaModel; // 元模名 + QString groupName; // 属性组名 + int linkType; // 图元链接类型 + QJsonObject checkState; // 属性选择状态 +}; + +struct ProjectModelSettingStruct //工程模设定类,如图标 +{ + QString modelName; //工程模名 + QMap mapSvg; //存放选择的svg图片 + QMap mapUsedSvg; //存放使用的svg +}; + +struct PropertyState { + bool checkState = false; + QString dataType; + bool editable = true; +}; + +struct PropertyPage { + QMap checkState; + bool isPublic = false; +}; + +struct FormerName //曾用名,记录修改前名称 +{ + QString sName; + bool bChanged = false; //是否改变过 +}; + +typedef QMap MapProperty; + +struct PropertyModel { + MapProperty mapProperty; + int nType = 0; //工程模类型,选择图标后确定 + QStandardItemModel* pBase = nullptr; //基础属性 + QStandardItemModel* pSelect = nullptr; //已选择属性 + FormerName formerMeta; //曾用元模名 + FormerName formerProject; //曾用工程模名 + QMap dataInfo; //存放数据库内容 + ProjectModelSettingStruct modelSetting; + PropertyModel deepCopy() //深拷贝 + { + PropertyModel copy; + copy.mapProperty = mapProperty; + copy.nType = nType; + copy.pBase = deepCloneModel(pBase); + copy.pSelect = deepCloneModel(pSelect); + copy.formerMeta = formerMeta; + copy.formerProject = formerProject; + copy.dataInfo = dataInfo; + copy.modelSetting = modelSetting; + return copy; + } + void release() + { + delete pBase; + delete pSelect; + pBase = nullptr; + pSelect = nullptr; + } +}; + +typedef QMap MapProject; //str为工程名,PropertyModel为工程属性 +typedef QMap MapMeta; //str为元模名,PropertyModel为工程模集 + +struct PropertyStateInfo { + QString name; // 属性名 + QString tagName; // 别名 + QString type; // 属性类型 + QVariant defaultValue; // 默认值 + int lengthPrecision = 999; // 长度限制 + int isVisible = 1; // 是否可见(0不可见,1可见,2特殊项) + bool lock = false; // 值手动改变时置true,下次保存时恢复 +}; + +Q_DECLARE_METATYPE(PropertyStateInfo) + +// 属性值信息映射 +typedef QMap PropertyValueInfo; + +// 属性组状态信息 +struct GroupStateInfo { + QString groupName; // 组名 + QString tableName; // 表名 + bool isPublic = false; // 是否公共 + PropertyValueInfo info; // 属性信息 +}; + +// 属性组实时数据 +struct GroupStateValue { + QString groupName; // 组名 + QString tableName; // 表名 + QMap mapInfo; // 实时信息映射 +}; + +struct ModelStateInfo //模型结构信息 +{ + QString modelName; + int modelType; + QWidget* _PropertyDlg = NULL; //属性设置界面,每个模型维护一种界面 + QMap groupInfo; //属性组信息 + void release() + { + if(_PropertyDlg){ + delete _PropertyDlg; + _PropertyDlg = nullptr; + } + } +}; + +struct ModelDataInfo //模型数据信息 +{ + QString modelName; + int modelType; + QMap groupInfo; //属性组实时信息 +}; + +struct PropertyGroupState { + QString groupName; // 属性组名称 + QString tableName; // 属性组表名 + QJsonObject propertyState; // 属性状态信息 +}; + +struct MeasureAttributeType //量测可用属性类型(从基模获取的占位符变量) +{ + QString tag; + QString name; +}; + +// 属性内容信息 +struct PropertyContentInfo { + QString proTag; // 属性标签 + QString proName; // 属性名称 + QString proType; // 属性类型 + QWidget* proEditor = nullptr; // 编辑窗口对象 + + bool isValid() const { + return !proTag.isEmpty() && !proName.isEmpty(); + } +}; + +struct PtExtraInfo +{ + int index = 0; + QString scope; //变比标签 + QString accuracy; //精度等级标签 + QString volume; //二次负载容量标签 + QString star; //线圈接法 + double ratio; //变比 + int polarity = 1; //极性 +}; + +struct CtExtraInfo +{ + int index = 0; + QString scope; //变比标签 + QString accuracy; //精度等级标签 + QString volume; //二次负载容量标签 + double ratio; //变比 + int polarity = 1; //极性 +}; + +struct MeasurementInfo //量测 +{ + QString tag; //量测tag + QString name; //量测名称 + int type; //量测类型 0:遥测 1:遥信 2:遥控 + int size; //量测size + QUuid bayUuid; //所属间隔 + QUuid componentUuid; //所属设备 + + //通讯 + int nSource; //数据来源 1:cl3611 2:104 + QString sStation; //子站名称 + QString sDevice; //设备名称 + QString sChannel; //通道名(cl3611) 遥测:TMx(1-8); P; Q; S; PF; F; deltaF; UAB; UBC; UCA; 遥信: TSxx(01-10); 遥控: TCx; + int nPacket; //包号(104) + int nOffset; //偏移量(104) + //事件 + bool bEnable = false; //"enable"开启标志 + QMap mapTE; //遥测"cause" key:upup,up,down,downdown可选,val:0-100 + QString sEdge; //遥信"cause:edge" raising, falling 字符串单选 + QString sCommand; //"action:command" info, warning, error, critical, exception 字符串单选 + QStringList lstParameter; //"action:parameters" 字符串数组 + + QString sWindType; //绕组类型 ctpt + int nRatio; //变比 + int nPolarity; //极性 + int nIndex; //对应绕组序号 + + QString sSymmetry; //对称量测的name +}; + +// 定义比较键的结构 +struct MeasurementKey { + int nSource; + QString sStation; + QString sDevice; + QString sChannel; + int nPacket; + int nOffset; + + MeasurementKey(const MeasurementInfo& info) + : nSource(info.nSource) + , sStation(info.sStation) + , sDevice(info.sDevice) + , sChannel(info.sChannel) + , nPacket(info.nPacket) + , nOffset(info.nOffset) {} + + // 用于QMap排序 + bool operator<(const MeasurementKey& other) const { + if (nSource != other.nSource) return nSource < other.nSource; + if (sStation != other.sStation) return sStation < other.sStation; + if (sDevice != other.sDevice) return sDevice < other.sDevice; + if (sChannel != other.sChannel) return sChannel < other.sChannel; + if (nPacket != other.nPacket) return nPacket < other.nPacket; + return nOffset < other.nOffset; + } +}; + +struct ComponentInfo //工程模图元数据 +{ + QUuid uuid; + QString modelName; + QString nspath; + QString tag; + QString name; + QString description; + QString grid; + QString zone; + QString station; + int type = 0; + bool inService = true; + int state = 0; + QJsonObject connected_bus; + QJsonObject label; + QJsonObject context; + int op = 0; +}; + +struct ComponentTypeInfo //元件类型 +{ + int id = 0; + QString type; + QString name; + QJsonObject config; +}; + +struct PageInfo +{ + int id = -1; + QString tag; + QString name; + QJsonObject label; + QJsonObject context; + QString description; + int op; +}; + +// 页面中保存的项信息 +struct ItemPageInfo { + QPointF pos; + double dWidth = 0.0; + double dHeight = 0.0; + double dRotate = 0.0; +}; +#endif diff --git a/common/core_model/constants.h b/common/core_model/constants.h new file mode 100644 index 0000000..9f763fe --- /dev/null +++ b/common/core_model/constants.h @@ -0,0 +1,15 @@ +#ifndef CONSTANTS_H +#define CONSTANTS_H +/*********常量定义********/ +namespace Constants { +const double SCENE_WIDTH = 800; +const double SCENE_HEIGHT = 600; +const int EDITOR_ITEM_WIDTH = 150; +const int EDITOR_ITEM_HEIGHT = 80; +const int EDITOR_BUS_HEIGHT = 10; +const int V_DIAGRAM_SPACING = 80; +const int H_DIAGRAM_SPACING = 80; +const int TRANSFORMER_LEVEL = 999; // 层级结构中变压器所处层级 +} + +#endif diff --git a/common/core_model/data_transmission.h b/common/core_model/data_transmission.h new file mode 100644 index 0000000..c64da6f --- /dev/null +++ b/common/core_model/data_transmission.h @@ -0,0 +1,14 @@ +#ifndef DATA_TRANSMISSION_H +#define DATA_TRANSMISSION_H +/*********数据传输********/ +#include +#include + +/*******************传递的数据************************/ +struct HttpRecommandInfo{ //推荐数据服务 + QString sInput; //输入的前缀 + int nOffset = 0; //正确位置计数 + QStringList lstRecommand; //推荐列表 +}; + +#endif diff --git a/common/core_model/diagram.h b/common/core_model/diagram.h new file mode 100644 index 0000000..4c66a3e --- /dev/null +++ b/common/core_model/diagram.h @@ -0,0 +1,372 @@ +#ifndef DIAGRAM_H +#define DIAGRAM_H +/*********组态图********/ +#include +#include +#include +#include +#include +#include +#include + +// 组态图信息 +struct DiagramInfo { + QVariant id; //临时id使用uuid,load数据使用数据库自增id + QString sName; + QString sTag; + QVariant parentId; + QString sBasePageName; //父组态图名称 +}; + +struct DiagramEditorWizardBusInfo //组态编辑母线信息 +{ + int nIndex = 0; + double dVoltage = 0; //电压等级 + int nLineType = 1; //1单母线,2双母线 + int nNum1 = 0; //1母 + int nNum2 = 0; //2母 + int connectType = 0; //接线方式,1为分段连接 + int nState = 0; //母线状态位 0已保存1新建2修改 + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorWizardBusInfo &data) { + out << data.nIndex << data.dVoltage << data.nLineType << data.nNum1 << data.nNum2 << data.connectType << data.nState; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorWizardBusInfo &data) { + in >> data.nIndex >> data.dVoltage >> data.nLineType >> data.nNum1 >> data.nNum2 >> data.connectType >> data.nState; + return in; + } +}; + +enum class TransformerType //变压器类型 +{ + twoWinding = 0, //两绕组 + threeWinding //三绕组 +}; + +enum class BayType //间隔类型 +{ + busSectionBay = 0, //分段 + busCouplerBay, //母联 + ptBay, //pt + incomingBay, //进线 + outcomingBay, //出线 + compensationBay, //无功补偿 + bypassBay, //旁路 + mainTransformerBay //主变 +}; + +enum class EditorItemType //组态编辑中的图形项类型 +{ + bus = 1, //母线 + bay, //间隔 + trans, //变压器 + line, //连接线 + None //空白占位图 +}; + +struct EditorTransConnection //组态变压器连接信息 +{ + QString sName; + int nPara = 0; //012,高中低侧 +}; + +struct DiagramEditorWizardTransformerInfo //组态变压器信息 +{ + QString sName; + TransformerType nType; + double dVoltageLevel; + QList lstBindObj; //连接的对象 +}; + +struct DiagramEditorWizardBayInfo //组态间隔信息 +{ + QString sName; + BayType nType; + double dVoltageLevel; + QList lstBindObj; //连接的对象 +}; + +struct DiagramEditorComponentInfo //组态设备信息 +{ + int nCategory = 0; //分类 0电气设备1连接关系 + QString sName; + int nType = 0; //类型 1母线2异步电动机3断路器4电缆5电流互感器6电压互感器7隔离开关8接地开关9快速接地开关10双掷接地隔离开关11带电指示器12避雷器13电缆出线套筒14电缆端 + QString sBindObj; //所关联的实体名 (母线block,间隔block,变压器高中低端子) + int nBindType = 0; //关联实体的类型 1母线2间隔3变压器 + int nBindPara = 0; //关联额外参数,关联变压器时为(0高1中2低) + QString sBindParent; //关联父item名,关联变压器时为变压器名 + QStringList sUsedRoute; //使用设备的线路名 + int nUsedDirection = 0; //被占用的方向 8421 上下左右 + QPoint deltaPos = QPoint(0,0); //相对坐标(相对间隔) + QUuid uid; + int nFlag = 0; //标志0未使用1新建2修改 + int nRotate = 0; //旋转角 + + bool operator ==(const DiagramEditorComponentInfo& obj) const { + if(nCategory == obj.nCategory && sName == obj.sName && nType == obj.nType && sBindObj == obj.sBindObj && nBindType == obj.nBindType && + sUsedRoute == obj.sUsedRoute && nUsedDirection == obj.nUsedDirection && deltaPos == obj.deltaPos && uid == obj.uid && nFlag == obj.nFlag && nRotate == obj.nRotate) + return true; + else + return false; + } + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorComponentInfo &data) { + out << data.nCategory << data.sName << data.nType << data.sBindObj << data.nBindType << data.nBindPara << data.sBindParent << data.sUsedRoute << data.nUsedDirection << data.deltaPos << data.uid << data.nFlag << data.nRotate; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorComponentInfo &data) { + in >> data.nCategory >> data.sName >> data.nType >> data.sBindObj >> data.nBindType >> data.nBindPara >> data.sBindParent >> data.sUsedRoute >> data.nUsedDirection >> data.deltaPos >> data.uid >> data.nFlag >> data.nRotate; + return in; + } +}; + +inline uint qHash(const DiagramEditorComponentInfo &key, uint seed = 0) { + return qHash(key.uid, seed); +} + +struct DiagramEditorRouteInfo //间隔中单条线路信息 +{ + QString sRouteName; + bool bMainRoute = false; //主线路(包含设备最多的线路,决定整体布局) + QList lstCompo; + QList lstOrder; //线路顺序容器(计算用) + QList lstReverse; //逆序容器(计算用) + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorRouteInfo &data) { + out << data.sRouteName << data.bMainRoute << data.lstCompo << data.lstOrder << data.lstReverse; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorRouteInfo &data) { + in >> data.sRouteName >> data.bMainRoute >> data.lstCompo >> data.lstOrder >> data.lstReverse; + return in; + } +}; + +struct DiagramEditorBayInfo //组态编辑间隔信息 +{ + QString name; //间隔名 + int nLayout; //布局 0纵向1横向 + QList lstFrom; //起始 + QList lstTo; //结束 + QMap mapRoute; //线路信息 + QMap mapComponent; //设备信息 + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBayInfo &data) { + out << data.name << data.nLayout << data.lstFrom << data.lstTo << data.mapRoute << data.mapComponent; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorBayInfo &data) { + in >> data.name >> data.nLayout >> data.lstFrom >> data.lstTo >> data.mapRoute >> data.mapComponent; + return in; + } +}; + +struct DiagramEditorTransNeutralInfo //组态编辑变压器中性点信息 +{ + QString name; //中性点名 + int nType = 0; //中性点类型 0高1中2低 + QPointF delPoint; //相对变压器偏移量 + QMap mapRoute; //中性点对应的线路结构 + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorTransNeutralInfo &data) { + out << data.name << data.nType << data.delPoint << data.mapRoute; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorTransNeutralInfo &data) { + in >> data.name >> data.nType >> data.delPoint >> data.mapRoute; + return in; + } +}; + +struct DiagramEditorTransInfo //组态编辑变压器信息 +{ + QString name; //变压器名 + QMap mapNeutral; //中性点结构 + QMap mapComponent; //设备信息 + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorTransInfo &data) { + out << data.name << data.mapNeutral << data.mapComponent; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorTransInfo &data) { + in >> data.name >> data.mapNeutral >> data.mapComponent; + return in; + } +}; + +enum class DiagramEditorStructType +{ + block = 0, //模块(母线段、间隔、变压器) + blockContainer, //模块容器(包含若干模块) + rowData //行数据(包含若干容器) +}; + +struct DiagramEditorConnectType //组态编辑连接信息 +{ + QString sName; + int nType = 0; //1母线,2间隔,3变压器 + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorConnectType &data) { + out << data.sName << data.nType; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorConnectType &data) { + in >> data.sName >> data.nType; + return in; + } +}; + +struct DiagramEditorBriefConnect //组态编辑时连接信息 +{ + QUuid uid; + DiagramEditorConnectType con1; + DiagramEditorConnectType con2; + int nPara = 0; //万用参数(变压器中表示连接位置,0高压侧,1中压侧,2低压侧) + + bool operator==(const DiagramEditorBriefConnect& obj) + { + if(this == &obj) + return false; + if((con1.sName == obj.con1.sName && con2.sName == obj.con2.sName)||(con1.sName == obj.con2.sName && con2.sName == obj.con1.sName)) + return true; + else + return false; + } + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBriefConnect &data) { + out << data.uid << data.con1 << data.con2 << data.nPara; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorBriefConnect &data) { + in >> data.uid >> data.con1 >> data.con2 >> data.nPara; + return in; + } + + DiagramEditorConnectType getOpposite(const QString& s){ //获取另一端名称 + if(con1.sName == s) + return con2; + else if(con2.sName == s) + return con1; + return DiagramEditorConnectType(); + } +}; + +struct DiagramEditorBlockInfo //组态编辑block信息 +{ + QString sName; + QString sContainerId; //所属的容器id + int nType; //1母线,2间隔,3变压器 + int nContainerLevel; //所处容器的层级 0,1,2,3 + QUuid uid; + QList _lstCon; //连接信息 + QList> _lstSub; //子对象列表(非拓扑计算使用) 如母线子对象为间隔,间隔子对象为item,电动机子对象为item <类型,uid> 类型:0设备1间隔 + QRectF recSize; //当前大小(根据内容确定) + QPointF sceneDelta; //block中心相对位移(计算布局位置 + bool bEditState; //详细编辑状态 + + //bus + float fVoltage; //母线电压 + int nBusType; //0无前缀,1:Ⅰ母,2Ⅱ母 + int nIndex; //第几段,1A,2B,3C,4D,5E,6F,7G,8H + //bay + BayType nBayType; + DiagramEditorBayInfo bayInfo; //间隔信息 + //transformer + TransformerType nTransType; + DiagramEditorTransInfo transInfo; + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBlockInfo &data) { + out << data.sName << data.sContainerId << data.nType << data.nContainerLevel << data.uid << data._lstCon << data.recSize << data.sceneDelta + << data.bEditState << data.fVoltage << data.nBusType << data.nIndex << data.nBayType << data.bayInfo << data.nTransType << data.transInfo; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorBlockInfo &data) { + in >> data.sName >> data.sContainerId >> data.nType >> data.nContainerLevel >> data.uid >> data._lstCon >> data.recSize >> data.sceneDelta + >> data.bEditState >> data.fVoltage >> data.nBusType >> data.nIndex >> data.nBayType >> data.bayInfo >> data.nTransType >> data.transInfo; + return in; + } +}; + +struct DiagramEditorContainerInfo //组态编辑容器信息 +{ + QString sId; + double dMidUpY; //1母上边界 + double dMidDownY; //2母下边界 + double dStartX; //起始x + double dStartY; //起始y + double dWidth; //宽度 + double dHeight; + double dMaxUpH; //上方最大高度(1母线到上边界) + double dMaxDownH; //下方最大高度(2母线到下边界) + QMap> mapBlockInfo; + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorContainerInfo &data) { + out << data.sId << data.dMidUpY << data.dMidDownY << data.dStartX << data.dStartY << data.dWidth << data.dHeight << data.dMaxUpH << data.dMaxDownH << data.mapBlockInfo; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorContainerInfo &data) { + in >> data.sId >> data.dMidUpY >> data.dMidDownY >> data.dStartX >> data.dStartY >> data.dWidth >> data.dHeight >> data.dMaxUpH >> data.dMaxDownH >> data.mapBlockInfo; + return in; + } +}; + +struct DiagramEditorProjectInfo //editor工程信息 +{ + QString sName; + QUuid uid; + QMap mapBus; + QMap> mapSturctContainer; + QMap mapConnect; + + friend QDataStream &operator<<(QDataStream &out, const DiagramEditorProjectInfo &data) { + out << data.sName << data.uid << data.mapBus << data.mapSturctContainer << data.mapConnect; + return out; + } + friend QDataStream &operator>>(QDataStream &in, DiagramEditorProjectInfo &data) { + in >> data.sName >> data.uid >> data.mapBus >> data.mapSturctContainer >> data.mapConnect; + return in; + } +}; + +struct DiagramContent { + QString diagramId; // 对应的PowerEntity ID + + // 元素位置信息 <元素ID, 位置> + QHash elementPositions; + QHash> connectionPaths; // 自定义路径点 +}; + +struct BaseComponentInfo //基模图元数据 +{ + int id = 0; + QUuid uuid; + QString name; + QString tag; + int typeId = 0; + QJsonObject context; + QString metaMmodel; + QString projectModel; +}; + +struct EditorProjectInfo //editor工程数据 +{ + int id = 0; + QUuid uuid; + QString name; + QString tag; +}; + +struct EditorBaseSettingInfo //editor基础设置 +{ + int id = 0; + QUuid uuid; + QString projectName; //所属工程名 + QString autor; //作者 + QByteArray context; //内容 + QUuid generateUid; //生成的图uuid + QString ts; //时间戳 +}; + + +#endif // DIAGRAM_H diff --git a/common/core_model/topology.h b/common/core_model/topology.h new file mode 100644 index 0000000..dcdba36 --- /dev/null +++ b/common/core_model/topology.h @@ -0,0 +1,413 @@ +#ifndef TOPOLOGY_H +#define TOPOLOGY_H +/*********拓扑相关结构********/ +#include +#include +#include +#include +#include +#include + +// 数据状态 +enum class DataState { + Unchanged = 0, + Changed, + PrepareDelete +}; + +// 端口位置 +enum PortPos { + P_top = 0, + P_down, + P_left, + P_right +}; + +enum HandleType +{ + T_none = 0, + T_resize, //调整大小 + T_rotate, //旋转 + T_editShape, //编辑形状 + T_text, //文本 + T_lineIn, //入线口 + T_lineOut, //出线口 + T_lineInOut, //双端线 + T_newTral //中性点 +}; + +struct Connection +{ + QUuid nSrcNodeId; + QUuid nSrcPortId; + HandleType srcType; + PortPos srcPos; + QUuid nDestNodeId; + QUuid nDestPortId; + HandleType destType; + PortPos destPos; + + Connection() + { + srcType = T_none; + srcPos = P_top; + destType = T_none; + destPos = P_top; + nSrcNodeId = QUuid(); + nSrcPortId = QUuid(); + nDestNodeId = QUuid(); + nDestPortId = QUuid(); + } + + Connection(const Connection& obj) + { + nSrcNodeId = obj.nSrcNodeId; + nSrcPortId = obj.nSrcPortId; + srcType = obj.srcType; + srcPos = obj.srcPos; + nDestNodeId = obj.nDestNodeId; + nDestPortId = obj.nDestPortId; + destType = obj.destType; + destPos = obj.destPos; + } + + Connection(QUuid nSNI,QUuid nSPI,HandleType sT,PortPos sPOS,QUuid nDNI,QUuid nDPI,HandleType dT,PortPos dPOS) + { + nSrcNodeId = nSNI; + nSrcPortId = nSPI; + srcType = sT; + srcPos = sPOS; + nDestNodeId = nDNI; + nDestPortId = nDPI; + destType = dT; + destPos = dPOS; + } + bool operator==(const Connection& obj) + { + return ((nSrcNodeId == obj.nSrcNodeId)&&(nSrcPortId == obj.nSrcPortId)&&(srcType == obj.srcType)&&(nDestNodeId == obj.nDestNodeId)&&(nDestPortId == obj.nDestPortId)&&(destType == obj.destType)); + } + + Connection& operator=(const Connection& obj) + { + if(this == &obj) + return *this; + nSrcNodeId = obj.nSrcNodeId; + nSrcPortId = obj.nSrcPortId; + srcType = obj.srcType; + srcPos = obj.srcPos; + nDestNodeId = obj.nDestNodeId; + nDestPortId = obj.nDestPortId; + destType = obj.destType; + destPos = obj.destPos; + return *this; + } +}; + +// 拓扑连接信息 +struct TopologyInfo +{ + int id = -1; + QUuid uuid_from; + QUuid uuid_to; + QJsonObject context; + int flag; + QString description; + int op; +}; + +// 电网信息 +struct GridInfo +{ + int id = -1; + QString tagname; + QString name; + QString description; +}; + +// 区域信息 +struct ZoneInfo +{ + int id = -1; + int grid_id = -1; + QString tagname; + QString name; + QString description; +}; + +// 电站信息 +struct StationInfo +{ + int id = -1; + int zone_id = -1; + QString tagname; + QString name; + QString description; + bool is_local = true; +}; + +// 间隔信息 +struct BayInfo +{ + QUuid uuid; + QString name; + QString tag; + QString type; + double unom; + double fla; + double capacity; + QString description; + bool inService; + int nState; + QString grid; + QString zone; + QString station; + QJsonObject business; + QJsonObject fromUuid; + QJsonObject toUuid; + QJsonObject protect; + QJsonObject faultRec; + QJsonObject status; + QJsonObject dynSense; + QJsonObject instruct; + QJsonObject etc; + QJsonObject context; + QList components; +}; + +// 层级关系结构项 +struct HierarchyStructItem { + QString sVoltageLevel; + int nCategory; //类型 0设备1间隔 + int nEquipType; //设备类别 + QString sName; //名称 + QUuid uid; //id + QString grid; //电网 + QString zone; //区域 + QString station; //电站 + + QJsonObject toJson() const { + QJsonObject obj; + obj["sVoltageLevel"] = sVoltageLevel; + obj["nCategory"] = nCategory; + obj["nEquipType"] = nEquipType; + obj["sName"] = sName; + obj["uid"] = uid.toString(); + obj["grid"] = grid; + obj["zone"] = zone; + obj["station"] = station; + return obj; + } + + // 从JSON对象解析 + void fromJson(const QJsonObject& json) { + sVoltageLevel = json["sVoltageLevel"].toString(); + nCategory = json["nCategory"].toInt(); + nEquipType = json["nEquipType"].toInt(); + sName = json["sName"].toString(); + uid = QUuid::fromString(json["uid"].toString()); + grid = json["grid"].toString(); + zone = json["zone"].toString(); + station = json["station"].toString(); + } + + // 检查有效性 + bool isValid() const { + return !uid.isNull() && !sName.isEmpty(); + } + + // 重载相等运算符 + bool operator==(const HierarchyStructItem& other) const { + return uid == other.uid && + sName == other.sName && + nCategory == other.nCategory; + } +}; + +// 层级关系项 +struct HierarchyItem { + HierarchyStructItem parent; + HierarchyStructItem item; + QList 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) { + HierarchyStructItem sub; + sub.fromJson(subValue.toObject()); + subList.append(sub); + } + } + + // 检查有效性 + bool isValid() const { + return parent.isValid() && item.isValid(); + } + + // 添加子项 + void addSubItem(const HierarchyStructItem& 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; + } + + // 查找子项 + HierarchyStructItem* findSubItem(const QUuid& subUid) { + for (auto& sub : subList) { + if (sub.uid == subUid) { + return ⊂ + } + } + return nullptr; + } +}; + +//属性其他参数与层级关系 +struct ExtraProperty +{ + int id = 0; + QString code; // 唯一编码(拼接字符串) + QString tag; // 属性tag + QString name; // 显示名称 + QString connect_para; // 连接参数 + + // 层级名称 + QString grid_name; + QString zone_name; + QString station_name; + QString currentLevel; + QString bay_name; + QString component_name; + QString group_name; + QString type_name; + + //层级索引 + QString grid_tag; + QString zone_tag; + QString station_tag; + QString page_tag; + QString bay_tag; + QUuid component_uuid; + QString component_tag; + QString group_tag; + QString type_tag; + + // 数据源配置 + QString sourceType; // "property", "measurement" + QVariantMap sourceConfig; + + bool bDataChanged = false; //数据改变标志(临时) + // 获取完整路径 + QString getFullName() const { + QStringList parts = {grid_name, zone_name, station_name, currentLevel, bay_name, component_name, group_name, name}; + parts.removeAll(""); + return parts.join("."); + } + + //获取完整索引 + QString getFullTag() const { + QStringList parts = {grid_tag, zone_tag, station_tag, page_tag, currentLevel, bay_tag, component_uuid.toString(), group_tag, tag}; + parts.removeAll(""); + return parts.join("."); + } + + // 检查是否匹配过滤条件 + bool matches(const QVariantMap& filter,const QString& type) const { + for (auto it = filter.begin(); it != filter.end(); ++it) { + QString field = it.key(); + QString filterValue = it.value().toString(); + QString fieldValue; + if(type == "name"){ + fieldValue = getFieldName(field); + } + else if(type == "tag"){ + fieldValue = getFieldTag(field); + } + + if (!filterValue.isEmpty() && fieldValue != filterValue) { + return false; + } + } + return true; + } + + QString getFieldName(const QString& field) const { + if (field == "grid") return grid_name; + if (field == "zone") return zone_name; + if (field == "station") return station_name; + if (field == "currentLevel") return currentLevel; + if (field == "bay") return bay_name; + if (field == "component") return component_name; + if (field == "group") return group_name; + if (field == "property") return name; + return ""; + } + + QString getFieldTag(const QString& field) const { + if (field == "grid") return grid_tag; + if (field == "zone") return zone_tag; + if (field == "station") return station_tag; + if (field == "page") return page_tag; + if (field == "currentLevel") return currentLevel; + if (field == "bay") return bay_tag; + if (field == "component") return component_name; + if (field == "group") return component_uuid.toString(); + if (field == "tag") return name; + return ""; + } +}; + +struct ExtraPropertyLevelInfo { //层级关系item信息 + QString displayText; // 显示文本 + QString nameValue; // 名称值 + QString tagValue; // 标签值 + bool isRequired; // 是否必填 + QString placeholder; // 缺省占位符 +}; + +// 基础实体类型 +enum class EntityType { + Grid, + Zone, + Station, + ConfigurationDiagram, + Component +}; + +struct EntityInfo { + QString sName; + QString sUuid; + QString sParentId; + EntityType eType; +}; +#endif // TOPOLOGY_H diff --git a/common/source/global.cpp b/common/core_model/types.cpp similarity index 95% rename from common/source/global.cpp rename to common/core_model/types.cpp index 51322d0..3f53f31 100644 --- a/common/source/global.cpp +++ b/common/core_model/types.cpp @@ -1,4 +1,4 @@ -#include "global.h" +#include "types.h" const QMap linkType = { {AIT_motor,GIT_itemRect},{AIT_bus,GIT_bus}, diff --git a/common/core_model/types.h b/common/core_model/types.h new file mode 100644 index 0000000..a986511 --- /dev/null +++ b/common/core_model/types.h @@ -0,0 +1,172 @@ +#ifndef TYPES_H +#define TYPES_H +/*********枚举类型********/ +#include +#include +#include + +// 图形项类型 +enum GraphicsItemType +{ + GIT_base = QGraphicsItem::UserType + 1, + GIT_line = QGraphicsItem::UserType + 2, + GIT_rect = QGraphicsItem::UserType + 3, + GIT_roundRect = QGraphicsItem::UserType + 4, + GIT_ellipse = QGraphicsItem::UserType + 5, + GIT_polygon = QGraphicsItem::UserType + 6, + //====================================== + GIT_bus = QGraphicsItem::UserType + 50, + GIT_itemRect = QGraphicsItem::UserType + 51, + GIT_itemTri = QGraphicsItem::UserType + 52, + GIT_link= QGraphicsItem::UserType + 53, + GIT_ctItem= QGraphicsItem::UserType + 54, + GIT_ctGroup= QGraphicsItem::UserType + 55, + GIT_ptItem= QGraphicsItem::UserType + 56, + GIT_ptGroup= QGraphicsItem::UserType + 57, + GIT_ES= QGraphicsItem::UserType + 58, + GIT_DS= QGraphicsItem::UserType + 59, + GIT_FES= QGraphicsItem::UserType + 60, + GIT_DTEDS= QGraphicsItem::UserType + 61, + GIT_PI= QGraphicsItem::UserType + 62, + GIT_LA= QGraphicsItem::UserType + 63, + GIT_cableTer= QGraphicsItem::UserType + 64, + GIT_cableEnd= QGraphicsItem::UserType + 65, + GIT_2wTransformer= QGraphicsItem::UserType + 66, + GIT_3wTransformer= QGraphicsItem::UserType + 67, + GIT_node= QGraphicsItem::UserType + 79, + GIT_bay= QGraphicsItem::UserType + 80, //间隔 + //====================================== + GIT_baseNode = QGraphicsItem::UserType + 199, + GIT_baseBus = QGraphicsItem::UserType + 200, + GIT_baseLine = QGraphicsItem::UserType + 201, + GIT_baseBreaker = QGraphicsItem::UserType + 202, + GIT_baseCT = QGraphicsItem::UserType + 203, + GIT_basePT = QGraphicsItem::UserType + 204, + GIT_baseDS = QGraphicsItem::UserType + 205, //隔离开关 + GIT_baseES = QGraphicsItem::UserType + 206, //接地开关 + GIT_baseFES = QGraphicsItem::UserType + 207, //快速接地 + GIT_baseDTEDS = QGraphicsItem::UserType + 208, //双掷接地隔离开关 + GIT_basePI = QGraphicsItem::UserType + 209, //带电指示器 + GIT_baseLightningArrester = QGraphicsItem::UserType + 210, //避雷器 + GIT_baseCableTer = QGraphicsItem::UserType + 211, //电缆出线套筒 + GIT_baseCableEnd = QGraphicsItem::UserType + 212, + GIT_base2wTransformer = QGraphicsItem::UserType + 213, //两绕阻变压器 + GIT_base3wTransformer = QGraphicsItem::UserType + 214, //三绕组变压器 +}; + +enum AttributeField //元模属性字段对照 +{ + Id = Qt::UserRole + 1, + Attribute = Qt::UserRole + 2, + AttributeName = Qt::UserRole + 3, + DataType = Qt::UserRole + 4, + LengthPrecision = Qt::UserRole + 5, + Scale = Qt::UserRole + 6, + IsNotNull = Qt::UserRole + 7, + DefaultValue = Qt::UserRole + 8, + ValueRange = Qt::UserRole + 9, + IsVisible = Qt::UserRole + 10 +}; + +// 抽象项类型 +enum AbstractItemType { + AIT_motor = 1, + AIT_bus +}; + +// 模型功能类型 +enum class ModelFunctionType { + ProjectModel = 0, + BaseModel, + EditorModel, + BlockEditorModel, + RuntimeModel +}; + +// 组态图模式 +enum DiagramMode { + DM_edit = 0, + DM_run, + DM_academic, + DM_baseModel +}; + +//端口类型 +enum PortState +{ + P_const = 0, //固定端口 + p_movable, //移动端口 +}; + +// 项目状态 +enum ProjectState { + Error = -1, // 错误 + NotExist = 0, // 不存在 + Exist, // 已存在 + Changed // 已改变 +}; + +// 表单项状态 +enum TableItemState { + TS_Create = 1, // 创建 + TS_Select = 2, // 选择 + TS_Edit = 4 // 编辑 +}; + +// 警告提示信息 +enum class AlertInfo { + Success = 1, // 成功 + Fail = 2, // 失败 + Exist = 4 // 已存在 +}; + +// 选择对话框类型 +enum SelectorDialogType { + ST_MetaModel = 0, // 元模对话框 + ST_ComponentType // 元件选择 +}; + +// 表格代理内容 +enum TableDelegateContent { + TD_ProjectModel = 0, // 工程模 + TD_MetaModel, // 基模 + TD_ComponentType // 元件类型 +}; + +// 变种图标 +enum VariantIcon { + VI_Thumbnail = 0, // 缩略图 + VI_Normal_1, // 常规1 + VI_Normal_2, // 常规2 + VI_Normal_3, // 常规3 + VI_Normal_4, // 常规4 + VI_Normal_5 // 常规5 +}; + +// 组件类型枚举 +enum class ComponentCategory { + ElectricalEquipment = 0, // 电气设备 + ConnectionRelation = 1 // 连接关系 +}; + +enum class ComponentType { + Bus = 1, // 母线 + AsynchronousMotor = 2, // 异步电动机 + CircuitBreaker = 3, // 断路器 + Cable = 4, // 电缆 + CurrentTransformer = 5, // 电流互感器 + VoltageTransformer = 6, // 电压互感器 + Disconnector = 7, // 隔离开关 + EarthingSwitch = 8, // 接地开关 + FastEarthingSwitch = 9, // 快速接地开关 + DoubleThrowEarthingSwitch = 10, // 双掷接地隔离开关 + VoltageIndicator = 11, // 带电指示器 + LightningArrester = 12, // 避雷器 + CableTerminal = 13, // 电缆出线套筒 + CableEnd = 14 // 电缆端 +}; + +extern const QMap linkType; +//类型转换 +extern const QMap typeToProGraphic; +#endif diff --git a/common/frontend/graphics_items.h b/common/frontend/graphics_items.h new file mode 100644 index 0000000..5a9a7a1 --- /dev/null +++ b/common/frontend/graphics_items.h @@ -0,0 +1,28 @@ +#ifndef GRAPHICS_ITEMS_H +#define GRAPHICS_ITEMS_H +/*********图元********/ +#include + +// 句柄标签 +enum HandleTag { + H_none = 0, + H_leftTop, + H_top, + H_rightTop, + H_right, + H_rightBottom, + H_bottom, + H_leftBottom, + H_left, + H_rotate_leftTop, + H_rotate_rightTop, + H_rotate_rightBottom, + H_rotate_leftBottom, + H_edit, + H_textCaption = 40, // 标题文本 + H_textCurrent, // 电流 + H_textVoltage, // 电压 + H_connect = 50 // 连接操作点 +}; + +#endif diff --git a/common/frontend/monitor_item.h b/common/frontend/monitor_item.h new file mode 100644 index 0000000..7ac3fc6 --- /dev/null +++ b/common/frontend/monitor_item.h @@ -0,0 +1,236 @@ +#ifndef MONITOR_ITEM_H +#define MONITOR_ITEM_H +/*********人机界面********/ +#include +#include +#include + +enum class MonitorItemState { //监控item的状态 + Normal = 0, //正常 + Closing, //合闸 + Opening, //分闸 + AccidentTrip, //事故跳闸 + StatusFault, //状态故障 + Energized, //带电 + DeEnergized, //失电 + Grounding, //接地 + Running, //运行 + ShutDown, //停运 + Alarm, //告警 + LineBreak, //断线 + MeasureMentOutLimit //量测越限 +}; + +struct MonitorItemAttributeInfo //单个监控item属性 +{ + QString sGroup; //所属组别 + QString sTag; //索引名 + QString sName; //显示名 + int nConnectType = 0; //关联数据类别 0字段 1量测 + QString sConnectPara; //查询参数(参数服务使用) + int nShowType = 0; //显示类别 0字符 1图表 + bool bShowDiagram = false; //显示到组态中 + int nGraphType = 0; //图表类型 0折线1柱状 + QString sTimeRange; //时间范围(分) + QMap mapValue; //属性值 + 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"] = mapToJson(mapValue); + 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(); + mapValue = jsonToMap(json["sValue"].toObject()); + 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; + } + + QJsonObject mapToJson(const QMap& map) const{ + QJsonObject jsonObj; + + for (auto it = map.constBegin(); it != map.constEnd(); ++it) { + // 将quint64的key转换为QString + QString key = QString::number(it.key()); + jsonObj[key] = it.value(); + } + + return jsonObj; + } + + // 从JSON转换回来 + QMap jsonToMap(const QJsonObject& jsonObj) const{ + QMap map; + + for (auto it = jsonObj.constBegin(); it != jsonObj.constEnd(); ++it) { + bool ok; + quint64 key = it.key().toULongLong(&ok); + if (ok) { + double value = it.value().toDouble(); + map[key] = value; + } + } + + return map; + } +}; + +struct MonitorItemTypeStruct //监控设备类型 +{ + QString sTag; + QString sName; + + bool isValid() const { + return !sTag.isEmpty() && !sName.isEmpty(); + } + + bool operator==(const MonitorItemTypeStruct& other) const { + return sTag == other.sTag && sName == other.sName; + } + + bool operator<(const MonitorItemTypeStruct& other) const { + 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 //监控设备状态 +{ + QString sState; + MonitorItemState eState; + + bool isValid() const { + return !sState.isEmpty(); + } + + bool operator==(const MonitorItemStateStruct& other) const { + return sState == other.sState && eState == other.eState; + } + + bool operator<(const MonitorItemStateStruct& other) const { + return sState < other.sState || (sState == other.sState && eState < other.eState); + } + + // 转换为JSON对象 - 成员函数 + QJsonObject toJson() const { + QJsonObject obj; + obj["sState"] = sState; + obj["eState"] = static_cast(eState); + return obj; + } + + // 从JSON对象解析 - 成员函数 + void fromJson(const QJsonObject& json) { + sState = json["sState"].toString(); + eState = static_cast(json["eState"].toInt()); + } +}; + +struct ModelTypeInfo{ //类型临时信息 + int nType; + QString sType; + QString sName; + QString sMeta; //该类型元模名 + QString sModel; //该类型工程模名 +}; + +struct MonitorPageInfo //运行时page +{ + int id = -1; + QUuid uid; + QString tag; + QString name; + QString parent; + QJsonObject context; + QString ts; +}; + +struct MonitorItemDisplayInfo //监控模式显示信息 +{ + int nItemType; //设备类型 + QString sStateName; //状态名 + bool bEnable = false; + QString sColor; + QByteArray bytPicture; //存储二进制数据 + int nWidth; + int nHeight; + QString sMeta; //元模型名 + 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(); + } +}; +#endif diff --git a/common/include/baseProperty.h b/common/include/baseProperty.h index ee09eb5..695be24 100644 --- a/common/include/baseProperty.h +++ b/common/include/baseProperty.h @@ -3,7 +3,9 @@ #include #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" +#include "common/core_model/topology.h" class AbstractProperty:public QObject //抽象属性类 { @@ -217,6 +219,6 @@ public: VariableProperty(QObject* parent = nullptr); ~VariableProperty(); - modelDataInfo& getPropertyValue() const; + ModelDataInfo& getPropertyValue() const; }; #endif // DATABASE_H diff --git a/common/include/extraPropertyManager.h b/common/include/extraPropertyManager.h index 03a504c..b0ce816 100644 --- a/common/include/extraPropertyManager.h +++ b/common/include/extraPropertyManager.h @@ -3,7 +3,8 @@ #include #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/topology.h" /** * 属性层级信息管理 diff --git a/common/include/global.h b/common/include/global.h deleted file mode 100644 index 0feb7b6..0000000 --- a/common/include/global.h +++ /dev/null @@ -1,1687 +0,0 @@ -#ifndef GLOBAL_H -#define GLOBAL_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "tools.h" - -const double g_dGriaphicsScene_Width = 800; -const double g_dGriaphicsScene_Height = 600; - -const int g_dEditorItem_Width = 150; -const int g_dEditorItem_Height = 80; - -const int g_nEditorBus_Height = 10; - -const int g_nVDiagramSpacing = 80; -const int g_nHDiagramSpacing = 80; - -//Q_NAMESPACE -enum GraphicsItemType -{ - GIT_base = QGraphicsItem::UserType + 1, - GIT_line = QGraphicsItem::UserType + 2, - GIT_rect = QGraphicsItem::UserType + 3, - GIT_roundRect = QGraphicsItem::UserType + 4, - GIT_ellipse = QGraphicsItem::UserType + 5, - GIT_polygon = QGraphicsItem::UserType + 6, - //====================================== - GIT_bus = QGraphicsItem::UserType + 50, - GIT_itemRect = QGraphicsItem::UserType + 51, - GIT_itemTri = QGraphicsItem::UserType + 52, - GIT_link= QGraphicsItem::UserType + 53, - GIT_ctItem= QGraphicsItem::UserType + 54, - GIT_ctGroup= QGraphicsItem::UserType + 55, - GIT_ptItem= QGraphicsItem::UserType + 56, - GIT_ptGroup= QGraphicsItem::UserType + 57, - GIT_ES= QGraphicsItem::UserType + 58, - GIT_DS= QGraphicsItem::UserType + 59, - GIT_FES= QGraphicsItem::UserType + 60, - GIT_DTEDS= QGraphicsItem::UserType + 61, - GIT_PI= QGraphicsItem::UserType + 62, - GIT_LA= QGraphicsItem::UserType + 63, - GIT_cableTer= QGraphicsItem::UserType + 64, - GIT_cableEnd= QGraphicsItem::UserType + 65, - GIT_2wTransformer= QGraphicsItem::UserType + 66, - GIT_3wTransformer= QGraphicsItem::UserType + 67, - GIT_node= QGraphicsItem::UserType + 79, - GIT_bay= QGraphicsItem::UserType + 80, //间隔 - //====================================== - GIT_baseNode = QGraphicsItem::UserType + 199, - GIT_baseBus = QGraphicsItem::UserType + 200, - GIT_baseLine = QGraphicsItem::UserType + 201, - GIT_baseBreaker = QGraphicsItem::UserType + 202, - GIT_baseCT = QGraphicsItem::UserType + 203, - GIT_basePT = QGraphicsItem::UserType + 204, - GIT_baseDS = QGraphicsItem::UserType + 205, //隔离开关 - GIT_baseES = QGraphicsItem::UserType + 206, //接地开关 - GIT_baseFES = QGraphicsItem::UserType + 207, //快速接地 - GIT_baseDTEDS = QGraphicsItem::UserType + 208, //双掷接地隔离开关 - GIT_basePI = QGraphicsItem::UserType + 209, //带电指示器 - GIT_baseLightningArrester = QGraphicsItem::UserType + 210, //避雷器 - GIT_baseCableTer = QGraphicsItem::UserType + 211, //电缆出线套筒 - GIT_baseCableEnd = QGraphicsItem::UserType + 212, - GIT_base2wTransformer = QGraphicsItem::UserType + 213, //两绕阻变压器 - GIT_base3wTransformer = QGraphicsItem::UserType + 214, //三绕组变压器 -}; - -enum AbstractItemType //工程模关联的对象类型 -{ - AIT_motor = 1, - AIT_bus -}; - -enum class ModelFunctionType //模型函数的类型 -{ - ProjectModel = 0, - BaseModel, - EditorModel, - BlockEditorModel, //模块划分时的连接关系 - RuntimeModel //运行时 -}; - - -extern const QMap linkType; -//类型转换 -extern const QMap typeToProGraphic; - -enum DiagramMode //组态图模式 -{ - DM_edit = 0, - DM_run, - DM_academic, - DM_baseModel -}; - -enum VariantIcon //变种图 -{ - VI_thumbnail = 0, - VI_normal_1, - VI_normal_2, - VI_normal_3, - VI_normal_4, - VI_normal_5 -}; - -enum Attribute //元模属性字段对照 -{ - Id = Qt::UserRole + 1, - Attribute = Qt::UserRole + 2, - AttributeName = Qt::UserRole + 3, - DataType = Qt::UserRole + 4, - LengthPrecision = Qt::UserRole + 5, - Scale = Qt::UserRole + 6, - IsNotNull = Qt::UserRole + 7, - DefaultValue = Qt::UserRole + 8, - ValueRange = Qt::UserRole + 9, - IsVisible = Qt::UserRole + 10 -}; - -enum TableDelegateContent //代理内容 -{ - TD_ProjectModel = 0, //工程模 - TD_MetaModel, //基模 - TD_ComponentType //元件类型 -}; - -enum SelectorDialogType //选择dialog类型 -{ - ST_MetaModel = 0, //元模对话框 - ST_ComponentType //元件选择 -}; - -enum TableItemState //工程模table操作的对象状态 -{ - TS_create = 1, - TS_select = 2, - TS_edit = 4 -}; - -enum class AlertInfo //警告提示信息 -{ - success = 1, - fail = 2, - exist = 4 -}; - -struct attributeGroup //属性组(元模) -{ - int id = 0; - QString groupType; - QString groupName; - int ispublic = -1; - QString remark; -}; - -struct dataType //数据类型(元模) -{ - int id = 0; - QString dataType; - QString databaseType; -}; - -struct modelType //模型类型 -{ - int id = 0; - QString modelType; - QString modelName; - int graphicEelement; //类型 - QByteArray icon; //图片 - QString remark; -}; - -struct modelGroup -{ - int id = 0; - qint64 modelTypeId = 0; - qint64 attributeGroupId = 0; -}; - -struct attribute //属性表(元模属性字段) -{ - int id = 0; - QString attribute; //属性名 - QString attributeName; //别名(中文名) - qint64 dataTypeId = 0; //数据类型id - int lengthPrecision=0; //长度限制(varchar) - int scale=0; //小数点位数 - int isNotNull=0; //是否非空 - QString defaultValue; //默认值 - QString valueRange; //数值范围 - int isVisible = 1; -}; - -struct modelAttribute //模型属性表(所有模型属性的索引) -{ - int id = 0; - qint64 modelTypeId = 0; - qint64 attributeGroupId = 0; - qint64 attributeId = 0; -}; - -struct modelAttributePublic //公共属性表 -{ - int id = 0; - qint64 attributeGroupId = 0; - qint64 attributeId = 0; -}; - -struct modelConnectivity //模型连接性表(元模是否可以连接) -{ - int id = 0; - QString fromModel; //属性名 - QString toModel; - int connectivity=0; //是否可连 -}; - -//===================================== -struct projectManager //工程模管理类 -{ - int id = 0; - QString name; //工程模表名 - QString tag; //工程模名称 - QString metaModel; //元模名 - QString groupName; //属性组名 - int linkType; //图元链接类型 - QJsonObject checkState; //属性选择状态 -}; - -struct projectModelSetting //工程模设定类,如图标 -{ - QString modelName; //工程模名 - QMap mapSvg; //存放选择的svg图片 - QMap mapUsedSvg; //存放使用的svg -}; - -/*struct baseModelSelectManger -{ - int id = 0; - QUuid componentId; - QString componentTag; - int pageId; - int version; - QJsonObject checkState; -};*/ - -enum projectState -{ - Err = -1, - NotExist = 0, - Exist, - Changed -}; - -struct FormerName //曾用名,记录修改前名称 -{ - QString sName; - bool bChanged = false; //是否改变过 -}; - -struct PropertyState //每个属性的状态 -{ - bool checkState = false; - QString dataType; - bool editable = true; //可勾选状态 -}; - -struct PropertyPage //属性信息 -{ - QMap mCheckState; //属性选择状态 - bool isPublic = false; -}; - -typedef QMap MapProperty; //属性组 -struct PropertyModel //工程模 -{ - MapProperty mapProperty; - int nType = 0; //工程模类型,选择图标后确定 - QStandardItemModel* pBase = nullptr; //基础属性 - QStandardItemModel* pSelect = nullptr; //已选择属性 - FormerName formerMeta; //曾用元模名 - FormerName formerProject; //曾用工程模名 - QMap dataInfo; //存放数据库内容 - projectModelSetting modelSetting; - PropertyModel deepCopy() //深拷贝 - { - PropertyModel copy; - copy.mapProperty = mapProperty; - copy.nType = nType; - copy.pBase = deepCloneModel(pBase); - copy.pSelect = deepCloneModel(pSelect); - copy.formerMeta = formerMeta; - copy.formerProject = formerProject; - copy.dataInfo = dataInfo; - copy.modelSetting = modelSetting; - return copy; - } - void release() - { - delete pBase; - delete pSelect; - pBase = nullptr; - pSelect = nullptr; - } -}; -typedef QMap MapProject; //str为工程名,PropertyModel为工程属性 -typedef QMap MapMeta; //str为元模名,PropertyModel为工程模集 - -//===================================== -struct propertyGroupState //模型属性组信息 -{ - QString groupName; //属性组名称 - QString tableName; //属性组表名 - QJsonObject propertyState; //属性状态信息 -}; - -//================工程模使用====================== - -struct propertyStateInfo //属性 -{ - QString name; //属性名 - QString tagName; //别名 - QString type; //属性类型 - QVariant defaultValue; //默认值 - int lengthPrecision = 999; //长度限制 - int isVisibe = 1; //是否可见(0:不可见,1:可见,2:特殊项) - bool lock = false; //值手动改变时置true,下次保存时恢复 -}; - -Q_DECLARE_METATYPE(propertyStateInfo); - -typedef QMap PropertyValueInfo; - -struct groupStateInfo //属性组(结构信息) -{ - QString groupName; //组名 - QString tableName; //表名 - bool isPublic = false;; - PropertyValueInfo info; //属性信息 -}; - -struct groupStateValue //属性组(实时数据) -{ - QString groupName; //组名 - QString tableName; //表名 - QMap mapInfo; -}; - -struct modelStateInfo //模型结构信息 -{ - QString modelName; - int modelType; - QWidget* _PropertyDlg = NULL; //属性设置界面,每个模型维护一种界面 - QMap groupInfo; //属性组信息 - void release() - { - if(_PropertyDlg) - delete _PropertyDlg; - } -}; - -struct modelDataInfo //模型数据信息 -{ - QString modelName; - int modelType; - QMap groupInfo; //属性组实时信息 -}; - -struct propertyContentInfo //单个属性结构 -{ - QString proTag; - QString proName; //名称 - QString proType; //类型 - QWidget* proEditer = NULL; //编辑窗口对象 -}; - -struct measureAttributeType //量测可用属性类型(从基模获取的占位符变量) -{ - QString tag; - QString name; -}; -//==================组态拓扑结构====================== -enum class DataState -{ - unchanged = 0, - changed, - prepareDelete -}; -/*struct diagramInfo -{ - QString name; - QString uuid; - QMap childMap; -}; - -struct stationInfo -{ - QString stationName; - QString uuid; - QMap diagramMap; -}; - -struct zoneInfo -{ - QString zoneName; - QString uuid; - QMap stationMap; -}; - -struct gridInfo //grid -{ - QString gridName; - QString uuid; - QMap zoneMap; -};*/ -//===================组态编辑器使用================ -const int g_transformerLevel = 999; //层级结构中变压器所处层级 - -struct DiagramEditorWizardBusInfo //组态编辑母线信息 -{ - int nIndex = 0; - double dVoltage = 0; //电压等级 - int nLineType = 1; //1单母线,2双母线 - int nNum1 = 0; //1母 - int nNum2 = 0; //2母 - int connectType = 0; //接线方式,1为分段连接 - int nState = 0; //母线状态位 0已保存1新建2修改 - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorWizardBusInfo &data) { - out << data.nIndex << data.dVoltage << data.nLineType << data.nNum1 << data.nNum2 << data.connectType << data.nState; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorWizardBusInfo &data) { - in >> data.nIndex >> data.dVoltage >> data.nLineType >> data.nNum1 >> data.nNum2 >> data.connectType >> data.nState; - return in; - } -}; - -enum class TransformerType //变压器类型 -{ - twoWinding = 0, //两绕组 - threeWinding //三绕组 -}; - -enum class BayType //间隔类型 -{ - busSectionBay = 0, //分段 - busCouplerBay, //母联 - ptBay, //pt - incomingBay, //进线 - outcomingBay, //出线 - compensationBay, //无功补偿 - bypassBay, //旁路 - mainTransformerBay //主变 -}; - -enum class EditorItemType //组态编辑中的图形项类型 -{ - bus = 1, //母线 - bay, //间隔 - trans, //变压器 - line, //连接线 - none //空白占位图 -}; - -struct EditorTransConnection //组态变压器连接信息 -{ - QString sName; - int nPara = 0; //012,高中低侧 -}; - -struct DiagramEditorWizardTransformerInfo //组态变压器信息 -{ - QString sName; - TransformerType nType; - double dVoltageLevel; - QList lstBindObj; //连接的对象 -}; - -struct DiagramEditorWizardBayInfo //组态间隔信息 -{ - QString sName; - BayType nType; - double dVoltageLevel; - QList lstBindObj; //连接的对象 -}; - -struct DiagramEditorComponentInfo //组态设备信息 -{ - int nCategory = 0; //分类 0电气设备1连接关系 - QString sName; - int nType = 0; //类型 1母线2异步电动机3断路器4电缆5电流互感器6电压互感器7隔离开关8接地开关9快速接地开关10双掷接地隔离开关11带电指示器12避雷器13电缆出线套筒14电缆端 - QString sBindObj; //所关联的实体名 (母线block,间隔block,变压器高中低端子) - int nBindType = 0; //关联实体的类型 1母线2间隔3变压器 - int nBindPara = 0; //关联额外参数,关联变压器时为(0高1中2低) - QString sBindParent; //关联父item名,关联变压器时为变压器名 - QStringList sUsedRoute; //使用设备的线路名 - int nUsedDirection = 0; //被占用的方向 8421 上下左右 - QPoint deltaPos = QPoint(0,0); //相对坐标(相对间隔) - QUuid uid; - int nFlag = 0; //标志0未使用1新建2修改 - int nRotate = 0; //旋转角 - - bool operator ==(const DiagramEditorComponentInfo& obj) const { - if(nCategory == obj.nCategory && sName == obj.sName && nType == obj.nType && sBindObj == obj.sBindObj && nBindType == obj.nBindType && - sUsedRoute == obj.sUsedRoute && nUsedDirection == obj.nUsedDirection && deltaPos == obj.deltaPos && uid == obj.uid && nFlag == obj.nFlag && nRotate == obj.nRotate) - return true; - else - return false; - } - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorComponentInfo &data) { - out << data.nCategory << data.sName << data.nType << data.sBindObj << data.nBindType << data.nBindPara << data.sBindParent << data.sUsedRoute << data.nUsedDirection << data.deltaPos << data.uid << data.nFlag << data.nRotate; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorComponentInfo &data) { - in >> data.nCategory >> data.sName >> data.nType >> data.sBindObj >> data.nBindType >> data.nBindPara >> data.sBindParent >> data.sUsedRoute >> data.nUsedDirection >> data.deltaPos >> data.uid >> data.nFlag >> data.nRotate; - return in; - } -}; - -inline uint qHash(const DiagramEditorComponentInfo &key, uint seed = 0) { - return qHash(key.uid, seed); -} - -struct DiagramEditorRouteInfo //间隔中单条线路信息 -{ - QString sRouteName; - bool bMainRoute = false; //主线路(包含设备最多的线路,决定整体布局) - QList lstCompo; - QList lstOrder; //线路顺序容器(计算用) - QList lstReverse; //逆序容器(计算用) - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorRouteInfo &data) { - out << data.sRouteName << data.bMainRoute << data.lstCompo << data.lstOrder << data.lstReverse; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorRouteInfo &data) { - in >> data.sRouteName >> data.bMainRoute >> data.lstCompo >> data.lstOrder >> data.lstReverse; - return in; - } -}; - -struct DiagramEditorBayInfo //组态编辑间隔信息 -{ - QString name; //间隔名 - int nLayout; //布局 0纵向1横向 - QList lstFrom; //起始 - QList lstTo; //结束 - QMap mapRoute; //线路信息 - QMap mapComponent; //设备信息 - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBayInfo &data) { - out << data.name << data.nLayout << data.lstFrom << data.lstTo << data.mapRoute << data.mapComponent; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorBayInfo &data) { - in >> data.name >> data.nLayout >> data.lstFrom >> data.lstTo >> data.mapRoute >> data.mapComponent; - return in; - } -}; - -struct DiagramEditorTransNeutralInfo //组态编辑变压器中性点信息 -{ - QString name; //中性点名 - int nType = 0; //中性点类型 0高1中2低 - QPointF delPoint; //相对变压器偏移量 - QMap mapRoute; //中性点对应的线路结构 - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorTransNeutralInfo &data) { - out << data.name << data.nType << data.delPoint << data.mapRoute; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorTransNeutralInfo &data) { - in >> data.name >> data.nType >> data.delPoint >> data.mapRoute; - return in; - } -}; - -struct DiagramEditorTransInfo //组态编辑变压器信息 -{ - QString name; //变压器名 - QMap mapNeutral; //中性点结构 - QMap mapComponent; //设备信息 - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorTransInfo &data) { - out << data.name << data.mapNeutral << data.mapComponent; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorTransInfo &data) { - in >> data.name >> data.mapNeutral >> data.mapComponent; - return in; - } -}; - -enum class DiagramEditorStructType -{ - block = 0, //模块(母线段、间隔、变压器) - blockContainer, //模块容器(包含若干模块) - rowData //行数据(包含若干容器) -}; - -struct DiagramEditorConnectType //组态编辑连接信息 -{ - QString sName; - int nType = 0; //1母线,2间隔,3变压器 - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorConnectType &data) { - out << data.sName << data.nType; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorConnectType &data) { - in >> data.sName >> data.nType; - return in; - } -}; - -struct DiagramEditorBriefConnect //组态编辑时连接信息 -{ - QUuid uid; - DiagramEditorConnectType con1; - DiagramEditorConnectType con2; - int nPara = 0; //万用参数(变压器中表示连接位置,0高压侧,1中压侧,2低压侧) - - bool operator==(const DiagramEditorBriefConnect& obj) - { - if(this == &obj) - return false; - if((con1.sName == obj.con1.sName && con2.sName == obj.con2.sName)||(con1.sName == obj.con2.sName && con2.sName == obj.con1.sName)) - return true; - else - return false; - } - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBriefConnect &data) { - out << data.uid << data.con1 << data.con2 << data.nPara; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorBriefConnect &data) { - in >> data.uid >> data.con1 >> data.con2 >> data.nPara; - return in; - } - - DiagramEditorConnectType getOpposite(const QString& s){ //获取另一端名称 - if(con1.sName == s) - return con2; - else if(con2.sName == s) - return con1; - return DiagramEditorConnectType(); - } -}; - -struct DiagramEditorBlockInfo //组态编辑block信息 -{ - QString sName; - QString sContainerId; //所属的容器id - int nType; //1母线,2间隔,3变压器 - int nContainerLevel; //所处容器的层级 0,1,2,3 - QUuid uid; - QList _lstCon; //连接信息 - QList> _lstSub; //子对象列表(非拓扑计算使用) 如母线子对象为间隔,间隔子对象为item,电动机子对象为item <类型,uid> 类型:0设备1间隔 - QRectF recSize; //当前大小(根据内容确定) - QPointF sceneDelta; //block中心相对位移(计算布局位置 - bool bEditState; //详细编辑状态 - - //bus - float fVoltage; //母线电压 - int nBusType; //0无前缀,1:Ⅰ母,2Ⅱ母 - int nIndex; //第几段,1A,2B,3C,4D,5E,6F,7G,8H - //bay - BayType nBayType; - DiagramEditorBayInfo bayInfo; //间隔信息 - //transformer - TransformerType nTransType; - DiagramEditorTransInfo transInfo; - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBlockInfo &data) { - out << data.sName << data.sContainerId << data.nType << data.nContainerLevel << data.uid << data._lstCon << data.recSize << data.sceneDelta - << data.bEditState << data.fVoltage << data.nBusType << data.nIndex << data.nBayType << data.bayInfo << data.nTransType << data.transInfo; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorBlockInfo &data) { - in >> data.sName >> data.sContainerId >> data.nType >> data.nContainerLevel >> data.uid >> data._lstCon >> data.recSize >> data.sceneDelta - >> data.bEditState >> data.fVoltage >> data.nBusType >> data.nIndex >> data.nBayType >> data.bayInfo >> data.nTransType >> data.transInfo; - return in; - } -}; - - -struct DiagramEditorContainerInfo //组态编辑容器信息 -{ - QString sId; - double dMidUpY; //1母上边界 - double dMidDownY; //2母下边界 - double dStartX; //起始x - double dStartY; //起始y - double dWidth; //宽度 - double dHeight; - double dMaxUpH; //上方最大高度(1母线到上边界) - double dMaxDownH; //下方最大高度(2母线到下边界) - QMap> mapBlockInfo; - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorContainerInfo &data) { - out << data.sId << data.dMidUpY << data.dMidDownY << data.dStartX << data.dStartY << data.dWidth << data.dHeight << data.dMaxUpH << data.dMaxDownH << data.mapBlockInfo; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorContainerInfo &data) { - in >> data.sId >> data.dMidUpY >> data.dMidDownY >> data.dStartX >> data.dStartY >> data.dWidth >> data.dHeight >> data.dMaxUpH >> data.dMaxDownH >> data.mapBlockInfo; - return in; - } -}; - -struct DiagramEditorProjectInfo //editor工程信息 -{ - QString sName; - QUuid uid; - QMap mapBus; - QMap> mapSturctContainer; - QMap mapConnect; - - friend QDataStream &operator<<(QDataStream &out, const DiagramEditorProjectInfo &data) { - out << data.sName << data.uid << data.mapBus << data.mapSturctContainer << data.mapConnect; - return out; - } - friend QDataStream &operator>>(QDataStream &in, DiagramEditorProjectInfo &data) { - in >> data.sName >> data.uid >> data.mapBus >> data.mapSturctContainer >> data.mapConnect; - return in; - } -}; - -//==================组态图使用===================== -enum HandleType -{ - T_none = 0, - T_resize, //调整大小 - T_rotate, //旋转 - T_editShape, //编辑形状 - T_text, //文本 - T_lineIn, //入线口 - T_lineOut, //出线口 - T_lineInOut, //双端线 - T_newTral //中性点 -}; - -enum HandleTag -{ - H_none = 0, - H_leftTop, - H_top, - H_rightTop, - H_right, - H_rightBottom, - H_bottom, - H_leftBottom, - H_left, //8 - H_rotate_leftTop, - H_rotate_rightTop, - H_rotate_rightBottom, - H_rotate_leftBottom, //12 - H_edit, - H_textCaption = 40, //标题文本 - H_textCurrent, //电流 - h_textVoltage, //电压 - H_connect = 50 //连接操作点从50开始,前面预留 -}; - -enum PortPos -{ - P_top = 0, - P_down, - P_left, - P_right -}; - -struct Connection -{ - QUuid nSrcNodeId; - QUuid nSrcPortId; - HandleType srcType; - PortPos srcPos; - QUuid nDestNodeId; - QUuid nDestPortId; - HandleType destType; - PortPos destPos; - - Connection() - { - srcType = T_none; - srcPos = P_top; - destType = T_none; - destPos = P_top; - nSrcNodeId = QUuid(); - nSrcPortId = QUuid(); - nDestNodeId = QUuid(); - nDestPortId = QUuid(); - } - - Connection(const Connection& obj) - { - nSrcNodeId = obj.nSrcNodeId; - nSrcPortId = obj.nSrcPortId; - srcType = obj.srcType; - srcPos = obj.srcPos; - nDestNodeId = obj.nDestNodeId; - nDestPortId = obj.nDestPortId; - destType = obj.destType; - destPos = obj.destPos; - } - - Connection(QUuid nSNI,QUuid nSPI,HandleType sT,PortPos sPOS,QUuid nDNI,QUuid nDPI,HandleType dT,PortPos dPOS) - { - nSrcNodeId = nSNI; - nSrcPortId = nSPI; - srcType = sT; - srcPos = sPOS; - nDestNodeId = nDNI; - nDestPortId = nDPI; - destType = dT; - destPos = dPOS; - } - bool operator==(const Connection& obj) - { - return ((nSrcNodeId == obj.nSrcNodeId)&&(nSrcPortId == obj.nSrcPortId)&&(srcType == obj.srcType)&&(nDestNodeId == obj.nDestNodeId)&&(nDestPortId == obj.nDestPortId)&&(destType == obj.destType)); - } - - Connection& operator=(const Connection& obj) - { - if(this == &obj) - return *this; - nSrcNodeId = obj.nSrcNodeId; - nSrcPortId = obj.nSrcPortId; - srcType = obj.srcType; - srcPos = obj.srcPos; - nDestNodeId = obj.nDestNodeId; - nDestPortId = obj.nDestPortId; - destType = obj.destType; - destPos = obj.destPos; - return *this; - } -}; - -// 基础实体类型(电力元素或组态图) -enum class EntityType { - Grid, - Zone, - Station, - ConfigurationDiagram, - Component }; - -struct EntityInfo -{ - QString sName; - QString sUuid; - QString sParentId; - EntityType eType; -}; - -struct DiagramInfo //组态图结构信息 -{ - QVariant id; //临时id使用uuid,load数据使用数据库自增id - QString sName; - QString sTag; - QVariant parentId; - QString sBasePageName; //父组态图名称 -}; - -struct DiagramContent { - QString diagramId; // 对应的PowerEntity ID - - // 元素位置信息 <元素ID, 位置> - QHash elementPositions; - //QHash connectionColors; // <连接ID, 显示颜色> - QHash> connectionPaths; // 自定义路径点 -}; - -struct PtExtraInfo -{ - int index = 0; - QString scope; //变比标签 - QString accuracy; //精度等级标签 - QString volume; //二次负载容量标签 - QString star; //线圈接法 - double ratio; //变比 - int polarity = 1; //极性 -}; - -struct CtExtraInfo -{ - int index = 0; - QString scope; //变比标签 - QString accuracy; //精度等级标签 - QString volume; //二次负载容量标签 - double ratio; //变比 - int polarity = 1; //极性 -}; - -struct MeasurementInfo //量测 -{ - QString tag; //量测tag - QString name; //量测名称 - int type; //量测类型 0:遥测 1:遥信 2:遥控 - int size; //量测size - QUuid bayUuid; //所属间隔 - QUuid componentUuid; //所属设备 - - //通讯 - int nSource; //数据来源 1:cl3611 2:104 - QString sStation; //子站名称 - QString sDevice; //设备名称 - QString sChannel; //通道名(cl3611) 遥测:TMx(1-8); P; Q; S; PF; F; deltaF; UAB; UBC; UCA; 遥信: TSxx(01-10); 遥控: TCx; - int nPacket; //包号(104) - int nOffset; //偏移量(104) - //事件 - bool bEnable = false; //"enable"开启标志 - QMap mapTE; //遥测"cause" key:upup,up,down,downdown可选,val:0-100 - QString sEdge; //遥信"cause:edge" raising, falling 字符串单选 - QString sCommand; //"action:command" info, warning, error, critical, exception 字符串单选 - QStringList lstParameter; //"action:parameters" 字符串数组 - - QString sWindType; //绕组类型 ctpt - int nRatio; //变比 - int nPolarity; //极性 - int nIndex; //对应绕组序号 - - QString sSymmetry; //对称量测的name -}; - -// 定义比较键的结构 -struct MeasurementKey { - int nSource; - QString sStation; - QString sDevice; - QString sChannel; - int nPacket; - int nOffset; - - MeasurementKey(const MeasurementInfo& info) - : nSource(info.nSource) - , sStation(info.sStation) - , sDevice(info.sDevice) - , sChannel(info.sChannel) - , nPacket(info.nPacket) - , nOffset(info.nOffset) {} - - // 用于QMap排序 - bool operator<(const MeasurementKey& other) const { - if (nSource != other.nSource) return nSource < other.nSource; - if (sStation != other.sStation) return sStation < other.sStation; - if (sDevice != other.sDevice) return sDevice < other.sDevice; - if (sChannel != other.sChannel) return sChannel < other.sChannel; - if (nPacket != other.nPacket) return nPacket < other.nPacket; - return nOffset < other.nOffset; - } -}; - -//属性其他参数与层级关系 -struct ExtraProperty -{ - int id = 0; - QString code; // 唯一编码(拼接字符串) - QString tag; // 属性tag - QString name; // 显示名称 - QString connect_para; // 连接参数 - - // 层级名称 - QString grid_name; - QString zone_name; - QString station_name; - QString currentLevel; - QString bay_name; - QString component_name; - QString group_name; - QString type_name; - - //层级索引 - QString grid_tag; - QString zone_tag; - QString station_tag; - QString page_tag; - QString bay_tag; - QUuid component_uuid; - QString component_tag; - QString group_tag; - QString type_tag; - - // 数据源配置 - QString sourceType; // "property", "measurement" - QVariantMap sourceConfig; - - bool bDataChanged = false; //数据改变标志(临时) - // 获取完整路径 - QString getFullName() const { - QStringList parts = {grid_name, zone_name, station_name, currentLevel, bay_name, component_name, group_name, name}; - parts.removeAll(""); - return parts.join("."); - } - - //获取完整索引 - QString getFullTag() const { - QStringList parts = {grid_tag, zone_tag, station_tag, page_tag, currentLevel, bay_tag, component_uuid.toString(), group_tag, tag}; - parts.removeAll(""); - return parts.join("."); - } - - // 检查是否匹配过滤条件 - bool matches(const QVariantMap& filter,const QString& type) const { - for (auto it = filter.begin(); it != filter.end(); ++it) { - QString field = it.key(); - QString filterValue = it.value().toString(); - QString fieldValue; - if(type == "name"){ - fieldValue = getFieldName(field); - } - else if(type == "tag"){ - fieldValue = getFieldTag(field); - } - - if (!filterValue.isEmpty() && fieldValue != filterValue) { - return false; - } - } - return true; - } - - QString getFieldName(const QString& field) const { - if (field == "grid") return grid_name; - if (field == "zone") return zone_name; - if (field == "station") return station_name; - if (field == "currentLevel") return currentLevel; - if (field == "bay") return bay_name; - if (field == "component") return component_name; - if (field == "group") return group_name; - if (field == "property") return name; - return ""; - } - - QString getFieldTag(const QString& field) const { - if (field == "grid") return grid_tag; - if (field == "zone") return zone_tag; - if (field == "station") return station_tag; - if (field == "page") return page_tag; - if (field == "currentLevel") return currentLevel; - if (field == "bay") return bay_tag; - if (field == "component") return component_name; - if (field == "group") return component_uuid.toString(); - if (field == "tag") return name; - return ""; - } -}; - -struct ExtraPropertyLevelInfo { //层级关系item信息 - QString displayText; // 显示文本 - QString nameValue; // 名称值 - QString tagValue; // 标签值 - bool isRequired; // 是否必填 - QString placeholder; // 缺省占位符 -}; -//================================================== -struct baseComponentInfo //基模图元数据 -{ - int id = 0; - QUuid uuid; - QString name; - QString tag; - int typeId = 0; - QJsonObject context; - QString metaMmodel; - QString projectModel; -}; - -struct editorProjectInfo //editor工程数据 -{ - int id = 0; - QUuid uuid; - QString name; - QString tag; -}; - -struct editorBaseSettingInfo //editor基础设置 -{ - int id = 0; - QUuid uuid; - QString projectName; //所属工程名 - QString autor; //作者 - QByteArray context; //内容 - QUuid generateUid; //生成的图uuid - QString ts; //时间戳 -}; - -//================================================== - -struct componentInfo //工程模图元数据 -{ - QUuid uuid; - QString modelName; - QString nspath; - QString tag; - QString name; - QString description; - QString grid; - QString zone; - QString station; - int type = 0; - bool inService = true; - int state = 0; - QJsonObject connected_bus; - QJsonObject label; - QJsonObject context; - int op = 0; -}; - -struct componentTypeInfo //元件类型 -{ - int id = 0; - QString type; - QString name; - QJsonObject config; -}; - -struct topologicInfo -{ - int id = -1; - QUuid uuid_from; - QUuid uuid_to; - QJsonObject context; - int flag; - QString description; - int op; -}; - -struct pageInfo -{ - int id = -1; - QString tag; - QString name; - QJsonObject label; - QJsonObject context; - QString description; - int op; -}; - -struct monitorPageInfo //运行时page -{ - int id = -1; - QUuid uid; - QString tag; - QString name; - QString parent; - QJsonObject context; - QString ts; -}; - -struct gridInfo -{ - int id = -1; - QString tagname; - QString name; - QString description; -}; - -struct zoneInfo -{ - int id = -1; - int grid_id = -1; - QString tagname; - QString name; - QString description; -}; - -struct stationInfo -{ - int id = -1; - int zone_id = -1; - QString tagname; - QString name; - QString description; - bool is_local = true; -}; - -struct bayInfo -{ - QUuid uuid; - QString name; - QString tag; - QString type; - double unom; - double fla; - double capacity; - QString description; - bool inService; - int nState; - QString grid; - QString zone; - QString station; - QJsonObject business; - QJsonObject fromUuid; - QJsonObject toUuid; - QJsonObject protect; - QJsonObject faultRec; - QJsonObject status; - QJsonObject dynSense; - QJsonObject instruct; - QJsonObject etc; - QJsonObject context; - QList components; -}; - -struct itemPageInfo //page中保存的item信息(大小,位置etc) -{ - QPointF pos; - double dWidth = 0.0; - double dHeight = 0.0; - double dRotate = 0.0; -}; - -struct RelationSturctItem //层级关系结构item -{ - QString sVoltageLevel; - int nCategory; //类型 0设备1间隔 - int nEquipType; //设备类别 - QString sName; //名称 - QUuid uid; //id - QString grid; //电网 - QString zone; //区域 - QString station; //电站 - - QJsonObject toJson() const { - QJsonObject obj; - obj["sVoltageLevel"] = sVoltageLevel; - obj["nCategory"] = nCategory; - obj["nEquipType"] = nEquipType; - obj["sName"] = sName; - obj["uid"] = uid.toString(); - obj["grid"] = grid; - obj["zone"] = zone; - obj["station"] = station; - return obj; - } - - // 从JSON对象解析 - void fromJson(const QJsonObject& json) { - sVoltageLevel = json["sVoltageLevel"].toString(); - nCategory = json["nCategory"].toInt(); - nEquipType = json["nEquipType"].toInt(); - sName = json["sName"].toString(); - uid = QUuid::fromString(json["uid"].toString()); - grid = json["grid"].toString(); - zone = json["zone"].toString(); - station = json["station"].toString(); - } - - // 检查有效性 - bool isValid() const { - return !uid.isNull() && !sName.isEmpty(); - } - - // 重载相等运算符 - bool operator==(const RelationSturctItem& other) const { - return uid == other.uid && - sName == other.sName && - nCategory == other.nCategory; - } -}; - -struct RelationItem //层级关系item -{ - RelationSturctItem parent; - RelationSturctItem item; - QList 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) { - RelationSturctItem sub; - sub.fromJson(subValue.toObject()); - subList.append(sub); - } - } - - // 检查有效性 - bool isValid() const { - return parent.isValid() && item.isValid(); - } - - // 添加子项 - void addSubItem(const RelationSturctItem& 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; - } - - // 查找子项 - RelationSturctItem* findSubItem(const QUuid& subUid) { - for (auto& sub : subList) { - if (sub.uid == subUid) { - return ⊂ - } - } - return nullptr; - } -}; - -/*********************运行时************************/ - -struct monitorItemAttributeInfo //单个监控item属性 -{ - QString sGroup; //所属组别 - QString sTag; //索引名 - QString sName; //显示名 - int nConnectType = 0; //关联数据类别 0字段 1量测 - QString sConnectPara; //查询参数(参数服务使用) - int nShowType = 0; //显示类别 0字符 1图表 - bool bShowDiagram = false; //显示到组态中 - int nGraphType = 0; //图表类型 0折线1柱状 - QString sTimeRange; //时间范围(分) - QMap mapValue; //属性值 - 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"] = mapToJson(mapValue); - 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(); - mapValue = jsonToMap(json["sValue"].toObject()); - 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; - } - - QJsonObject mapToJson(const QMap& map) const{ - QJsonObject jsonObj; - - for (auto it = map.constBegin(); it != map.constEnd(); ++it) { - // 将quint64的key转换为QString - QString key = QString::number(it.key()); - jsonObj[key] = it.value(); - } - - return jsonObj; - } - - // 从JSON转换回来 - QMap jsonToMap(const QJsonObject& jsonObj) const{ - QMap map; - - for (auto it = jsonObj.constBegin(); it != jsonObj.constEnd(); ++it) { - bool ok; - quint64 key = it.key().toULongLong(&ok); - if (ok) { - double value = it.value().toDouble(); - map[key] = value; - } - } - - return map; - } -}; - -enum class monitorItemState{ //监控item的状态 - Normal = 0, //正常 - Closing, //合闸 - Opening, //分闸 - AccidentTrip, //事故跳闸 - StatusFault, //状态故障 - Energized, //带电 - DeEnergized, //失电 - Grounding, //接地 - Running, //运行 - ShutDown, //停运 - Alarm, //告警 - LineBreak, //断线 - MeasureMentOutLimit //量测越限 -}; - -struct monitorItemDisplayInfo //监控模式显示信息 -{ - int nItemType; //设备类型 - QString sStateName; //状态名 - bool bEnable = false; - QString sColor; - QByteArray bytPicture; //存储二进制数据 - int nWidth; - int nHeight; - QString sMeta; //元模型名 - 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 //监控设备类型 -{ - QString sTag; - QString sName; - - bool isValid() const { - return !sTag.isEmpty() && !sName.isEmpty(); - } - - bool operator==(const monitorItemTypeStruct& other) const { - return sTag == other.sTag && sName == other.sName; - } - - bool operator<(const monitorItemTypeStruct& other) const { - 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 //监控设备状态 -{ - QString sState; - monitorItemState eState; - - bool isValid() const { - return !sState.isEmpty(); - } - - bool operator==(const monitorItemStateStruct& other) const { - return sState == other.sState && eState == other.eState; - } - - bool operator<(const monitorItemStateStruct& other) const { - return sState < other.sState || (sState == other.sState && eState < other.eState); - } - - // 转换为JSON对象 - 成员函数 - QJsonObject toJson() const { - QJsonObject obj; - obj["sState"] = sState; - obj["eState"] = static_cast(eState); - return obj; - } - - // 从JSON对象解析 - 成员函数 - void fromJson(const QJsonObject& json) { - sState = json["sState"].toString(); - eState = static_cast(json["eState"].toInt()); - } -}; - -struct ModelTypeInfo{ //类型临时信息 - int nType; - QString sType; - QString sName; - QString sMeta; //该类型元模名 - QString sModel; //该类型工程模名 -}; - -/*******************传递的数据************************/ -struct HttpRecommandInfo{ //推荐数据服务 - QString sInput; //输入的前缀 - int nOffset = 0; //正确位置计数 - QStringList lstRecommand; //推荐列表 -}; - -/** - * Constants used for fetching QVariant data from GraphModel. - */ -enum class NodeRole { - Type = 0, ///< Type of the current node, usually a string. - Position = 1, ///< `QPointF` positon of the node on the scene. - Size = 2, ///< `QSize` for resizable nodes. - CaptionVisible = 3, ///< `bool` for caption visibility. - Caption = 4, ///< `QString` for node caption. - Style = 5, ///< Custom NodeStyle as QJsonDocument - InternalData = 6, ///< Node-stecific user data as QJsonObject - InPortCount = 7, ///< `unsigned int` - OutPortCount = 9, ///< `unsigned int` - Widget = 10, ///< Optional `QWidget*` or `nullptr` -}; -//Q_ENUM_NS(NodeRole) - -/** - * Specific flags regulating node features and appeaarence. - */ -enum NodeFlag { - NoFlags = 0x0, ///< Default NodeFlag - Resizable = 0x1, ///< Lets the node be resizable - Locked = 0x2 -}; - -Q_DECLARE_FLAGS(NodeFlags, NodeFlag) -//Q_FLAG_NS(NodeFlags) -Q_DECLARE_OPERATORS_FOR_FLAGS(NodeFlags) - -/** - * Constants for fetching port-related information from the GraphModel. - */ -enum class PortRole { - Data = 0, ///< `std::shared_ptr`. - DataType = 1, ///< `QString` describing the port data type. - ConnectionPolicyRole = 2, ///< `enum` ConnectionPolicyRole - CaptionVisible = 3, ///< `bool` for caption visibility. - Caption = 4, ///< `QString` for port caption. -}; -//Q_ENUM_NS(PortRole) - -/** - * Defines how many connections are possible to attach to ports. The - * values are fetched using PortRole::ConnectionPolicy. - */ -enum class ConnectionPolicy { - One, ///< Just one connection for each port. - Many, ///< Any number of connections possible for the port. -}; -//Q_ENUM_NS(ConnectionPolicy) - -/** - * Used for distinguishing input and output node ports. - */ -enum class PortType { - In = 0, ///< Input node port (from the left). - Out = 1, ///< Output node port (from the right). - None = 2 -}; -//Q_ENUM_NS(PortType) - -enum PortState -{ - P_const = 0, //固定端口 - p_movable, //移动端口 -}; - -using PortCount = int; - -/// ports are consecutively numbered starting from zero. -using PortIndex = int; - -const PortIndex InvalidPortIndex = -1; - -/// Unique Id associated with each node in the GraphModel. -using NodeId = int; - -const NodeId InvalidNodeId = -1; - -/** - * A unique connection identificator that stores - * out `NodeId`, out `PortIndex`, in `NodeId`, in `PortIndex` - */ -struct ConnectionId -{ - int conId; - NodeId outNodeId; - PortIndex outPortIndex; - NodeId inNodeId; - PortIndex inPortIndex; -}; - -inline uint qHash(const ConnectionId &data, uint seed){ - - return data.conId; -} - -inline bool operator<(ConnectionId const &a, ConnectionId const &b) -{ - return a.conId struct ExtraProperty; -struct propertyStateInfo; +struct PropertyStateInfo; struct MeasurementInfo; -struct modelDataInfo; +struct ModelDataInfo; class StructDataSource : public QObject { @@ -52,7 +52,7 @@ public: // 加载数据 void loadExtrapro(QMap vec); - void loadPropertyData(QMap map); + void loadPropertyData(QMap map); void loadMeasurementData(QMap map); @@ -63,7 +63,7 @@ public: QVector getAllProperties() const; // 获取property数据 - propertyStateInfo* getPropertyData(const ExtraProperty& prop); + PropertyStateInfo* getPropertyData(const ExtraProperty& prop); // 获取measurement数据 MeasurementInfo* getMeasurementData(const ExtraProperty& prop); @@ -78,7 +78,7 @@ signals: public: QMap allProperties; private: - QMap m_propertyData; //参量 + QMap m_propertyData; //参量 QMap m_measurementData; //量测 }; #endif diff --git a/common/source/baseProperty.cpp b/common/source/baseProperty.cpp index 1480ece..dac202b 100644 --- a/common/source/baseProperty.cpp +++ b/common/source/baseProperty.cpp @@ -90,7 +90,7 @@ VariableProperty::~VariableProperty() } -modelDataInfo& VariableProperty::getPropertyValue() const +ModelDataInfo& VariableProperty::getPropertyValue() const { return DataManager::instance().modelData()[sModelName]; } diff --git a/common/source/structDataSource.cpp b/common/source/structDataSource.cpp index 6d96304..26a7829 100644 --- a/common/source/structDataSource.cpp +++ b/common/source/structDataSource.cpp @@ -1,6 +1,6 @@ #include "structDataSource.h" #include "dataBase.h" -#include "global.h" +//#include "global.h" StructDataSource::StructDataSource(QObject* parent) : QObject(parent) { @@ -194,7 +194,7 @@ QVector StructDataSource::getAllProperties() const { } // 获取property数据 -propertyStateInfo* StructDataSource::getPropertyData(const ExtraProperty& prop) { +PropertyStateInfo* StructDataSource::getPropertyData(const ExtraProperty& prop) { QString modelName = prop.sourceConfig.value("modelName").toString(); QString groupTag = prop.group_tag; QUuid componentUuid = prop.component_uuid; @@ -259,7 +259,7 @@ void StructDataSource::loadExtrapro(QMap vec) allProperties = vec; } -void StructDataSource::loadPropertyData(QMap map) +void StructDataSource::loadPropertyData(QMap map) { m_propertyData = map; } diff --git a/diagramCavas/CMakeLists.txt b/diagramCavas/CMakeLists.txt index 1437d25..fa39f93 100644 --- a/diagramCavas/CMakeLists.txt +++ b/diagramCavas/CMakeLists.txt @@ -135,13 +135,22 @@ set(DIAGRAMCAVAS_HEADER_FILES include/propertyType/pannelColorGadget.h ../common/include/httpInterface.h ../common/include/tools.h - ../common/include/global.h + #../common/include/global.h ../common/include/baseProperty.h ../common/include/compiler.hpp ../common/include/export.hpp ../common/include/operatingSystem.hpp ../common/include/structDataSource.h ../common/include/extraPropertyManager.h + + ../common/core_model/types.h + ../common/core_model/diagram.h + ../common/core_model/topology.h + ../common/core_model/data_transmission.h + ../common/core_model/constants.h + ../common/frontend/monitor_item.h + ../common/backend/project_model.h + ../common/frontend/graphics_items.h ) set(DIAGRAMCAVAS_SOURCE_FILES @@ -276,9 +285,11 @@ set(DIAGRAMCAVAS_SOURCE_FILES ../common/source/httpInterface.cpp ../common/source/baseProperty.cpp ../common/source/tools.cpp - ../common/source/global.cpp + #../common/source/global.cpp ../common/source/structDataSource.cpp ../common/source/extraPropertyManager.cpp + + ../common/core_model/types.cpp ) set(UI_FILES diff --git a/diagramCavas/include/baseContentDlg.h b/diagramCavas/include/baseContentDlg.h index 0a2f928..7bcd742 100644 --- a/diagramCavas/include/baseContentDlg.h +++ b/diagramCavas/include/baseContentDlg.h @@ -4,7 +4,8 @@ #include #include #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" /******************************************************* 属性组界面基类 ********************************************************/ @@ -19,19 +20,19 @@ class BaseContentDlg : public QDialog public: BaseContentDlg(QWidget *parent = nullptr); virtual ~BaseContentDlg(); - virtual void createGroupView(groupStateInfo) = 0; //创建页面 - virtual QMap getPropertyValue(BaseProperty* = nullptr) = 0; //返回当前页面的属性值 + virtual void createGroupView(GroupStateInfo) = 0; //创建页面 + virtual QMap getPropertyValue(BaseProperty* = nullptr) = 0; //返回当前页面的属性值 //void setPropertyValue(QMap); //void setPropertyValue(BaseProperty*); virtual void setPropertyValue(QVariant) = 0; void setModelController(FixedPortsModel* p){_curModelController = p;} auto getModelController() {return _curModelController;} - void setExtendProperty(propertyStateInfo info) {_extendInfo = info;} //设置跨组别使用的公共变量(ct,pt使用extend绕组信息) + void setExtendProperty(PropertyStateInfo info) {_extendInfo = info;} //设置跨组别使用的公共变量(ct,pt使用extend绕组信息) protected: - QMap _mapPro; + QMap _mapPro; QFormLayout* createFormLayout(QWidget* parent); FixedPortsModel* _curModelController; - propertyStateInfo _extendInfo; + PropertyStateInfo _extendInfo; }; #endif diff --git a/diagramCavas/include/baseDrawingPanel.h b/diagramCavas/include/baseDrawingPanel.h index 9f81a9d..94de1c2 100644 --- a/diagramCavas/include/baseDrawingPanel.h +++ b/diagramCavas/include/baseDrawingPanel.h @@ -6,7 +6,7 @@ #include #include #include -#include "global.h" +//#include "global.h" #include "designerScene.h" class DesignerView; diff --git a/diagramCavas/include/baseInfoDlg.h b/diagramCavas/include/baseInfoDlg.h index 5265a3a..00f6824 100644 --- a/diagramCavas/include/baseInfoDlg.h +++ b/diagramCavas/include/baseInfoDlg.h @@ -20,8 +20,8 @@ public: void initial(); - virtual void createGroupView(groupStateInfo); - virtual QMap getPropertyValue(BaseProperty* = nullptr); + virtual void createGroupView(GroupStateInfo); + virtual QMap getPropertyValue(BaseProperty* = nullptr); virtual void setPropertyValue(QVariant); void setParentDlg(ItemPropertyDlg* p) {_parentDlg = p;} public slots: diff --git a/diagramCavas/include/baseScene.h b/diagramCavas/include/baseScene.h index f2a23e2..ba686de 100644 --- a/diagramCavas/include/baseScene.h +++ b/diagramCavas/include/baseScene.h @@ -5,7 +5,7 @@ #include #include "graphicsDataModel/baseModel.h" -#include "global.h" +//#include "global.h" class QUndoStack; diff --git a/diagramCavas/include/bayInfoDlg.h b/diagramCavas/include/bayInfoDlg.h index 7de3713..7d8a939 100644 --- a/diagramCavas/include/bayInfoDlg.h +++ b/diagramCavas/include/bayInfoDlg.h @@ -3,7 +3,8 @@ #include #include "baseContentDlg.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/data_transmission.h" /******************************************************* 间隔信息 ********************************************************/ @@ -20,8 +21,8 @@ class BayInfoDlg : public BaseContentDlg public: BayInfoDlg(QWidget *parent = nullptr); virtual ~BayInfoDlg(); - virtual void createGroupView(groupStateInfo); - virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 + virtual void createGroupView(GroupStateInfo); + virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 virtual void setPropertyValue(QVariant); auto& getValidType() {return _validType;} //获取可用的量测属性 void setUi(); @@ -42,7 +43,7 @@ private: BayProperty* _bayProperty; //当前间隔属性 BaseProperty* _itemProperty; //当前对象属性 MeasureSettingDlg* _measureDlg; - QList _validType; //可用的属性列表 + QList _validType; //可用的属性列表 QMap _mapMeasure; //量测列表 bool bShowDouble = false; //显示double界面 }; diff --git a/diagramCavas/include/bayMeasureDlg.h b/diagramCavas/include/bayMeasureDlg.h index b44d505..4800a75 100644 --- a/diagramCavas/include/bayMeasureDlg.h +++ b/diagramCavas/include/bayMeasureDlg.h @@ -2,7 +2,8 @@ #define BAYMEASUREDLG_H #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" /******************************************************* 间隔量测界面 ********************************************************/ @@ -40,7 +41,7 @@ private: Ui::bayMeasureDlg *ui; BayProperty* _bayProperty; //当前间隔属性 MeasureSettingDlg* _measureDlg; - QList _validType; //可用的属性列表 + QList _validType; //可用的属性列表 QMap _mapMeasure; //量测列表 }; diff --git a/diagramCavas/include/ctExtraInfoDlg.h b/diagramCavas/include/ctExtraInfoDlg.h index badf84b..205d490 100644 --- a/diagramCavas/include/ctExtraInfoDlg.h +++ b/diagramCavas/include/ctExtraInfoDlg.h @@ -3,7 +3,7 @@ #include #include "baseContentDlg.h" -#include "global.h" +//#include "global.h" /******************************************************* ct扩展信息界面 ********************************************************/ @@ -21,8 +21,8 @@ class CtExtraInfoDlg : public BaseContentDlg public: CtExtraInfoDlg(QWidget *parent = nullptr); virtual ~CtExtraInfoDlg(); - virtual void createGroupView(groupStateInfo); - virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 + virtual void createGroupView(GroupStateInfo); + virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 virtual void setPropertyValue(QVariant); public slots: void onAddClicked(); diff --git a/diagramCavas/include/diagramCavas.h b/diagramCavas/include/diagramCavas.h index 05ef722..6822e77 100644 --- a/diagramCavas/include/diagramCavas.h +++ b/diagramCavas/include/diagramCavas.h @@ -2,7 +2,11 @@ #define DIAGRAMCAVAS_H #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" +#include "common/core_model/topology.h" +#include "common/core_model/types.h" +#include "common/core_model/diagram.h" #include "export.hpp" QT_BEGIN_NAMESPACE @@ -45,17 +49,17 @@ public: public: void initial(); signals: - void prepareUpdateItems(QList,bool refresh); - void prepareSelectItems(QList); + void prepareUpdateItems(QList,bool refresh); + void prepareSelectItems(QList); void updateMonitorList(QString,QPair,int nMode = 0); //0新增1删除 - void createdMonitorItems(QList); //创建的监控中item个数 + void createdMonitorItems(QList); //创建的监控中item个数 void selectTarget(QObject*); - void prepareUpdateTopology(QList,bool refresh,bool showFull); //更新层级数 refresh:刷新标志,showFull:显示全部层级 + void prepareUpdateTopology(QList,bool refresh,bool showFull); //更新层级数 refresh:刷新标志,showFull:显示全部层级 void updateMonitorTopology(QList); public slots: void onSignal_addDrawingPanel(PowerEntity* p,DiagramMode = DM_edit,QString parent = QString()); //parent:派生运行时的page - void onSignal_addGraphicsItem(modelStateInfo&); + void onSignal_addGraphicsItem(ModelStateInfo&); void onSignal_addPage(); void onSignal_savePage(); void onSignal_loadPage(PowerEntity* p); @@ -84,7 +88,7 @@ public slots: void onCreateTestBaseModelDiagram(); //生成测试基模图 /****************************拓扑关系(层级关系)******************************/ - void onSignal_updateTopology(QList,bool,bool); //更新拓扑列表 + void onSignal_updateTopology(QList,bool,bool); //更新拓扑列表 /******************************生成组态***********************************/ void onSignal_createEditPanel(QString,QUuid); void onSignal_prepareOpenSetting(QString); @@ -97,11 +101,11 @@ public slots: /*********************************间隔**************************************/ void onSignl_openCurrentBay(); /********************************运行时**********************************/ - void onSignal_updateCurItems(QList,bool); //更新当前设备列表 - void onSignal_selectedItems(QList); //当前选中设备 - void onSignal_generate(QString,QList); //使用选中设备生成监控 (监控名,设备) + void onSignal_updateCurItems(QList,bool); //更新当前设备列表 + void onSignal_selectedItems(QList); //当前选中设备 + void onSignal_generate(QString,QList); //使用选中设备生成监控 (监控名,设备) void onSignal_monitorCreated(QString,QPair); //监控已创建 - void onSignal_monitorItemCreated(QList); //监控中创建的对象 + void onSignal_monitorItemCreated(QList); //监控中创建的对象 void onSignal_monitorSelected(DiagramInfo); //监控选中 void onSignal_saveMonitor(QList>); //保存选中的监控 diff --git a/diagramCavas/include/diagramConnectSetting.h b/diagramCavas/include/diagramConnectSetting.h index cfca25e..28432fd 100644 --- a/diagramCavas/include/diagramConnectSetting.h +++ b/diagramCavas/include/diagramConnectSetting.h @@ -2,7 +2,7 @@ #define DIAGRAMCONNECTSETTING_H #include -#include "global.h" +//#include "global.h" /******************************************************* 网络连接设置 ********************************************************/ diff --git a/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h b/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h index 04bf578..bbbb807 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h +++ b/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h @@ -3,7 +3,8 @@ //组态编辑基础块(分段母线、间隔等) #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" class DiagramEditorStructContainer; diff --git a/diagramCavas/include/diagramEditor/diagramEditorBayDetailAddDlg.h b/diagramCavas/include/diagramEditor/diagramEditorBayDetailAddDlg.h index 6fbc94c..c4c32f0 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorBayDetailAddDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorBayDetailAddDlg.h @@ -2,13 +2,15 @@ #define DIAGRAMEDITORBAYDETAILADDDLG_H #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorBayDetailAddDlg; } QT_END_NAMESPACE class DiagramEditorBayDetailSettingDlg; +class QStandardItemModel; class DiagramEditorBayDetailAddDlg : public QDialog { diff --git a/diagramCavas/include/diagramEditor/diagramEditorBayDetailSettingDlg.h b/diagramCavas/include/diagramEditor/diagramEditorBayDetailSettingDlg.h index 38a3acb..8ee128f 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorBayDetailSettingDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorBayDetailSettingDlg.h @@ -2,7 +2,8 @@ #define DIAGRAMEDITORBAYDETAILSETTINGDLG_H #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorBayDetailSettingDlg; } @@ -13,6 +14,7 @@ class DiagramEditorBayDetailAddDlg; class DiagramEditorBayBlock; class DiagramEditorBayPreviewDlg; class DiagramEditorModel; +class QStandardItemModel; class DiagramEditorBayDetailSettingDlg : public QDialog { diff --git a/diagramCavas/include/diagramEditor/diagramEditorBayPreviewDlg.h b/diagramCavas/include/diagramEditor/diagramEditorBayPreviewDlg.h index 46f0895..696ce5f 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorBayPreviewDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorBayPreviewDlg.h @@ -4,7 +4,7 @@ #include #include #include -#include "global.h" +//#include "global.h" class EditView; class EditPreviewScene; diff --git a/diagramCavas/include/diagramEditor/diagramEditorBaySettingDlg.h b/diagramCavas/include/diagramEditor/diagramEditorBaySettingDlg.h index 8020ef2..b0f9b69 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorBaySettingDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorBaySettingDlg.h @@ -2,7 +2,7 @@ #define DIAGRAMEDITORBAYSETTINGDLG_H #include -#include "global.h" +//#include "global.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorBaySettingDlg; } diff --git a/diagramCavas/include/diagramEditor/diagramEditorPreviewDlg.h b/diagramCavas/include/diagramEditor/diagramEditorPreviewDlg.h index ce5bd71..aad8b0e 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorPreviewDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorPreviewDlg.h @@ -4,7 +4,7 @@ #include #include #include -#include "global.h" +//#include "global.h" class EditView; class EditPreviewScene; diff --git a/diagramCavas/include/diagramEditor/diagramEditorStructContainer.h b/diagramCavas/include/diagramEditor/diagramEditorStructContainer.h index fac606b..e77adf5 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorStructContainer.h +++ b/diagramCavas/include/diagramEditor/diagramEditorStructContainer.h @@ -4,7 +4,8 @@ //组态划分后结构的容器,可包含分段母线及间隔、独立间隔、变压器等,以确定组态图空间结构 #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" class DiagramEditorBaseBlock; diff --git a/diagramCavas/include/diagramEditor/diagramEditorTransDetailAddDlg.h b/diagramCavas/include/diagramEditor/diagramEditorTransDetailAddDlg.h index 71e1e52..09a320b 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorTransDetailAddDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorTransDetailAddDlg.h @@ -2,7 +2,9 @@ #define DIAGRAMEDITORTRANSDETAILADDDLG_H #include -#include "global.h" +#include +#include "common/core_model/diagram.h" +//#include "global.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorTransDetailAddDlg; } diff --git a/diagramCavas/include/diagramEditor/diagramEditorTransDetailSettingDlg.h b/diagramCavas/include/diagramEditor/diagramEditorTransDetailSettingDlg.h index addb6f7..575b5ea 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorTransDetailSettingDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorTransDetailSettingDlg.h @@ -2,7 +2,9 @@ #define DIAGRAMEDITORTRANSDETAILSETTINGDLG_H #include -#include "global.h" +#include +//#include "global.h" +#include "common/core_model/diagram.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorTransDetailSettingDlg; } diff --git a/diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h b/diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h index da95719..d16d7fc 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h +++ b/diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h @@ -2,7 +2,7 @@ #define DIAGRAMEDITORTRANSSETTINGDLG_H #include -#include "global.h" +//#include "global.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorTransSettingDlg; } diff --git a/diagramCavas/include/diagramEditor/diagramEditorWizard.h b/diagramCavas/include/diagramEditor/diagramEditorWizard.h index b3dce3c..3d2911b 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorWizard.h +++ b/diagramCavas/include/diagramEditor/diagramEditorWizard.h @@ -2,7 +2,9 @@ #define DIAGRAMEDITORWIZARD_H #include -#include "global.h" +//#include "global.h" +#include "tools.h" +#include "common/core_model/diagram.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorWizard; } diff --git a/diagramCavas/include/diagramEditor/editBaseStruct.h b/diagramCavas/include/diagramEditor/editBaseStruct.h index 2b6e65e..1b46ee2 100644 --- a/diagramCavas/include/diagramEditor/editBaseStruct.h +++ b/diagramCavas/include/diagramEditor/editBaseStruct.h @@ -3,7 +3,8 @@ //编辑器基础空间结构 #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" class EditBaseStruct : public QGraphicsWidget { diff --git a/diagramCavas/include/diagramEditor/editItems.h b/diagramCavas/include/diagramEditor/editItems.h index 58709de..310157a 100644 --- a/diagramCavas/include/diagramEditor/editItems.h +++ b/diagramCavas/include/diagramEditor/editItems.h @@ -4,7 +4,8 @@ //组态过程中的item #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" class DiagramEditorBaseBlock; diff --git a/diagramCavas/include/diagramEditor/editPanel.h b/diagramCavas/include/diagramEditor/editPanel.h index 857b51e..c7e5d54 100644 --- a/diagramCavas/include/diagramEditor/editPanel.h +++ b/diagramCavas/include/diagramEditor/editPanel.h @@ -3,7 +3,8 @@ //编辑文本项生成组态图 #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" class EditView; class EditScene; @@ -40,7 +41,7 @@ public: DiagramEditorModel* getModel() {return _pModel;} EditScene* getScene() {return m_pEditScene;} - QList getBlockItems(EditorItemType typ = EditorItemType::none); //返回block对应的item,如母线,间隔,变压器, none返回所有类型 + QList getBlockItems(EditorItemType typ = EditorItemType::None); //返回block对应的item,如母线,间隔,变压器, none返回所有类型 void setProjectName(const QString& s){_projectName = s;}; QString getProjectName(){return _projectName;} diff --git a/diagramCavas/include/diagramEditor/wizardBayContentDlg.h b/diagramCavas/include/diagramEditor/wizardBayContentDlg.h index 89fe6eb..ac81ae6 100644 --- a/diagramCavas/include/diagramEditor/wizardBayContentDlg.h +++ b/diagramCavas/include/diagramEditor/wizardBayContentDlg.h @@ -3,7 +3,8 @@ //向导bay设置右侧table #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" class DiagramEditorWizard; diff --git a/diagramCavas/include/drawingPanel.h b/diagramCavas/include/drawingPanel.h index 1b4108d..23db4b6 100644 --- a/diagramCavas/include/drawingPanel.h +++ b/diagramCavas/include/drawingPanel.h @@ -21,7 +21,7 @@ public: protected: void closeEvent(QCloseEvent *closeEvent) override; public slots: - void onSignal_addGraphicsItem(modelStateInfo&); + void onSignal_addGraphicsItem(ModelStateInfo&); void onSignal_Generate(); //由基模组态生成工程模组态 private: ProjectDiagramNameInput* m_pDiagramNameInputer; diff --git a/diagramCavas/include/graphicsDataModel/baseModel.h b/diagramCavas/include/graphicsDataModel/baseModel.h index 8571ba0..39b9316 100644 --- a/diagramCavas/include/graphicsDataModel/baseModel.h +++ b/diagramCavas/include/graphicsDataModel/baseModel.h @@ -9,7 +9,8 @@ #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/types.h" class GraphicsBaseItem; class ItemPort; diff --git a/diagramCavas/include/graphicsDataModel/diagramEditorModel.h b/diagramCavas/include/graphicsDataModel/diagramEditorModel.h index bd06dad..de5fac2 100644 --- a/diagramCavas/include/graphicsDataModel/diagramEditorModel.h +++ b/diagramCavas/include/graphicsDataModel/diagramEditorModel.h @@ -2,6 +2,9 @@ /**组态编辑时的数据模型*/ #include "graphicsDataModel/baseModel.h" #include +#include +#include "common/core_model/diagram.h" +#include "common/core_model/topology.h" class GraphicsBaseModelItem; class DiagramEditorItemProperty; @@ -61,7 +64,7 @@ public: void generateItemByModel(QStandardItemModel* pModel,DiagramEditorBaseBlock* pBlock,int nFrom = 0,QPoint delta = QPoint(0,0)); //0间隔1变压器 QList generateItemByInfo(QMap mapRoute,QMap mapCompo,QPointF delta = QPointF(0,0),DiagramEditorBaseBlock* pParent = nullptr); //根据data生成item parent:生成的对象添加到parent下(非拓扑计算) - QMultiMap generateOutConnection(QList,QList&,int nTypeTransCon,int nPos = 0,DiagramEditorBaseBlock* pParent = nullptr); //生成外部连接(手动bind的连接)relation:层级关系引用 nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置 + QMultiMap generateOutConnection(QList,QList&,int nTypeTransCon,int nPos = 0,DiagramEditorBaseBlock* pParent = nullptr); //生成外部连接(手动bind的连接)relation:层级关系引用 nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置 QRectF updateTarget(QMap&,QMap&,int nLayout,int nSource,bool saveToModel = true); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器 regenerate重新生成标志 saveToModel:生成到模型或map void clearCompoDir(QMap&,QMap&,int nSource); //清空component中的dir(updateTarget前调用) @@ -70,7 +73,7 @@ public: QByteArray getWizardInfo(); //返回二进制wizard设置 void setWizardInfo(const QByteArray&); //二进制设置wizard signals: - void updateTopologyItems(QList,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级> + void updateTopologyItems(QList,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级> private: void bulidAndLinkComponent(QList,QMap,DiagramEditorBaseBlock* pParent = nullptr); //生成并连接线路上的设备 lst,mapComponents(从map中获取正确数据) QByteArray serializeWizardData(const DiagramEditorProjectInfo &data); //序列化eidtor向导设置数据 diff --git a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h index aa5b195..e04a1ef 100644 --- a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h +++ b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h @@ -9,6 +9,9 @@ #include #include +#include "common/frontend/monitor_item.h" +#include "common/backend/project_model.h" + class BaseDrawingPanel; class DrawingPanel; class GraphicsBaseItem; @@ -30,11 +33,12 @@ class GraphicsNonStandardItem; class BayProperty; class BayManagerDlg; class ModelProperty; -struct itemPageInfo; +struct ItemPageInfo; class EditBaseItem; class MonitorPanel; class ItemPropertyDlg; class BayMeasureDlg; +struct MeasurementInfo; class FixedPortsModel : public BaseModel, public Serializable { @@ -44,7 +48,7 @@ public: FixedPortsModel(PowerEntity*); ~FixedPortsModel(); public: - QMap allNodePos() const; + QMap allNodePos() const; QVector allConnectionProperty(); QMap& allItems(); bool addNodeItem(QUuid uuid,GraphicsProjectModelItem*); @@ -106,12 +110,12 @@ public: QJsonObject turnListToJson(QList lst,QString sInerTag,QString sOutTag); //将list转换为QJsonObject, QList turnJsonArrToList(QJsonObject obj,QString sInner,QString sOut); /*************************监控(运行时)**************************/ - void generateMonitor(QString,QList); //生成监控 (监控名,选中的设备列表) + void generateMonitor(QString,QList); //生成监控 (监控名,选中的设备列表) void generateMonitorConfig(MonitorPanel*); //生成监控配置参数结构 - void setMonitorPara(QMap> map){m_monitorPara = map;} - QMap>& getMonitorPara() {return m_monitorPara;} - void setMonitorRelation(QList lst){m_lstMonitorRelation = lst;} - QList getMonitorRelation() {return m_lstMonitorRelation;} + void setMonitorPara(QMap> map){m_monitorPara = map;} + QMap>& getMonitorPara() {return m_monitorPara;} + void setMonitorRelation(QList lst){m_lstMonitorRelation = lst;} + QList getMonitorRelation() {return m_lstMonitorRelation;} void monitorItemSelected(QUuid); //运行时item选中事件 void monitorItemDetailAttr(QUuid); //显示属性详情 @@ -122,21 +126,21 @@ public: void startAcceptData(); //开始接收实时数据 void stopAcceptData(QString); //停止接收实时数据 - QMap>>& getMonitorStateMap(){return m_monitorStateMap;} - void setMonitorDisplaySetting(QMap> map){m_monitorDisplaySetting = map;} - QMap>& getMonitorDisplaySetting(){return m_monitorDisplaySetting;} + QMap>>& getMonitorStateMap(){return m_monitorStateMap;} + void setMonitorDisplaySetting(QMap> map){m_monitorDisplaySetting = map;} + QMap>& getMonitorDisplaySetting(){return m_monitorDisplaySetting;} /************************数据显示*************************/ void setCurItemPropertyDlg(ItemPropertyDlg* p) {m_curPropertyDlg = p;} ItemPropertyDlg* getCurItemPropertyDlg() {return m_curPropertyDlg;} Q_SIGNALS: void activatePage(const QString&); //激活当前model所在page - void updateCurrentItems(QList,bool); //更新当前组态元件列表 <连接关系,是否刷新> - void itemSelected(QList); //发送选中的元件 + void updateCurrentItems(QList,bool); //更新当前组态元件列表 <连接关系,是否刷新> + void itemSelected(QList); //发送选中的元件 void monitorCreated(QString,QPair); //监控创建信号 <工程page,<监控page,page_uid>> - void monitorItems(QList); //发送创建成功的Items + void monitorItems(QList); //发送创建成功的Items void dataUpdated(); //数据更新通知 - void updateTopologyItems(QList,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级> + void updateTopologyItems(QList,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级> void notifyUpdateMonitorTopology(QList); //使用列表中的item id更新总拓扑 public: void setPageName(QString s) {_pageName = s;} //设置表名称 @@ -159,7 +163,7 @@ public Q_SLOTS: void onDataTimerOut(); void onSelectionChanged(); private: - void addPortsToItem_json(PortState,QJsonArray,GraphicsProjectModelItem*); //将json格式的port添加到item + void addPortsToItem_json(PortState,QJsonArray,GraphicsBaseItem*); //将json格式的port添加到item void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置,将projectName更新到item QString removeSuffix(const QString& str); //移除最后一个下划线后的内容 (处理各种tag后缀) ModelProperty* getItemByUid(QList,QUuid); //返回uid对应的data @@ -181,15 +185,15 @@ private: PowerEntity* _pEntity; //拓扑实体 QMap _projectModelName; //该图中所有元件对应的工程模类型(todo:扩展为每张图独立的结构体) uuid,工程模名称 - QMap _modelStateInfo; //模型结构信息 - QMap _modelDataInfo; //模型数据信息 + QMap _modelStateInfo; //模型结构信息 + QMap _modelDataInfo; //模型数据信息 ProjectModelSetting* m_proModelSettingDlg; ProjectIconSetting* m_projectIconSettingDlg; BayManagerDlg* m_pBayManager; - QMap> m_monitorPara; //监控参数 - QMap>> m_monitorStateMap; //元件状态对照表 > - QMap> m_monitorDisplaySetting; //元件设置 - QList m_lstMonitorRelation; //监控item层级关系 + QMap> m_monitorPara; //监控参数 + QMap>> m_monitorStateMap; //元件状态对照表 > + QMap> m_monitorDisplaySetting; //元件设置 + QList m_lstMonitorRelation; //监控item层级关系 ItemPropertyDlg* m_curPropertyDlg; QTimer* m_dataTimer; //获取数据的定时器 diff --git a/diagramCavas/include/graphicsItem/electricSvgGroup.h b/diagramCavas/include/graphicsItem/electricSvgGroup.h index 559e6ef..01f54d9 100644 --- a/diagramCavas/include/graphicsItem/electricSvgGroup.h +++ b/diagramCavas/include/graphicsItem/electricSvgGroup.h @@ -19,13 +19,13 @@ public: void move(const QPointF&) override; virtual void addSvgItem(ElectricSvgItem* item); virtual void updateMapSvg(QMap map,QString sIndex = ""); //工程模property不含图片,额外存储 - virtual void setMonitorDisplayInfo(QMap info) override; //将显示数据更新到子item中 + virtual void setMonitorDisplayInfo(QMap info) override; //将显示数据更新到子item中 protected: virtual QPainterPath shape() override; virtual void editShape(int, const QPointF&) override; virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; protected: - virtual void updateCurState(monitorItemState e) override; + virtual void updateCurState(MonitorItemState e) override; protected: QRectF m_lastBoudingRect; //记录上一时刻的boundingRect QMap m_mapSvg; diff --git a/diagramCavas/include/graphicsItem/electricSvgItem.h b/diagramCavas/include/graphicsItem/electricSvgItem.h index b05d150..6c67704 100644 --- a/diagramCavas/include/graphicsItem/electricSvgItem.h +++ b/diagramCavas/include/graphicsItem/electricSvgItem.h @@ -18,7 +18,7 @@ public: virtual void loadSvg(){}; virtual void loadSvg(QByteArray); //第二种load直接加载图片 virtual void updateMapSvg(QMap map,QString sIndex = ""); //index:空全部更新 - virtual void updateCurState(monitorItemState e) override; + virtual void updateCurState(MonitorItemState e) override; protected: virtual QPainterPath shape() override; virtual void editShape(int, const QPointF&) override; diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.h new file mode 100644 index 0000000..39ec691 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.h @@ -0,0 +1,95 @@ +#ifndef ELECTRICFUNCTIONMODELCONNECTLINEITEM_H +#define ELECTRICFUNCTIONMODELCONNECTLINEITEM_H + +#include +#include +#include "graphicsFunctionModelItem.h" + +class ElectricFunctionModelConnectLineItem : public GraphicsFunctionModelItem +{ +public: + enum UShapeType { + UShape_Unknown, + UShape_TopOpen, // 开口向上 + UShape_BottomOpen, // 开口向下 + UShape_LeftOpen, // 开口向左 + UShape_RightOpen // 开口向右 + }; +public: + ElectricFunctionModelConnectLineItem(QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelConnectLineItem(); + + void setStartPoint(const QPointF& p); + void setEndPoint(const QPointF& p); + QPainterPath getPoints(void) const { return m_points; } + + void startDrag(const QPointF& scenePos); + void updateDrag(const QPointF& scenePos); + void endDrag(); + void setLastPoint(const QPointF& point); + void setPath(const QPainterPath& path); + QPainterPath path() const; + + void resetCurLine(){_curLine = QPoint();} + void calculatePath(); + + virtual QPainterPath shape() const override; + virtual QRectF boundingRect() const override; + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; + +protected: + void initial(); +private: + //路径计算相关 + void generateAvoidancePath(const QPointF& start, const QPointF& end,const QList& obstacleShapes); // 使用形状进行避障 + double calculatePathLength(const QList& path); + bool lineIntersectsRect(const QLineF& line, const QRectF& rect) const; + bool isSegmentSafe(const QPointF& p1, const QPointF& p2,const QList& components); + bool isPathSafe(const QList& path,const QList& components); + bool segmentPenetratesComponent(const QLineF& segment,const QRectF& component); + QRectF getTotalComponentsBounds(const QList& components); + void collectRectilinearPaths(const QPointF& start, const QPointF& end,const QList& components,QMultiMap>& paths); + void addPathIfRectilinear(const QList& path,QMultiMap>& paths); + void collectBypassPaths(const QPointF& start, const QPointF& end,const QList& components,QMultiMap>& paths); + void generateForcedRectilinearBypass(const QPointF& start, const QPointF& end,const QList& components); + QRectF findFirstBlockingComponent(const QPointF& start, const QPointF& end,const QList& components); + + //线段拖拽相关 + double distancePointToLine(const QLineF& line, const QPointF& point) const; + void ensureEnoughPointsForDrag(); + void debugPathState(const QString& context) const; + + QVector extractSegmentsFromPainterPath() const; + void collectBoundaryBypassPaths(const QPointF& start, const QPointF& end,const QList& obstacles,QMultiMap>& paths); + void collectBoundaryPath(const QPointF& start, const QPointF& end,const QList& obstacles,QMultiMap>& paths,const QRectF& bounds, bool useTop); + QRectF getSceneBounds() const; + QList generateForcedBypass(const QPointF& start, const QPointF& end,const QList& components); + + // 拖拽实现 + int findSegmentAt(const QList& points,const QPointF& itemPos) const; + double distanceToSegment(const QLineF& segment, const QPointF& point) const; + void fixConnections(int segmentIndex, bool isVertical); + QList extractPointsFromPath() const; + QList extractPointsFromPath(const QPainterPath& path) const; + void applyPointsToPath(const QList& points); + void fixConnections(QList& points, int segmentIndex, bool isVertical); + void validateAndFixPath(); + void updateBoundingRect(); + +private: + QPainterPath m_points; + QList m_lstPoints; + QPoint _curLine; //参数1用点序号表示的当前线段起始点,参数2表示线段方向 + + struct DragState { + bool isActive = false; + int segmentIndex = -1; + bool isVertical = false; + QPointF startScenePos; + QPainterPath originalPath; + }; + + DragState m_dragData; +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelPortItem.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelPortItem.h new file mode 100644 index 0000000..368dce6 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelPortItem.h @@ -0,0 +1,24 @@ +#ifndef ELECTRICFUNCTIONMODELPORTITEM_H +#define ELECTRICFUNCTIONMODELPORTITEM_H + +#include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h" + +//node节点 +class ElectricFunctionModelPortItem :public GraphicsFunctionModelItem +{ + Q_OBJECT +public: + ElectricFunctionModelPortItem(QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelPortItem(); + + void addPort(); +public: + virtual void updateConnectData() override; +protected: + virtual QRectF boundingRect() const override; + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.h new file mode 100644 index 0000000..5ddf464 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.h @@ -0,0 +1,26 @@ +#ifndef ELECTRICFUNCTIONMODELSVGGROUPCT_H +#define ELECTRICFUNCTIONMODELSVGGROUPCT_H + +#include "graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h" + +class ElectricFunctionModelSvgGroupCT :public ElectricFunctionModelSvgGroup +{ + Q_OBJECT +public: + ElectricFunctionModelSvgGroupCT(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgGroupCT(); + virtual void setupFinish(QVariant) override; + virtual void updateItem() override; + void setCtType(int n){_nType = n;} + void setCtSize(int n){_nSize = n;} + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +protected: + int _nType = 0; //Ct类型 1三相0零相 + int _nSize = 0; //ct个数 +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.h new file mode 100644 index 0000000..7f17f4f --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.h @@ -0,0 +1,25 @@ +#ifndef ELECTRICFUNCTIONMODELSVGGROUPPT_H +#define ELECTRICFUNCTIONMODELSVGGROUPPT_H + +#include "graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h" + +class ElectricFunctionModelSvgGroupPT :public ElectricFunctionModelSvgGroup +{ + Q_OBJECT +public: + ElectricFunctionModelSvgGroupPT(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgGroupPT(); + virtual void setupFinish(QVariant) override; + virtual void updateItem() override; + virtual void updateLayout() override; + QList& getLstType() {return m_lstType;} + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +protected: + QList m_lstType; //绕组类型 1星型 0三角 +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h new file mode 100644 index 0000000..6778619 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h @@ -0,0 +1,30 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEM_H +#define ELECTRICFUNCTIONMODELSVGITEM_H + +#include "graphicsFunctionModelItem.h" + +class ElectricFunctionModelSvgItem :public GraphicsFunctionModelItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItem(const QRect &rect, bool genNewPort = true,QGraphicsItem *parent = 0); //genNewPort生成新接线点 + virtual ~ElectricFunctionModelSvgItem(); + void resize(int,double, double, const QPointF&) override; + void updateCoordinate() override; + void move(const QPointF&) override; + virtual void loadSvg(){}; + virtual void loadSvg(QByteArray); //第二种load直接加载图片 + virtual void updateMapSvg(QMap map,QString sIndex = ""); //index:空全部更新 + virtual void updateCurState(MonitorItemState e) override; +protected: + virtual QPainterPath shape() override; + virtual void editShape(int, const QPointF&) override; + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +protected: + QRectF m_lastBoudingRect; //记录上一时刻的boundingRect + QSvgRenderer* m_pRender; //默认 + QSvgRenderer* m_pCustomRender; //定制 + QMap m_mapSvg; + QByteArray _tempSvg; //保存直接加载的svg数据 +}; +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.h new file mode 100644 index 0000000..df6f7b6 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.h @@ -0,0 +1,20 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEM2WTRANSFORMER_H +#define ELECTRICFUNCTIONMODELSVGITEM2WTRANSFORMER_H + +/*************两绕组变压器***********/ +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItem2wTransformer :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItem2wTransformer(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItem2wTransformer(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.h new file mode 100644 index 0000000..3b7bdad --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.h @@ -0,0 +1,20 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEM3WTRANSFORMER_H +#define ELECTRICFUNCTIONMODELSVGITEM3WTRANSFORMER_H + +/*************三绕组变压器***********/ +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItem3wTransformer :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItem3wTransformer(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItem3wTransformer(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.h new file mode 100644 index 0000000..728c32e --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.h @@ -0,0 +1,23 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMBUS_H +#define ELECTRICFUNCTIONMODELSVGITEMBUS_H + +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemBus :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemBus(const QRect &rect, QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemBus(); + virtual void setImage_1(QFileInfo) override; + void addPort(); +public: + virtual void updateConnectData() override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; + virtual void updateHandles() override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.h new file mode 100644 index 0000000..1911038 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.h @@ -0,0 +1,22 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMCB_H +#define ELECTRICFUNCTIONMODELSVGITEMCB_H + +/*****************断路器*******************/ +#include "electricFunctionModelSvgItem.h" + + +class ElectricFunctionModelSvgItemCB :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemCB(const QRect &rect, bool genNewPort = true,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemCB(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; + virtual void updateHandles() override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.h new file mode 100644 index 0000000..0614731 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.h @@ -0,0 +1,21 @@ +#ifndef ELECTRICSVGITEMCT_H +#define ELECTRICSVGITEMCT_H + +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemCT :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemCT(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemCT(); + void setItemType(int n){_itemType = n;} +private: + void initial(); +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; + + int _itemType = 0; //1三相0零相 +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.h new file mode 100644 index 0000000..75d252c --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.h @@ -0,0 +1,20 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMCABLEEND_H +#define ELECTRICFUNCTIONMODELSVGITEMCABLEEND_H + +/*****************电缆端*******************/ +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemCableEnd :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemCableEnd(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemCableEnd(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.h new file mode 100644 index 0000000..d20fb52 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.h @@ -0,0 +1,20 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMCABLETER_H +#define ELECTRICFUNCTIONMODELSVGITEMCABLETER_H + +/*****************电缆出线套筒*******************/ +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemCableTer :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemCableTer(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemCableTer(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.h new file mode 100644 index 0000000..cbe248b --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.h @@ -0,0 +1,19 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMDS_H +#define ELECTRICFUNCTIONMODELSVGITEMDS_H + +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemDS :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemDS(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemDS(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.h new file mode 100644 index 0000000..bdf6f2c --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.h @@ -0,0 +1,20 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMDTEDS_H +#define ELECTRICFUNCTIONMODELSVGITEMDTEDS_H + +/**********双掷接地隔离开关*********/ +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemDTEDS:public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemDTEDS(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemDTEDS(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void inital(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.h new file mode 100644 index 0000000..44ead31 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.h @@ -0,0 +1,19 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMES_H +#define ELECTRICFUNCTIONMODELSVGITEMES_H + +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemES :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemES(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemES(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.h new file mode 100644 index 0000000..1e77f9e --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.h @@ -0,0 +1,19 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMFES_H +#define ELECTRICFUNCTIONMODELSVGITEMFES_H + +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemFES :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemFES(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemFES(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.h new file mode 100644 index 0000000..443e4eb --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.h @@ -0,0 +1,20 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMLA_H +#define ELECTRICFUNCTIONMODELSVGITEMLA_H + +/***********避雷器************/ +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemLA :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemLA(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemLA(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.h new file mode 100644 index 0000000..4a3ed29 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.h @@ -0,0 +1,20 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMPI_H +#define ELECTRICFUNCTIONMODELSVGITEMPI_H + +/*************带点指示器***************/ +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemPI :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemPI(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemPI(); + virtual void setImage_1(QFileInfo) override; +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h new file mode 100644 index 0000000..63d5ce2 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h @@ -0,0 +1,21 @@ +#ifndef ELECTRICFUNCTIONMODELSVGITEMPT_H +#define ELECTRICFUNCTIONMODELSVGITEMPT_H + +#include "electricFunctionModelSvgItem.h" + +class ElectricFunctionModelSvgItemPT :public ElectricFunctionModelSvgItem +{ + Q_OBJECT +public: + ElectricFunctionModelSvgItemPT(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgItemPT(); + void setItemType(int n){_itemType = n;} +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); + + int _itemType = 0; //1星型 0三角 +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelItem.h b/diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelItem.h new file mode 100644 index 0000000..384d3cd --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelItem.h @@ -0,0 +1,41 @@ +#ifndef GRAPHICSFUNCTIONMODELITEM_H +#define GRAPHICSFUNCTIONMODELITEM_H + +#include "../graphicsBaseItem.h" + +class GraphicsFunctionModelItem : public GraphicsProjectModelItem //功能模item +{ + Q_OBJECT +public: + GraphicsFunctionModelItem(QGraphicsItem *parent); + virtual ~GraphicsFunctionModelItem(); +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +}; + + +class GraphicsFunctionModelGroup : public GraphicsFunctionModelItem //功能模group +{ + Q_OBJECT +public: + GraphicsFunctionModelGroup(QGraphicsItem *parent); + virtual ~GraphicsFunctionModelGroup(); + virtual void addItem(GraphicsFunctionModelItem* item); + virtual void updateLayout(); + virtual void setLayout(int n) {m_direction = n;} + virtual void setGroupType(int n) {_groupType = n;} + virtual int getGroupType() {return _groupType;} + virtual void setSpacing(qreal spacing) { + if (m_spacing != spacing) { + m_spacing = spacing; + updateLayout(); + } + } + QRectF updateBoundRect(); +protected: + QList m_childItems; + int m_direction = 1; //组内布局,0横1纵 + int m_spacing = 0; //间距 + int _groupType = 0; //组类型,0联合(子item独立连接),1聚合(子item仅作展示) +}; +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h b/diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h new file mode 100644 index 0000000..f9227a3 --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h @@ -0,0 +1,32 @@ +#ifndef ELECTRICFUNCTIONMODELSVGGROUP_H +#define ELECTRICFUNCTIONMODELSVGGROUP_H + +#include "graphicsFunctionModelItem.h" +#include + +class ElectricFunctionModelSvgItem; + +class ElectricFunctionModelSvgGroup :public GraphicsFunctionModelGroup +{ + Q_OBJECT +public: + ElectricFunctionModelSvgGroup(const QRect &rect,QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelSvgGroup(); + void resize(int,double, double, const QPointF&) override; + void updateCoordinate() override; + void move(const QPointF&) override; + virtual void addSvgItem(ElectricFunctionModelSvgItem* item); + virtual void updateMapSvg(QMap map,QString sIndex = ""); //工程模property不含图片,额外存储 + virtual void setMonitorDisplayInfo(QMap info) override; //将显示数据更新到子item中 +protected: + virtual QPainterPath shape() override; + virtual void editShape(int, const QPointF&) override; + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +protected: + virtual void updateCurState(MonitorItemState e) override; +protected: + QRectF m_lastBoudingRect; //记录上一时刻的boundingRect + QMap m_mapSvg; +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/graphicsBaseItem.h b/diagramCavas/include/graphicsItem/graphicsBaseItem.h index e3a68f6..68dfa44 100644 --- a/diagramCavas/include/graphicsItem/graphicsBaseItem.h +++ b/diagramCavas/include/graphicsItem/graphicsBaseItem.h @@ -2,7 +2,11 @@ #define GRAPHICSBASEITEM_H #include "itemControlHandle.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/types.h" +#include "common/core_model/topology.h" +#include "common/frontend/graphics_items.h" +#include "common/frontend/monitor_item.h" #include #include @@ -602,11 +606,6 @@ public: virtual void setLabelTag(const QString& name); //设置名字牌 virtual QString getLabelTag() const; - virtual void setLabelCurrent(const QString& str); //设置电流标签 - virtual QString getLabelCurrent() const; - virtual void setLabelVoltage(const QString& str); //设置电压标签 - virtual QString getLabelVoltage() const; - //virtual void addPort(PortState typ,int ntagId,QPointF vec); //载入 PortState为P_const时,QPointF中为(0~1,0~1)的相对位置;PortState为p_movable时,QPointF为坐标值 virtual void setState(ItemState s){m_state = s;} virtual void setBeginConnectPos(QPointF p){m_beginConnectPoint = p;} virtual void setEndConnectPos(QPointF p){m_endConnectPoint = p;} @@ -620,9 +619,10 @@ public: virtual void setupFinish(QVariant){} //设置完成后调用(如ct,pt) virtual void updateItem(){}; //更新自身(如ct,pt) virtual void updateTerPos(); //ct,pt等item大小变动后重新计算端点位置 - virtual void setCurMonitorState(monitorItemState sta) {_curMonitorState = sta;} //设置当前运行时模式 - virtual void setMonitorDisplayInfo(QMap info){_displaySetting = info;} - virtual void updateCurState(monitorItemState e){ //更新当前显示模式(运行时) + + virtual void setCurMonitorState(MonitorItemState sta) {_curMonitorState = sta;} //设置当前运行时模式 + virtual void setMonitorDisplayInfo(QMap info){_displaySetting = info;} + virtual void updateCurState(MonitorItemState e){ //更新当前显示模式(运行时) if(ifStateExist(e)){ _curMonitorState = e; auto info = getInfoByState(e); @@ -643,7 +643,7 @@ signals: public slots: void onEditNameFinish(const QString&); protected: - bool ifStateExist(monitorItemState sta){ //判断指定状态存在 + bool ifStateExist(MonitorItemState sta){ //判断指定状态存在 for(auto iter = _displaySetting.begin();iter != _displaySetting.end();++iter){ if(iter.key().eState == sta){ return true; @@ -651,13 +651,13 @@ protected: } return false; } - monitorItemDisplayInfo getInfoByState(monitorItemState sta){ //返回指定状态设置值 + MonitorItemDisplayInfo getInfoByState(MonitorItemState sta){ //返回指定状态设置值 for(auto iter = _displaySetting.begin();iter != _displaySetting.end();++iter){ if(iter.key().eState == sta){ return iter.value(); } } - return monitorItemDisplayInfo(); + return MonitorItemDisplayInfo(); } protected: ItemState m_state; @@ -665,11 +665,12 @@ protected: QPointF m_endConnectPoint; int _lastPort; //最后触碰的port QString _modelName; //当前图元使用的模型名,用来在model中检索属性信息 - monitorItemState _curMonitorState; //当前运行时模式 + + MonitorItemState _curMonitorState; //当前运行时模式 QColor _curMonitorStateColor; QByteArray _curMonitorStateSvg; bool _curMonitorStateEnable; - QMap _displaySetting; //显示设置 + QMap _displaySetting; //显示设置 DataSourceType _sourceType; }; diff --git a/diagramCavas/include/graphicsItem/itemControlHandle.h b/diagramCavas/include/graphicsItem/itemControlHandle.h index bc51bb5..ff30d7e 100644 --- a/diagramCavas/include/graphicsItem/itemControlHandle.h +++ b/diagramCavas/include/graphicsItem/itemControlHandle.h @@ -2,7 +2,8 @@ #define ITEMCONTROLHANDLE_H #include -#include "global.h" +//#include "global.h" +#include "common/core_model/topology.h" const int HNDLE_SIZE = 8; diff --git a/diagramCavas/include/itemPropertyDlg.h b/diagramCavas/include/itemPropertyDlg.h index 368f467..25b6ec8 100644 --- a/diagramCavas/include/itemPropertyDlg.h +++ b/diagramCavas/include/itemPropertyDlg.h @@ -5,7 +5,9 @@ #include #include #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" +#include "common/core_model/data_transmission.h" QT_BEGIN_NAMESPACE namespace Ui { class itemPropertyDlg; } @@ -23,9 +25,9 @@ public: ~ItemPropertyDlg(); void initial(); - void loadGroupButton(QMap); //加载属性组列表 + void loadGroupButton(QMap); //加载属性组列表 void createGroupView(const QString&); //创建属性页 - void showDlg(modelDataInfo,QUuid,GraphicsProjectModelItem*); //显示属性页面 + void showDlg(ModelDataInfo,QUuid,GraphicsProjectModelItem*); //显示属性页面 void setModelController(FixedPortsModel* p) {_curModelController = p;} auto getModelController() {return _curModelController;} auto getCurItem() {return _curItem;} @@ -44,8 +46,8 @@ private: QMap btnMap_; QMap groupViews_; //stack中存储的属性页 - QMap groupInfo_; //属性组结构信息 - QMap groupValue_; //属性数据 + QMap groupInfo_; //属性组结构信息 + QMap groupValue_; //属性数据 QUuid curUuid_; //当前显示对象的uuid QString _curModel; //当前模型名 GraphicsProjectModelItem* _curItem; diff --git a/diagramCavas/include/measureSettingDlg.h b/diagramCavas/include/measureSettingDlg.h index 4eab9d8..d1b21e5 100644 --- a/diagramCavas/include/measureSettingDlg.h +++ b/diagramCavas/include/measureSettingDlg.h @@ -3,7 +3,9 @@ #include #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" +#include "common/core_model/data_transmission.h" /******************************************************* 间隔信息 ********************************************************/ @@ -25,8 +27,8 @@ public: void setParentType(int n) {_nParentType = n;} void setBayComponent(BayInfoDlg* p) {_pBayComponent = p;} void setBayMeasure(BayMeasureDlg* p) {_pBayMeasure = p;} - void showDlg(int type,propertyStateInfo,bool isDouble = false); - void showDlg(MeasurementInfo,propertyStateInfo,bool isDouble = false,MeasurementInfo symmetryInfo = MeasurementInfo()); //修改 + void showDlg(int type,PropertyStateInfo,bool isDouble = false); + void showDlg(MeasurementInfo,PropertyStateInfo,bool isDouble = false,MeasurementInfo symmetryInfo = MeasurementInfo()); //修改 public slots: void onOkClicked(); void onCancelClicked(); diff --git a/diagramCavas/include/monitorAttributeDlg.h b/diagramCavas/include/monitorAttributeDlg.h index 0e68edf..7b7717c 100644 --- a/diagramCavas/include/monitorAttributeDlg.h +++ b/diagramCavas/include/monitorAttributeDlg.h @@ -8,7 +8,7 @@ class MonitorToolBox; class MonitorAttributeGroupDlg; class MonitorSideBarDlg; -struct monitorItemAttributeInfo; +struct MonitorItemAttributeInfo; class MonitorAttributeDlg : public QDialog { diff --git a/diagramCavas/include/monitorAttributeGroupDlg.h b/diagramCavas/include/monitorAttributeGroupDlg.h index 559ad7b..70aed02 100644 --- a/diagramCavas/include/monitorAttributeGroupDlg.h +++ b/diagramCavas/include/monitorAttributeGroupDlg.h @@ -6,7 +6,7 @@ #include class MonitorAttributeDlg; -struct monitorItemAttributeInfo; +struct MonitorItemAttributeInfo; class QChartView; class QLabel; class FixedPortsModel; @@ -20,14 +20,14 @@ public: ~MonitorAttributeGroupDlg(); void initial(); - void createGroupView(QList,int nType = 0); //0小型 1中型 + void createGroupView(QList,int nType = 0); //0小型 1中型 void setParent(MonitorAttributeDlg* p) {_pParent = p;} void setDetailParent(MonitorDetailAttributeDlg* p){_pDetailParent = p;} void setCurMode(int n) {_curMode = n;} public slots: void updateData(); //使用数据更新当前界面 private: - QWidget* createEditor(monitorItemAttributeInfo,int nType = 0); //nType:0小 1中 + QWidget* createEditor(MonitorItemAttributeInfo,int nType = 0); //nType:0小 1中 void updateLineChartData(QChartView* chartView, const QVector& data); FixedPortsModel* getModelController(); QUuid getCurUid(); diff --git a/diagramCavas/include/monitorConfigDlg.h b/diagramCavas/include/monitorConfigDlg.h index a7f7645..4897edd 100644 --- a/diagramCavas/include/monitorConfigDlg.h +++ b/diagramCavas/include/monitorConfigDlg.h @@ -13,7 +13,7 @@ class MonitorPanel; class QItemSelection; class QStandardItemModel; class QStandardItem; -struct monitorItemAttributeInfo; +struct MonitorItemAttributeInfo; class QCompleter; class QStringListModel; @@ -46,7 +46,7 @@ private: private: Ui::monitorConfigDlg *ui; MonitorPanel* _parent; - QMap> _tempConfig; + QMap> _tempConfig; QStandardItemModel* _curItemModel; QUuid _curUuid; QStringList _curRecommandLst; //当前推荐列表 diff --git a/diagramCavas/include/monitorDisplaySettingDlg.h b/diagramCavas/include/monitorDisplaySettingDlg.h index eaf1599..809c30a 100644 --- a/diagramCavas/include/monitorDisplaySettingDlg.h +++ b/diagramCavas/include/monitorDisplaySettingDlg.h @@ -3,7 +3,8 @@ /*******************监控图元设置界面**********************/ #include -#include "global.h" +//#include "global.h" +#include "common/frontend/monitor_item.h" QT_BEGIN_NAMESPACE namespace Ui { class monitorDisplaySettingDlg; } @@ -30,7 +31,7 @@ public slots: void onStateComboBoxChanged(const QString&); private: - void loadSetting(monitorItemTypeStruct type, monitorItemStateStruct state); + void loadSetting(MonitorItemTypeStruct type, MonitorItemStateStruct state); bool saveCurrentSettingsWithIcon(); void loadFirstStateSafely(); @@ -45,12 +46,12 @@ private: private: Ui::monitorDisplaySettingDlg *ui; MonitorPanel* _parent; - monitorItemTypeStruct _curType; //当前类型 - monitorItemStateStruct _curState; //当前状态 + MonitorItemTypeStruct _curType; //当前类型 + MonitorItemStateStruct _curState; //当前状态 QColor _curColor; QString _curMeta; QString _curModel; - QMap> _tempSetting; + QMap> _tempSetting; }; diff --git a/diagramCavas/include/monitorPanel.h b/diagramCavas/include/monitorPanel.h index f42a03e..3426316 100644 --- a/diagramCavas/include/monitorPanel.h +++ b/diagramCavas/include/monitorPanel.h @@ -26,7 +26,7 @@ public: void setParentPage(const QString& str) {_sParentPage = str;} QString getParentPage() {return _sParentPage;} - void updateSelectedItems(QList,bool); + void updateSelectedItems(QList,bool); QStandardItemModel* getLstModel() {return _itemListmodel;} void initMonitorConfig(); //初始化参数设置(每个运行时可能不同) @@ -39,14 +39,14 @@ public: MonitorConfigDlg* getMonitorConfigDlg() {return _pConfigDlg;} public: //对层级关系的序列化与反序列化 - QJsonArray serializeRelationToJsonArray(const QList& data) const; - bool deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList& result); + QJsonArray serializeRelationToJsonArray(const QList& data) const; + bool deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList& result); //对para的序列化与反序列化 - QJsonArray serializeParaToJsonArray(const QMap>& data) const; - bool deserializeParaFromJsonArray(const QJsonArray& jsonArray,QMap>& result); + QJsonArray serializeParaToJsonArray(const QMap>& data) const; + bool deserializeParaFromJsonArray(const QJsonArray& jsonArray,QMap>& result); //对displaySetiing的序列化与反序列化 - QJsonArray serializeDisplayToJsonArray(const QMap>& data) const; - void deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,QMap>& result); + QJsonArray serializeDisplayToJsonArray(const QMap>& data) const; + void deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,QMap>& result); public slots: void onRunClicked(); void onStopClicked(); diff --git a/diagramCavas/include/monitorSelectedItemsDlg.h b/diagramCavas/include/monitorSelectedItemsDlg.h index 34591df..1e67fbc 100644 --- a/diagramCavas/include/monitorSelectedItemsDlg.h +++ b/diagramCavas/include/monitorSelectedItemsDlg.h @@ -5,7 +5,6 @@ #include #include -struct RelationItem; class MonitorSideBarDlg; class QVBoxLayout; diff --git a/diagramCavas/include/powerConnection.h b/diagramCavas/include/powerConnection.h index 496f18e..2008cab 100644 --- a/diagramCavas/include/powerConnection.h +++ b/diagramCavas/include/powerConnection.h @@ -5,7 +5,8 @@ * *************************/ #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/topology.h" // 连接线元数据(抽象连接关系) class PowerConnection : public QObject { diff --git a/diagramCavas/include/powerEntity.h b/diagramCavas/include/powerEntity.h index 33f016d..f1e5e18 100644 --- a/diagramCavas/include/powerEntity.h +++ b/diagramCavas/include/powerEntity.h @@ -7,7 +7,7 @@ #include #include "powerTerminal.h" #include "topologyManager.h" -#include "global.h" +//#include "global.h" class PowerTerminal; diff --git a/diagramCavas/include/propertyContentDlg.h b/diagramCavas/include/propertyContentDlg.h index 72981df..85571ba 100644 --- a/diagramCavas/include/propertyContentDlg.h +++ b/diagramCavas/include/propertyContentDlg.h @@ -4,7 +4,7 @@ #include #include #include -#include "global.h" +//#include "global.h" #include "baseContentDlg.h" /******************************************************* 每个属性组单独的界面信息,动态生成后加入到itemPropertyDlg @@ -18,15 +18,15 @@ public: PropertyContentDlg(QWidget *parent = nullptr); ~PropertyContentDlg(); - virtual void createGroupView(groupStateInfo); //创建页面 - virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 + virtual void createGroupView(GroupStateInfo); //创建页面 + virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 //void setPropertyValue(QMap); virtual void setPropertyValue(QVariant); protected: QVBoxLayout* _layout; - QWidget* createEditor(propertyStateInfo); //创建属性 + QWidget* createEditor(PropertyStateInfo); //创建属性 private: - QMap _curValue; + QMap _curValue; }; #endif diff --git a/diagramCavas/include/ptExtraInfoDlg.h b/diagramCavas/include/ptExtraInfoDlg.h index 51fab8b..c1edd75 100644 --- a/diagramCavas/include/ptExtraInfoDlg.h +++ b/diagramCavas/include/ptExtraInfoDlg.h @@ -3,7 +3,7 @@ #include #include "baseContentDlg.h" -#include "global.h" +//#include "global.h" /******************************************************* 扩展信息界面 ********************************************************/ @@ -21,8 +21,8 @@ class PtExtraInfoDlg : public BaseContentDlg public: PtExtraInfoDlg(QWidget *parent = nullptr); virtual ~PtExtraInfoDlg(); - virtual void createGroupView(groupStateInfo); - virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 + virtual void createGroupView(GroupStateInfo); + virtual QMap getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值 virtual void setPropertyValue(QVariant); public slots: void onAddClicked(); diff --git a/diagramCavas/include/structDataMeasurementModel.h b/diagramCavas/include/structDataMeasurementModel.h index 04efca2..33de5d6 100644 --- a/diagramCavas/include/structDataMeasurementModel.h +++ b/diagramCavas/include/structDataMeasurementModel.h @@ -4,10 +4,10 @@ * 结构预览ui的量测类型model * */ #include +#include "common/core_model/topology.h" class StructDataSource; struct MeasurementInfo; -struct ExtraProperty; class StructDataMeasurementModel : public QAbstractTableModel { diff --git a/diagramCavas/include/structDataPropertyModel.h b/diagramCavas/include/structDataPropertyModel.h index 2ed6fd9..9486b52 100644 --- a/diagramCavas/include/structDataPropertyModel.h +++ b/diagramCavas/include/structDataPropertyModel.h @@ -5,10 +5,10 @@ * */ #include +#include "common/core_model/topology.h" class StructDataSource; -struct ExtraProperty; -struct propertyStateInfo; +struct PropertyStateInfo; class StructDataPropertyModel : public QAbstractTableModel { @@ -68,7 +68,7 @@ private: QVariant getPropertyData(const ExtraProperty& prop, int col) const; - bool updatePropertyData(propertyStateInfo* data, int col, const QVariant& value); + bool updatePropertyData(PropertyStateInfo* data, int col, const QVariant& value); private: StructDataSource* m_dataManager = nullptr; diff --git a/diagramCavas/include/topologyManager.h b/diagramCavas/include/topologyManager.h index f3f9940..325c996 100644 --- a/diagramCavas/include/topologyManager.h +++ b/diagramCavas/include/topologyManager.h @@ -7,7 +7,8 @@ #include #include "powerConnection.h" #include "powerTerminal.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/types.h" class PowerEntity; class BaseProperty; diff --git a/diagramCavas/include/util/creatingSelector.h b/diagramCavas/include/util/creatingSelector.h index 38567e7..5e56173 100644 --- a/diagramCavas/include/util/creatingSelector.h +++ b/diagramCavas/include/util/creatingSelector.h @@ -10,7 +10,7 @@ #define CREATINGSELECTOR_H #include "baseSelector.h" -#include "global.h" +//#include "global.h" enum CreatingMethod @@ -35,10 +35,10 @@ public: virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*, DesignerScene*,DiagramMode sceneMode); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*, DesignerScene*,DiagramMode sceneMode); - void setCreatingItem(modelStateInfo& info) { m_creatingItemInfo=info; } + void setCreatingItem(ModelStateInfo& info) { m_creatingItemInfo=info; } private: CreatingMethod m_creatingMethod; - modelStateInfo m_creatingItemInfo; + ModelStateInfo m_creatingItemInfo; GraphicsProjectModelItem* m_pCreatingItem; QPointF m_scalBasePoint; }; diff --git a/diagramCavas/include/util/editingSelector.h b/diagramCavas/include/util/editingSelector.h index 7e3e7d1..2f69313 100644 --- a/diagramCavas/include/util/editingSelector.h +++ b/diagramCavas/include/util/editingSelector.h @@ -10,7 +10,7 @@ #define EDITINGSELECTOR_H #include "baseSelector.h" -#include "global.h" +//#include "global.h" #include diff --git a/diagramCavas/include/util/selectorManager.h b/diagramCavas/include/util/selectorManager.h index 8def88f..a40bb2e 100644 --- a/diagramCavas/include/util/selectorManager.h +++ b/diagramCavas/include/util/selectorManager.h @@ -11,7 +11,7 @@ #include #include "baseSelector.h" -#include "global.h" +//#include "global.h" #include "graphicsDataModel/fixedPortsModel.h" @@ -28,7 +28,7 @@ public: void setWorkingSelector(SelectorType s) { m_curSelector=s; } BaseSelector* getWorkingSelector(); //根据操作方式获取selector - void setDrawGraphicsItem(modelStateInfo&); + void setDrawGraphicsItem(ModelStateInfo&); void setName(const QString&); public slots: void onSignal_setWorkingSelector(SelectorType); diff --git a/diagramCavas/source/baseDrawingPanel.cpp b/diagramCavas/source/baseDrawingPanel.cpp index a7577ac..648cbf4 100644 --- a/diagramCavas/source/baseDrawingPanel.cpp +++ b/diagramCavas/source/baseDrawingPanel.cpp @@ -11,6 +11,7 @@ #include "diagramCavas.h" #include "topologyManager.h" #include "basePannelPropertyProxy.h" +#include "common/core_model/constants.h" BaseDrawingPanel::BaseDrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode) : QWidget(parent) @@ -27,7 +28,7 @@ BaseDrawingPanel::BaseDrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramM m_pSelectorManager = new SelectorManager(_pModel,this); m_pGraphicsScene = new DesignerScene(_pModel,this); //设置场景大小.前两个参数为scene的坐标远点,设置到view的中心点后,无论view如何缩放,secne的坐标原点都不会动,方便后续的位置计算 - m_pGraphicsScene->setSceneRect(0,0, g_dGriaphicsScene_Width*4, g_dGriaphicsScene_Height*4); + m_pGraphicsScene->setSceneRect(0,0, Constants::SCENE_WIDTH*4, Constants::SCENE_HEIGHT*4); m_pGraphicsScene->setGridVisible(true); m_pGraphicsView = new DesignerView(this); diff --git a/diagramCavas/source/baseInfoDlg.cpp b/diagramCavas/source/baseInfoDlg.cpp index 823e71e..3dab594 100644 --- a/diagramCavas/source/baseInfoDlg.cpp +++ b/diagramCavas/source/baseInfoDlg.cpp @@ -3,7 +3,7 @@ #include "graphicsDataModel/fixedPortsModel.h" #include "ui_baseInfoDlg.h" #include "dataBase.h" -#include "global.h" +//#include "global.h" #include "baseProperty.h" #include "basePropertyManager.h" #include "itemPropertyDlg.h" @@ -32,11 +32,11 @@ void BaseInfoDlg::initial() connect(ui->btn_icon,&QPushButton::clicked,this,&BaseInfoDlg::onIconManagerClicked); } -void BaseInfoDlg::createGroupView(groupStateInfo infos) +void BaseInfoDlg::createGroupView(GroupStateInfo infos) { - QList lstGrid = DataBase::GetInstance()->getAllGrid(); - QList lstZone = DataBase::GetInstance()->getAllZone(); - QList lstStation = DataBase::GetInstance()->getAllStation(); + QList lstGrid = DataBase::GetInstance()->getAllGrid(); + QList lstZone = DataBase::GetInstance()->getAllZone(); + QList lstStation = DataBase::GetInstance()->getAllStation(); for(auto &info:lstGrid) { @@ -54,9 +54,9 @@ void BaseInfoDlg::createGroupView(groupStateInfo infos) } } -QMap BaseInfoDlg::getPropertyValue(BaseProperty* pPro) +QMap BaseInfoDlg::getPropertyValue(BaseProperty* pPro) { - QMap map; + QMap map; if(pPro) { diff --git a/diagramCavas/source/bayInfoDlg.cpp b/diagramCavas/source/bayInfoDlg.cpp index dd87345..1e67203 100644 --- a/diagramCavas/source/bayInfoDlg.cpp +++ b/diagramCavas/source/bayInfoDlg.cpp @@ -35,10 +35,10 @@ void BayInfoDlg::initial() connect(ui->tableWidget_local, &QTableWidget::customContextMenuRequested, this, &BayInfoDlg::onIndexRbtnClicked); } -void BayInfoDlg::createGroupView(groupStateInfo infos) +void BayInfoDlg::createGroupView(GroupStateInfo infos) { for(auto& info:infos.info) { - propertyContentInfo inf; + PropertyContentInfo inf; inf.proTag = info.tagName; inf.proName = info.name; inf.proType = info.type; @@ -46,9 +46,9 @@ void BayInfoDlg::createGroupView(groupStateInfo infos) } } -QMap BayInfoDlg::getPropertyValue(BaseProperty* pPro) +QMap BayInfoDlg::getPropertyValue(BaseProperty* pPro) { - QMap map; + QMap map; pPro->setDataChanged(true); pPro->setMeasurement(_mapMeasure); @@ -71,7 +71,7 @@ void BayInfoDlg::setPropertyValue(QVariant var) if(property) { _itemProperty = property; - QList lstType = DataBase::GetInstance()->getMeasureAttributeTypes(); + QList lstType = DataBase::GetInstance()->getMeasureAttributeTypes(); _validType = lstType; diff --git a/diagramCavas/source/bayMeasureDlg.cpp b/diagramCavas/source/bayMeasureDlg.cpp index d8477e8..619e74b 100644 --- a/diagramCavas/source/bayMeasureDlg.cpp +++ b/diagramCavas/source/bayMeasureDlg.cpp @@ -55,7 +55,7 @@ void BayMeasureDlg::setPropertyValue(BayProperty* pBay) if(pBay) { - QList lstType = DataBase::GetInstance()->getMeasureAttributeTypes(); + QList lstType = DataBase::GetInstance()->getMeasureAttributeTypes(); _validType = lstType; @@ -355,7 +355,7 @@ void BayMeasureDlg::onAddClicked() _measureDlg->setBayMeasure(this); } int curType = 0; //当前对象类型 - _measureDlg->showDlg(curType,propertyStateInfo()); + _measureDlg->showDlg(curType,PropertyStateInfo()); } void BayMeasureDlg::onDeleteClicked() @@ -410,7 +410,7 @@ void BayMeasureDlg::onModifyClicked() _measureDlg->setBayMeasure(this); } - _measureDlg->showDlg(info,propertyStateInfo()); + _measureDlg->showDlg(info,PropertyStateInfo()); } } diff --git a/diagramCavas/source/ctExtraInfoDlg.cpp b/diagramCavas/source/ctExtraInfoDlg.cpp index 3ee2768..5fef9b6 100644 --- a/diagramCavas/source/ctExtraInfoDlg.cpp +++ b/diagramCavas/source/ctExtraInfoDlg.cpp @@ -30,10 +30,10 @@ CtExtraInfoDlg::~CtExtraInfoDlg() delete ui; } -void CtExtraInfoDlg::createGroupView(groupStateInfo infos) +void CtExtraInfoDlg::createGroupView(GroupStateInfo infos) { for(auto& info:infos.info) { - propertyContentInfo inf; + PropertyContentInfo inf; inf.proTag = info.tagName; inf.proName = info.name; inf.proType = info.type; @@ -41,13 +41,13 @@ void CtExtraInfoDlg::createGroupView(groupStateInfo infos) } } -QMap CtExtraInfoDlg::getPropertyValue(BaseProperty* pPro) +QMap CtExtraInfoDlg::getPropertyValue(BaseProperty* pPro) { - QMap map; + QMap map; for(auto &pro:_mapPro) { - propertyStateInfo info; + PropertyStateInfo info; info.tagName = pro.proTag; info.type = pro.proType; info.name = pro.proName; @@ -112,7 +112,7 @@ QMap CtExtraInfoDlg::getPropertyValue(BaseProperty* p void CtExtraInfoDlg::setPropertyValue(QVariant var) { - QMap map = var.value>(); + QMap map = var.value>(); for(auto &info:map) { if(info.name == "额定电流(A)" || info.tagName == "in_a") //此处应为类型名 diff --git a/diagramCavas/source/dataSourceDlg.cpp b/diagramCavas/source/dataSourceDlg.cpp index cabf671..beceb1d 100644 --- a/diagramCavas/source/dataSourceDlg.cpp +++ b/diagramCavas/source/dataSourceDlg.cpp @@ -6,7 +6,7 @@ #include "extraPropertyManager.h" #include "propertyType/dataSourceType.h" #include -#include "global.h" +//#include "global.h" DataSourceDlg::DataSourceDlg(QWidget *parent) : QDialog(parent) diff --git a/diagramCavas/source/designerScene.cpp b/diagramCavas/source/designerScene.cpp index e0eeb68..6a2fa1e 100644 --- a/diagramCavas/source/designerScene.cpp +++ b/diagramCavas/source/designerScene.cpp @@ -1,8 +1,8 @@ #include "designerScene.h" -#include "util/selectorManager.h" #include "graphicsItem/graphicsItemGroup.h" -#include "drawingPanel.h" -#include "global.h" +#include "baseDrawingPanel.h" +#include "util/selectorManager.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/diagramCavas.cpp b/diagramCavas/source/diagramCavas.cpp index 2967404..c2b083e 100644 --- a/diagramCavas/source/diagramCavas.cpp +++ b/diagramCavas/source/diagramCavas.cpp @@ -130,7 +130,7 @@ void DiagramCavas::passRecommmandHttpData(HttpRecommandInfo info) void DiagramCavas::initial() { //todo:读取数据并初始化 - QList lst = DataBase::GetInstance()->getAllPage(); + QList lst = DataBase::GetInstance()->getAllPage(); for(auto &info:lst) { TopologyManager::instance().createDiagram(QString::number(info.id),info.name); @@ -221,7 +221,7 @@ void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode, calculateLauncherVisible(); } -void DiagramCavas::onSignal_addGraphicsItem(modelStateInfo& info) +void DiagramCavas::onSignal_addGraphicsItem(ModelStateInfo& info) { QMdiSubWindow* actWindow = activeSubWindow(); if(!actWindow) @@ -581,7 +581,7 @@ void DiagramCavas::onTargetSelected(QObject* obj) } /****************************************************/ -void DiagramCavas::onSignal_updateTopology(QList lst,bool refresh,bool showFull) +void DiagramCavas::onSignal_updateTopology(QList lst,bool refresh,bool showFull) { emit prepareUpdateTopology(lst,refresh,showFull); } @@ -704,17 +704,17 @@ void DiagramCavas::onSignl_openCurrentBay() } } /*********************monitor**************************/ -void DiagramCavas::onSignal_updateCurItems(QList lst,bool refresh) +void DiagramCavas::onSignal_updateCurItems(QList lst,bool refresh) { emit prepareUpdateItems(lst,refresh); } -void DiagramCavas::onSignal_selectedItems(QList lst) +void DiagramCavas::onSignal_selectedItems(QList lst) { emit prepareSelectItems(lst); } -void DiagramCavas::onSignal_generate(QString sPage,QList lst) +void DiagramCavas::onSignal_generate(QString sPage,QList lst) { QWidget* pWindow= currentSubWindow()->widget(); DrawingPanel* pPanel = dynamic_cast(pWindow); @@ -729,7 +729,7 @@ void DiagramCavas::onSignal_monitorCreated(QString sProj,QPair pa emit updateMonitorList(sProj,pair); } -void DiagramCavas::onSignal_monitorItemCreated(QList lst) +void DiagramCavas::onSignal_monitorItemCreated(QList lst) { emit createdMonitorItems(lst); } @@ -772,7 +772,7 @@ void DiagramCavas::updateMonitorListFromDB(int dest) if(dest != 0) _loadMonitorPageDlg->clearItems(); - QList lstMonitor = DataBase::GetInstance()->getAllMonitor(); + QList lstMonitor = DataBase::GetInstance()->getAllMonitor(); for(auto &info:lstMonitor) { auto p = TopologyManager::instance().findDiagram(info.uid.toString(),ModelFunctionType::RuntimeModel); diff --git a/diagramCavas/source/diagramEditor/diagramEditorBayDetailAddDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorBayDetailAddDlg.cpp index 78ea872..79a8769 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorBayDetailAddDlg.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorBayDetailAddDlg.cpp @@ -6,7 +6,6 @@ #include "ui_diagramEditorBayDetailAddDlg.h" #include "diagramEditor/diagramEditorBaseBlock.h" #include "diagramEditor/diagramEditorWizard.h" -#include "diagramEditor/diagramEditorStructContainer.h" DiagramEditorBayDetailAddDlg::DiagramEditorBayDetailAddDlg(QWidget *parent) : QDialog(parent) diff --git a/diagramCavas/source/diagramEditor/diagramEditorBayPreviewDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorBayPreviewDlg.cpp index d9807f3..90b7a17 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorBayPreviewDlg.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorBayPreviewDlg.cpp @@ -3,7 +3,8 @@ #include "diagramEditor/editView.h" #include "diagramEditor/editScene.h" #include "graphicsDataModel/diagramEditorModel.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/constants.h" DiagramEditorBayPreviewDlg::DiagramEditorBayPreviewDlg(QWidget *parent) : QDialog(parent) @@ -30,7 +31,7 @@ void DiagramEditorBayPreviewDlg::initial() _pView->scale(0.5,0.5); //缩放为一半 _pMainLayout->addWidget(_pView); _pScene = new EditPreviewScene(this); - _pScene->setSceneRect(-g_dGriaphicsScene_Width / 2, -g_dGriaphicsScene_Height / 2, g_dGriaphicsScene_Width, g_dGriaphicsScene_Height); //初始大小 + _pScene->setSceneRect(-Constants::SCENE_WIDTH / 2, -Constants::SCENE_HEIGHT / 2, Constants::SCENE_WIDTH, Constants::SCENE_HEIGHT); //初始大小 _pView->setScene(_pScene); } diff --git a/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp index 0e98976..90b2ca1 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp @@ -2,6 +2,8 @@ #include "diagramEditor/diagramEditorBaySettingDlg.h" #include "diagramEditor/diagramEditorWizard.h" #include "diagramEditor/diagramEditorBaseBlock.h" +//#include "global.h" +#include "common/core_model/constants.h" #include "ui_diagramEditorBaySettingDlg.h" #include "diagramEditor/diagramEditorStructContainer.h" #include "diagramEditor/wizardBayContentDlg.h" @@ -74,7 +76,7 @@ void DiagramEditorBaySettingDlg::addNewBay() if(_pWizard){ auto mapAllCon = _pWizard->getContainerStruct(); for(auto iter = mapAllCon.begin();iter != mapAllCon.end();++iter){ - if(iter.key() == g_transformerLevel) + if(iter.key() == Constants::TRANSFORMER_LEVEL) continue; ui->cb_level->addItem("第"+QString::number(iter.key()+1)+"层",iter.key()); } diff --git a/diagramCavas/source/diagramEditor/diagramEditorPreviewDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorPreviewDlg.cpp index 5a9b27c..b5ba703 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorPreviewDlg.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorPreviewDlg.cpp @@ -3,7 +3,6 @@ #include "diagramEditor/editScene.h" #include "graphicsDataModel/diagramEditorModel.h" #include "diagramEditor/editPanel.h" -#include "global.h" #include #include diff --git a/diagramCavas/source/diagramEditor/diagramEditorTransPreviewDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorTransPreviewDlg.cpp index 9cf6716..8bf3322 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorTransPreviewDlg.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorTransPreviewDlg.cpp @@ -3,7 +3,8 @@ #include "diagramEditor/editView.h" #include "diagramEditor/editScene.h" #include "graphicsDataModel/diagramEditorModel.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/constants.h" DiagramEditorTransPreviewDlg::DiagramEditorTransPreviewDlg(QWidget *parent) : QDialog(parent) @@ -28,7 +29,7 @@ void DiagramEditorTransPreviewDlg::initial() _pView = new EditView(this); _pMainLayout->addWidget(_pView); _pScene = new EditPreviewScene(this); - _pScene->setSceneRect(-g_dGriaphicsScene_Width / 2, -g_dGriaphicsScene_Height / 2, g_dGriaphicsScene_Width, g_dGriaphicsScene_Height); + _pScene->setSceneRect(-Constants::SCENE_WIDTH / 2, -Constants::SCENE_HEIGHT / 2, Constants::SCENE_WIDTH, Constants::SCENE_HEIGHT); _pView->setScene(_pScene); } diff --git a/diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp index 9796a88..d673d5e 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp @@ -5,6 +5,7 @@ #include "ui_diagramEditorTransSettingDlg.h" #include "diagramEditor/diagramEditorStructContainer.h" #include "diagramEditor/wizardBayContentDlg.h" +#include "common/core_model/constants.h" DiagramEditorTransSettingDlg::DiagramEditorTransSettingDlg(QWidget *parent) : QDialog(parent) @@ -95,7 +96,7 @@ void DiagramEditorTransSettingDlg::addNewTrans() if(_pWizard){ auto mapAllCon = _pWizard->getContainerStruct(); for(auto iter = mapAllCon.begin();iter != mapAllCon.end();++iter){ - if(iter.key() == g_transformerLevel) + if(iter.key() == Constants::TRANSFORMER_LEVEL) continue; ui->cb_level->addItem("第"+QString::number(iter.key()+1)+"层",iter.key()); } @@ -180,7 +181,7 @@ void DiagramEditorTransSettingDlg::onOkClicked() QString sName = ui->le_name->text(); TransformerType nType = TransformerType(ui->cb_type->currentIndex()); if(_curModel == 0){ - auto lstBlock = _pWizard->getTargetLevelBlocks(g_transformerLevel,3); + auto lstBlock = _pWizard->getTargetLevelBlocks(Constants::TRANSFORMER_LEVEL,3); for(auto bay:lstBlock) { if(bay->getName() == sName){ //判断间隔存在 diff --git a/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp b/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp index 3af036b..fe576af 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp @@ -11,6 +11,7 @@ #include "diagramEditor/diagramEditorStructContainer.h" #include "diagramEditor/diagramEditorBaySettingDlg.h" #include "diagramEditor/diagramEditorTransSettingDlg.h" +#include "common/core_model/constants.h" DiagramEditorWizard::DiagramEditorWizard(QWidget *parent) : QDialog(parent) @@ -234,7 +235,7 @@ void DiagramEditorWizard::flushTransPage() { ui->tableWidget_trans->clearContents(); ui->tableWidget_trans->setRowCount(0); - QList lst = getTargetLevelBlocks(g_transformerLevel,3); + QList lst = getTargetLevelBlocks(Constants::TRANSFORMER_LEVEL,3); for(auto& block:lst){ auto pItem = dynamic_cast(block); if(pItem){ @@ -829,8 +830,8 @@ void DiagramEditorWizard::onAddTransFinished(DiagramEditorWizardTransformerInfo pContainer->insertBlock(1,pTrans); //***变压器添加到了1层*** - int nIndex =_mapSturctContainer.value(g_transformerLevel).size(); - _mapSturctContainer[g_transformerLevel].insert(nIndex,pContainer); + int nIndex =_mapSturctContainer.value(Constants::TRANSFORMER_LEVEL).size(); + _mapSturctContainer[Constants::TRANSFORMER_LEVEL].insert(nIndex,pContainer); flushTransPage(); } @@ -965,20 +966,13 @@ void DiagramEditorWizard::onTransDeleteClicked() QModelIndex indexName = index.sibling(index.row(),0); QString sName = indexName.data().toString(); - DiagramEditorStructContainer* pCon = getContainerByBlock(g_transformerLevel,3,sName); - bool res = removeBlockByName(g_transformerLevel,3,sName); + DiagramEditorStructContainer* pCon = getContainerByBlock(Constants::TRANSFORMER_LEVEL,3,sName); + bool res = removeBlockByName(Constants::TRANSFORMER_LEVEL,3,sName); if(pCon){ //同时删除container(一个container包含一个变压器) - /*for(auto iter = _mapSturctContainer[g_transformerLevel].begin(); iter != _mapSturctContainer[g_transformerLevel].end();++iter){ - if(*iter == pCon){ + for(int i = 0;i < _mapSturctContainer[Constants::TRANSFORMER_LEVEL].size();++i){ + if(_mapSturctContainer[Constants::TRANSFORMER_LEVEL][i] == pCon){ delete pCon; - _mapSturctContainer[g_transformerLevel].erase(iter); - break; - } - }*/ - for(int i = 0;i < _mapSturctContainer[g_transformerLevel].size();++i){ - if(_mapSturctContainer[g_transformerLevel][i] == pCon){ - delete pCon; - _mapSturctContainer[g_transformerLevel].removeAt(i); + _mapSturctContainer[Constants::TRANSFORMER_LEVEL].removeAt(i); break; } } @@ -1015,7 +1009,7 @@ void DiagramEditorWizard::onTransModifyClicked() QModelIndex indexName = index.sibling(index.row(),0); QString sName = indexName.data().toString(); - DiagramEditorBaseBlock* pBlock = getBlockByName(g_transformerLevel,3,sName); + DiagramEditorBaseBlock* pBlock = getBlockByName(Constants::TRANSFORMER_LEVEL,3,sName); if(pBlock){ auto pTran = dynamic_cast(pBlock); if(pTran) diff --git a/diagramCavas/source/diagramEditor/editPanel.cpp b/diagramCavas/source/diagramEditor/editPanel.cpp index 8952fb4..d8073e2 100644 --- a/diagramCavas/source/diagramEditor/editPanel.cpp +++ b/diagramCavas/source/diagramEditor/editPanel.cpp @@ -9,7 +9,6 @@ #include "diagramEditor/editView.h" #include "diagramEditor/editRowData.h" #include "diagramEditor/editMainRect.h" -#include "diagramEditor/editBlock.h" #include "diagramEditor/diagramEditorWizard.h" #include "diagramEditor/editContainerItem.h" #include "diagramEditor/diagramEditorStructContainer.h" @@ -22,7 +21,8 @@ #include "diagramEditor/confirmEditorDlg.h" #include "projectManager.h" #include "diagramCavas.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/constants.h" #include "basePropertyManager.h" #include @@ -43,8 +43,7 @@ EditPanel::EditPanel(QWidget *parent) m_pEditScene = new EditScene(this); m_pEditScene->setModel(_pModel); //设置场景大小.前两个参数为scene的坐标远点,设置到view的中心点后,无论view如何缩放,secne的坐标原点都不会动,方便后续的位置计算 - //m_pEditScene->setSceneRect(-g_dGriaphicsScene_Width / 2, -g_dGriaphicsScene_Height / 2, g_dGriaphicsScene_Width, g_dGriaphicsScene_Height); - m_pEditScene->setSceneRect(0, 0, g_dGriaphicsScene_Width*4, g_dGriaphicsScene_Height*4); + m_pEditScene->setSceneRect(0, 0, Constants::SCENE_WIDTH*4, Constants::SCENE_HEIGHT*4); m_pEditView = new EditView(this); m_pEditView->setScene(m_pEditScene); @@ -61,8 +60,8 @@ EditPanel::~EditPanel() void EditPanel::initByWizardInfo() { - QList lstBay; - QList lstItem; + QList lstBay; + QList lstItem; //if(!_lstData.empty() || !_pModel->getPreviewItem().empty()){ _pModel->clearItems(); m_pEditScene->clear(); @@ -77,7 +76,7 @@ void EditPanel::initByWizardInfo() //} auto& mapTotal = _pEditorWizard->getContainerStruct(); for(auto iter = mapTotal.begin();iter != mapTotal.end();++iter){ - if(iter.key() == g_transformerLevel) + if(iter.key() == Constants::TRANSFORMER_LEVEL) continue; QGraphicsLinearLayout* layoutRowData = new QGraphicsLinearLayout(Qt::Horizontal); layoutRowData->setSpacing(20); @@ -88,7 +87,7 @@ void EditPanel::initByWizardInfo() for(int i = 0;i < mapCon.size();++i){ EditContainerItem* pContain = new EditContainerItem(); connect(pContain,&EditContainerItem::containerSizeChange,this,&EditPanel::onContainerSizeChanged); - pContain->setMinimumWidth(g_dEditorItem_Width+40); + pContain->setMinimumWidth(Constants::EDITOR_ITEM_WIDTH+40); layoutRowData->addItem(pContain); pContain->setId(QUuid::createUuid().toString()); @@ -115,7 +114,7 @@ void EditPanel::initByWizardInfo() layH->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); layH->setPreferredHeight(10); // 固定高度 - RelationItem info; + HierarchyItem info; info.item.nEquipType = 1; info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = pBlock->getName(); @@ -143,7 +142,7 @@ void EditPanel::initByWizardInfo() else if(nType == 2){ //间隔 auto pBay = new EditBayItem(); pBay->setType(EditorItemType::bay); - pBay->setBoundingRect(QRectF(0,0,g_dEditorItem_Width,g_dEditorItem_Height)); + pBay->setBoundingRect(QRectF(0,0,Constants::EDITOR_ITEM_WIDTH,Constants::EDITOR_ITEM_HEIGHT)); pItem = pBay; } /*else if(nType == 3){ //变压器 @@ -153,7 +152,7 @@ void EditPanel::initByWizardInfo() }*/ if(pItem){ - RelationItem bayInfo; //间隔层级 + HierarchyItem bayInfo; //间隔层级 bayInfo.item.nEquipType = 0; // 间隔的设备类型为0 bayInfo.item.nCategory = 1; // 类别为1表示间隔 bayInfo.item.sName = pBlock->getName(); @@ -174,8 +173,8 @@ void EditPanel::initByWizardInfo() QGraphicsLinearLayout* layH = new QGraphicsLinearLayout(Qt::Horizontal); //container中每一层的布局 layV->insertItem(0,layH); auto pSpace = new EditBaseItem(); - pSpace->setType(EditorItemType::none); - pSpace->setBoundingRect(QRectF(0,0,g_dEditorItem_Width,g_dEditorItem_Height)); + pSpace->setType(EditorItemType::None); + pSpace->setBoundingRect(QRectF(0,0,Constants::EDITOR_ITEM_WIDTH,Constants::EDITOR_ITEM_HEIGHT)); layH->addItem(pSpace); } @@ -184,8 +183,8 @@ void EditPanel::initByWizardInfo() QGraphicsLinearLayout* layH = new QGraphicsLinearLayout(Qt::Horizontal); //container中每一层的布局 layV->insertItem(3,layH); auto pSpace = new EditBaseItem(); - pSpace->setType(EditorItemType::none); - pSpace->setBoundingRect(QRectF(0,0,g_dEditorItem_Width,g_dEditorItem_Height)); + pSpace->setType(EditorItemType::None); + pSpace->setBoundingRect(QRectF(0,0,Constants::EDITOR_ITEM_WIDTH,Constants::EDITOR_ITEM_HEIGHT)); layH->addItem(pSpace); } if(layV->count() == 4){ @@ -209,16 +208,16 @@ void EditPanel::initByWizardInfo() _widgetLayout->addItem(layoutRowData); if(iter.key() == 0){ //若设置了变压器,直接插入到第一行下方 - if(!mapTotal.value(g_transformerLevel).empty()){ + if(!mapTotal.value(Constants::TRANSFORMER_LEVEL).empty()){ QGraphicsLinearLayout* layoutRowData = new QGraphicsLinearLayout(Qt::Horizontal); layoutRowData->setSpacing(20); EditRowData* pRow = new EditRowData(); - pRow->setId(QString::number(g_transformerLevel)); - auto& mapCon = mapTotal[g_transformerLevel]; + pRow->setId(QString::number(Constants::TRANSFORMER_LEVEL)); + auto& mapCon = mapTotal[Constants::TRANSFORMER_LEVEL]; for(int i = 0;i < mapCon.size();++i){ EditContainerItem* pContain = new EditContainerItem(); connect(pContain,&EditContainerItem::containerSizeChange,this,&EditPanel::onContainerSizeChanged); - pContain->setMinimumWidth(g_dEditorItem_Width+40); + pContain->setMinimumWidth(Constants::EDITOR_ITEM_WIDTH+40); layoutRowData->addItem(pContain); pContain->setId(QUuid::createUuid().toString()); @@ -242,10 +241,10 @@ void EditPanel::initByWizardInfo() if(nType == 3){ //变压器 auto pTrans = new EditTransItem(); pTrans->setType(EditorItemType::trans); - pTrans->setBoundingRect(QRectF(0,0,g_dEditorItem_Width,g_dEditorItem_Width)); + pTrans->setBoundingRect(QRectF(0,0,Constants::EDITOR_ITEM_WIDTH,Constants::EDITOR_ITEM_WIDTH)); pItem = pTrans; - RelationItem info; + HierarchyItem info; info.item.nEquipType = 16; info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = pBlock->getName(); @@ -272,7 +271,7 @@ void EditPanel::initByWizardInfo() } if(pItem){ - RelationItem bayInfo; //间隔层级 + HierarchyItem bayInfo; //间隔层级 bayInfo.item.nEquipType = 0; // 间隔的设备类型为0 bayInfo.item.nCategory = 1; // 类别为1表示间隔 bayInfo.item.sName = pBlock->getName(); @@ -470,6 +469,9 @@ void EditPanel::showConfirmDlg() void EditPanel::generate() { + if(_pPreview){ + _pPreview->hide(); + } auto pCavas = getCavas(); QList pBlocks = getBlockItems(); pCavas->onSignal_wizardFinished(_projectName,_pModel->getPreviewItem(),pBlocks); @@ -489,7 +491,7 @@ QList EditPanel::getBlockItems(EditorItemType typ) auto p = dynamic_cast(item); if(p){ EditorItemType eType = p->getType(); - if(typ == EditorItemType::none){ //返回所有block item + if(typ == EditorItemType::None){ //返回所有block item if(eType == EditorItemType::bay || eType == EditorItemType::bus || eType == EditorItemType::trans){ lst.push_back(p); } @@ -528,7 +530,7 @@ void EditPanel::onContainerSizeChanged(EditContainerItem* pItem) QString sName = pBase->getName(); EditorItemType tpe = pBase->getType(); if(tpe == EditorItemType::bus){ - pBase->setBoundingRect(QRectF(0,0,pItem->boundingRect().width()-20,g_nEditorBus_Height)); + pBase->setBoundingRect(QRectF(0,0,pItem->boundingRect().width()-20,Constants::EDITOR_BUS_HEIGHT)); } } } @@ -615,7 +617,7 @@ void EditPanel::calculateContainerWidth(EditContainerItem* pItem) } if(nTop || nBottom){ - nWidth = (nTop > nBottom ? nTop : nBottom)*(g_dEditorItem_Width+20); + nWidth = (nTop > nBottom ? nTop : nBottom)*(Constants::EDITOR_ITEM_WIDTH+20); pItem->setMinimumWidth(nWidth); if(isSection){ //分段连接的container固定大小 pItem->setMaximumWidth(nWidth); diff --git a/diagramCavas/source/diagramEditor/editRowData.cpp b/diagramCavas/source/diagramEditor/editRowData.cpp index 1736b14..65d4f45 100644 --- a/diagramCavas/source/diagramEditor/editRowData.cpp +++ b/diagramCavas/source/diagramEditor/editRowData.cpp @@ -2,7 +2,7 @@ #include #include #include "diagramEditor/editRowData.h" -#include "global.h" +//#include "global.h" EditRowData::EditRowData(QGraphicsItem *parent) diff --git a/diagramCavas/source/diagramEditor/wizardBusTableDelegate.cpp b/diagramCavas/source/diagramEditor/wizardBusTableDelegate.cpp index 193100e..89a6043 100644 --- a/diagramCavas/source/diagramEditor/wizardBusTableDelegate.cpp +++ b/diagramCavas/source/diagramEditor/wizardBusTableDelegate.cpp @@ -6,7 +6,7 @@ #include #include "diagramEditor/wizardBusTableDelegate.h" -#include "global.h" +//#include "global.h" WizardBusTableDelegate::WizardBusTableDelegate(QObject *parent) : QStyledItemDelegate(parent) diff --git a/diagramCavas/source/drawingPanel.cpp b/diagramCavas/source/drawingPanel.cpp index 2654500..8758699 100644 --- a/diagramCavas/source/drawingPanel.cpp +++ b/diagramCavas/source/drawingPanel.cpp @@ -84,7 +84,7 @@ void DrawingPanel::closeEvent(QCloseEvent *closeEvent) } } -void DrawingPanel::onSignal_addGraphicsItem(modelStateInfo& info) +void DrawingPanel::onSignal_addGraphicsItem(ModelStateInfo& info) { if(m_pSelectorManager) { @@ -109,7 +109,7 @@ QJsonObject DrawingPanel::getDiagramInfo() QJsonArray arr; if(_pModel) { - QMap map = _pModel->allNodePos(); + QMap map = _pModel->allNodePos(); for(auto iter = map.begin();iter != map.end();++iter) { QJsonObject node; @@ -237,14 +237,14 @@ void DrawingPanel::loadNodes(QJsonObject obj) break; } - QList lstFirst; + QList lstFirst; for(auto& pOtherItem:_pModel->getProjectBayItems()) { BayProperty* pBay = dynamic_cast(pOtherItem->getProperty()); if(pBay){ // 创建间隔项 - RelationItem bayInfo; + HierarchyItem bayInfo; bayInfo.item.nEquipType = 0; // 间隔的设备类型为0 bayInfo.item.nCategory = 1; // 类别为1表示间隔 bayInfo.item.sName = pBay->tag(); @@ -262,7 +262,7 @@ void DrawingPanel::loadNodes(QJsonObject obj) emit _pModel->updateTopologyItems(lstFirst, true,true); // 第二阶段:处理所有设备 - QList lstSecond; + QList lstSecond; // 建立间隔UUID到间隔标签的映射,提高查找效率 QHash bayUuidToTag; @@ -278,7 +278,7 @@ void DrawingPanel::loadNodes(QJsonObject obj) { BaseProperty* pBase = dynamic_cast(pBaseItem->getProperty()); - RelationItem info; + HierarchyItem info; info.item.nEquipType = pBase->type(); info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = pBase->name(); diff --git a/diagramCavas/source/graphicsDataModel/baseModel.cpp b/diagramCavas/source/graphicsDataModel/baseModel.cpp index c876902..37fdaac 100644 --- a/diagramCavas/source/graphicsDataModel/baseModel.cpp +++ b/diagramCavas/source/graphicsDataModel/baseModel.cpp @@ -446,7 +446,7 @@ template void BaseModel::establishConnection(GraphicsBaseItem PowerConnection* pCon = TopologyManager::instance().createConnection(pItem->itemId().toString(),pSrcPort->getId(),pDestPort->getId(),pSrc->itemId().toString(),pDest->itemId().toString(),nType); //创建拓扑连接(逻辑) if(pCon) - pCon->setState(DataState::changed); + pCon->setState(DataState::Changed); pItem->getProperty()->setConnection(Connection(pSrc->itemId(),QUuid(pSrcPort->getId()),pSrcPort->getType(),pSrcPort->portPos(),pDest->itemId(),QUuid(pDestPort->getId()),pDestPort->getType(),pDestPort->portPos())); } } diff --git a/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp b/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp index 6778d98..dc12eef 100644 --- a/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp +++ b/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp @@ -19,6 +19,7 @@ #include "diagramEditor/diagramEditorStructContainer.h" #include #include +#include "common/core_model/constants.h" int g_nCompoWidth = 50; //元件默认宽度(计算布局使用) int g_nCompoHeight = 50; @@ -488,8 +489,8 @@ void DiagramEditorModel::linkTransItem(GraphicsBaseModelItem* pTrans,QStandardIt void DiagramEditorModel::generatePreview(bool bVisible) { if(_pPanel){ - QList lstBay; - QList lstItem; + QList lstBay; + QList lstItem; clearItems(); if(bVisible) @@ -501,7 +502,7 @@ void DiagramEditorModel::generatePreview(bool bVisible) for(auto item:lst){ auto p = item->getBlockData(); //获取blockitem对应的data if(p){ - RelationItem bayInfo; //间隔层级 + HierarchyItem bayInfo; //间隔层级 bayInfo.item.nEquipType = 0; // 间隔的设备类型为0 bayInfo.item.nCategory = 1; // 类别为1表示间隔 bayInfo.item.sName = p->getName(); @@ -540,7 +541,7 @@ void DiagramEditorModel::generatePreview(bool bVisible) pItem->setBoundingRect(rec); pBus->setRecSize(rec); - RelationItem info; + HierarchyItem info; info.item.nEquipType = 1; info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = p->getName(); @@ -582,7 +583,7 @@ void DiagramEditorModel::generatePreview(bool bVisible) if(!baysCompo.contains(sBay)) baysCompo.insert(sBay,lstCompo); for(auto& compo:lstCompo){ - RelationItem info; + HierarchyItem info; info.item.nEquipType = compo.nType; info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = compo.sName; @@ -642,7 +643,7 @@ void DiagramEditorModel::generatePreview(bool bVisible) if(!neutralInfo.contains(nT)) neutralInfo.insert(nT,lstCompo); for(auto& compo:lstCompo){ - RelationItem info; + HierarchyItem info; info.item.nEquipType = compo.nType; info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = p->getName(); @@ -687,10 +688,10 @@ void DiagramEditorModel::generatePreview(bool bVisible) DiagramEditorBayBlock* pBay = dynamic_cast(p.data()); if(pBay){ if(pBay->getName() == iter.key()){ //相同间隔 - QList lstTemp; //外部连线的层级关系 + QList lstTemp; //外部连线的层级关系 QMultiMap mapId = generateOutConnection(iter.value(),lstTemp,2,0,pBay); //type为2时pos不启用 if(!lstTemp.isEmpty()) - lstItem.append(lstItem); + lstItem.append(lstTemp); switch (pBay->getBayType()) { case BayType::busSectionBay:{ QList values = mapId.values(1); @@ -769,10 +770,10 @@ void DiagramEditorModel::generatePreview(bool bVisible) DiagramEditorTransformerBlock* pTrans = dynamic_cast(p.data()); if(pTrans){ if(pTrans->getName() == iter.key()){ - QList lstTemp; //外部连线的层级关系 + QList lstTemp; //外部连线的层级关系 generateOutConnection(it.value(),lstTemp,1,it.key(),pTrans); if(!lstTemp.isEmpty()) - lstItem.append(lstItem); + lstItem.append(lstTemp); } } } @@ -791,7 +792,7 @@ void DiagramEditorModel::calculateBlockPos() double lastMaxDownH = 0; //上一行的下部最大高度 auto mapTotal = _pWizard->getContainerStruct(); for(auto iter = mapTotal.begin();iter != mapTotal.end();++iter){ - if(iter.key() == g_transformerLevel) + if(iter.key() == Constants::TRANSFORMER_LEVEL) continue; double dMaxUp = 0; //计算最大上方空间 double dMaxDown = 0; //计算最大下方空间 @@ -813,7 +814,7 @@ void DiagramEditorModel::calculateBlockPos() dMaxUp = dHeight; dWidthUp += g_nHorizontalBlockSpacing+dWidth; } - dMaxUp += g_dEditorItem_Height; + dMaxUp += Constants::EDITOR_ITEM_HEIGHT; double dWidthDown = 0; for(auto pBlock:lstBlockDown){ @@ -824,7 +825,7 @@ void DiagramEditorModel::calculateBlockPos() dMaxDown = dHeight; dWidthDown = g_nHorizontalBlockSpacing+dWidth; } - dMaxDown += g_dEditorItem_Height; + dMaxDown += Constants::EDITOR_ITEM_HEIGHT; int nBusLen = 0; if(!lstBus1.empty()){ @@ -844,10 +845,10 @@ void DiagramEditorModel::calculateBlockPos() } if(dMaxUp == 0){ - dMaxUp = g_dEditorItem_Height; + dMaxUp = Constants::EDITOR_ITEM_HEIGHT; } if(dMaxDown == 0){ - dMaxDown = g_dEditorItem_Height; + dMaxDown = Constants::EDITOR_ITEM_HEIGHT; } double dDeltaX = 50; //每行横向偏移 for(auto &pCon:iter.value()){ //第二次循环赋值,计算位置(首先确定母线位置) @@ -858,7 +859,7 @@ void DiagramEditorModel::calculateBlockPos() deltaY = pCon->getMaxUpH(); } else if(iter == std::next(mapTotal.begin())){ //第二行 - if(!mapTotal.value(g_transformerLevel).empty()){ //有变压器 + if(!mapTotal.value(Constants::TRANSFORMER_LEVEL).empty()){ //有变压器 deltaY = deltaY + pCon->getMaxUpH(); } else @@ -897,10 +898,10 @@ void DiagramEditorModel::calculateBlockPos() } else if(pBlock->getType() == 2){ //间隔 if(it.key() == 0){ //容器最上层 - center = QPointF(deltaX+recBlock.width()*0.5,dMiddleUpY-recBlock.height()*0.5-g_dEditorItem_Height*0.5); + center = QPointF(deltaX+recBlock.width()*0.5,dMiddleUpY-recBlock.height()*0.5-Constants::EDITOR_ITEM_HEIGHT*0.5); } else if(it.key() == 3){ //容器最下层 - center = QPointF(deltaX+recBlock.width()*0.5,dMiddleDownY+recBlock.height()*0.5+g_dEditorItem_Height*0.5); + center = QPointF(deltaX+recBlock.width()*0.5,dMiddleDownY+recBlock.height()*0.5+Constants::EDITOR_ITEM_HEIGHT*0.5); } deltaX += recBlock.width(); } @@ -916,8 +917,8 @@ void DiagramEditorModel::calculateBlockPos() dDeltaX = 150; //首个变压器位置 if(iter.key() == 0){ //若设置了变压器,直接插入到第一行下方 - if(!mapTotal.value(g_transformerLevel).empty()){ - auto lstCon = mapTotal.value(g_transformerLevel); + if(!mapTotal.value(Constants::TRANSFORMER_LEVEL).empty()){ + auto lstCon = mapTotal.value(Constants::TRANSFORMER_LEVEL); for(auto &pCon:lstCon){ //首次计算变压器大小 auto mapBlocks = pCon->getBlockMap(); auto lstBlock = mapBlocks.value(1); @@ -1235,7 +1236,7 @@ QList DiagramEditorModel::generateItemByInfo(QMap DiagramEditorModel::generateOutConnection(QList lstBind,QList& lstRelation,int nTypeTransCon,int nPos,DiagramEditorBaseBlock* pParent) +QMultiMap DiagramEditorModel::generateOutConnection(QList lstBind,QList& lstRelation,int nTypeTransCon,int nPos,DiagramEditorBaseBlock* pParent) { QMultiMap bindId; //返回关联的对象id<类型,id> for(auto& compo:lstBind){ //遍历关联外部的item,进行连线 @@ -1265,7 +1266,7 @@ QMultiMap DiagramEditorModel::generateOutConnection(QList DiagramEditorModel::generateOutConnection(QList DiagramEditorModel::generateOutConnection(QList DiagramEditorModel::generateOutConnection(QList& da maoCompo[i].nUsedDirection |= 12; //其余向上向下都被占用(单线路记录,不可作为跨线判断依据) nDir = 12; } - int deltaY = nSegIndex*g_nVDiagramSpacing; + int deltaY = nSegIndex*Constants::V_DIAGRAM_SPACING; int rotate = 0; if(nMainDir == 4) @@ -1679,7 +1680,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(90,Qt::UserRole+5); } } - int deltaX = nXOrderIndex*nOrderPolarity*g_nHDiagramSpacing; + int deltaX = nXOrderIndex*nOrderPolarity*Constants::H_DIAGRAM_SPACING; pNextItem->setData(QPoint(deltaX,nOrderFirstDeltaY),Qt::UserRole + 2); continue; } @@ -1713,7 +1714,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(90,Qt::UserRole+5); } } - int deltaX = nXOrderIndex*nOrderPolarity*g_nHDiagramSpacing; + int deltaX = nXOrderIndex*nOrderPolarity*Constants::H_DIAGRAM_SPACING; pNextItem->setData(QPoint(deltaX,nOrderFirstDeltaY),Qt::UserRole + 2); nXOrderIndex += 1; } @@ -1760,7 +1761,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 90; } } - int deltaX = nXOrderIndex*nOrderPolarity*g_nHDiagramSpacing; + int deltaX = nXOrderIndex*nOrderPolarity*Constants::H_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(deltaX,nOrderFirstDeltaY); continue; } @@ -1794,7 +1795,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 90; } } - int deltaX = nXOrderIndex*nOrderPolarity*g_nHDiagramSpacing; + int deltaX = nXOrderIndex*nOrderPolarity*Constants::H_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(deltaX,nOrderFirstDeltaY); nXOrderIndex += 1; } @@ -1850,7 +1851,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(90,Qt::UserRole+5); } } - int deltaX = nXReverseIndex*nReversePolarity*g_nHDiagramSpacing; + int deltaX = nXReverseIndex*nReversePolarity*Constants::H_DIAGRAM_SPACING; pNextItem->setData(QPoint(deltaX,nReverseFirstDeltaY),Qt::UserRole + 2); continue; } @@ -1884,7 +1885,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(90,Qt::UserRole+5); } } - int deltaX = nXReverseIndex*nReversePolarity*g_nHDiagramSpacing; + int deltaX = nXReverseIndex*nReversePolarity*Constants::H_DIAGRAM_SPACING; pNextItem->setData(QPoint(deltaX,nReverseFirstDeltaY),Qt::UserRole + 2); nXReverseIndex += 1; } @@ -1931,7 +1932,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 90; } } - int deltaX = nXReverseIndex*nReversePolarity*g_nHDiagramSpacing; + int deltaX = nXReverseIndex*nReversePolarity*Constants::H_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(deltaX,nOrderFirstDeltaY); continue; } @@ -1965,7 +1966,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 90; } } - int deltaX = nXReverseIndex*nReversePolarity*g_nHDiagramSpacing; + int deltaX = nXReverseIndex*nReversePolarity*Constants::H_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(deltaX,nOrderFirstDeltaY); nXReverseIndex += 1; } @@ -1996,7 +1997,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da maoCompo[i].nUsedDirection |= 3; //其余左右都被占用(单线路记录,不可作为跨线判断依据) nDir = 3; } - int deltaX = nSegIndex*g_nHDiagramSpacing; + int deltaX = nSegIndex*Constants::H_DIAGRAM_SPACING; int rotate = 0; if(nMainDir == 1) rotate = -90; @@ -2189,7 +2190,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(180,Qt::UserRole+5); } } - int deltaY = nYOrderIndex*nOrderPolarity*g_nVDiagramSpacing; + int deltaY = nYOrderIndex*nOrderPolarity*Constants::V_DIAGRAM_SPACING; pNextItem->setData(QPoint(nOrderFirstDeltaX,deltaY),Qt::UserRole + 2); continue; } @@ -2223,7 +2224,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(180,Qt::UserRole+5); } } - int deltaY = nYOrderIndex*nOrderPolarity*g_nVDiagramSpacing; + int deltaY = nYOrderIndex*nOrderPolarity*Constants::V_DIAGRAM_SPACING; pNextItem->setData(QPoint(nOrderFirstDeltaX,deltaY),Qt::UserRole + 2); nYOrderIndex += 1; } @@ -2270,7 +2271,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 180; } } - int deltaY = nYOrderIndex*nOrderPolarity*g_nVDiagramSpacing; + int deltaY = nYOrderIndex*nOrderPolarity*Constants::V_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(nOrderFirstDeltaX,deltaY); continue; } @@ -2302,7 +2303,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 180; } } - int deltaY = nYOrderIndex*nOrderPolarity*g_nVDiagramSpacing; + int deltaY = nYOrderIndex*nOrderPolarity*Constants::V_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(nOrderFirstDeltaX,deltaY); nYOrderIndex += 1; } @@ -2358,7 +2359,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(180,Qt::UserRole+5); } } - int deltaY = nYReverseIndex*nReversePolarity*g_nVDiagramSpacing; + int deltaY = nYReverseIndex*nReversePolarity*Constants::V_DIAGRAM_SPACING; pNextItem->setData(QPoint(nReverseFirstDeltaX,deltaY),Qt::UserRole + 2); continue; } @@ -2394,7 +2395,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da pNextItem->setData(180,Qt::UserRole+5); } } - int deltaY = nYReverseIndex*nReversePolarity*g_nVDiagramSpacing; + int deltaY = nYReverseIndex*nReversePolarity*Constants::V_DIAGRAM_SPACING; pNextItem->setData(QPoint(nReverseFirstDeltaX,deltaY),Qt::UserRole + 2); nYReverseIndex += 1; } @@ -2441,7 +2442,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 180; } } - int deltaY = nYReverseIndex*nReversePolarity*g_nVDiagramSpacing; + int deltaY = nYReverseIndex*nReversePolarity*Constants::V_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(nReverseFirstDeltaX,deltaY); continue; } @@ -2477,7 +2478,7 @@ QRectF DiagramEditorModel::updateTarget(QMap& da compoNext.nRotate = 180; } } - int deltaY = nYReverseIndex*nReversePolarity*g_nVDiagramSpacing; + int deltaY = nYReverseIndex*nReversePolarity*Constants::V_DIAGRAM_SPACING; compoNext.deltaPos = QPoint(nReverseFirstDeltaX,deltaY); nYReverseIndex += 1; } diff --git a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp index c59d44d..c29c6ba 100644 --- a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp +++ b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp @@ -52,7 +52,8 @@ #include "graphicsItem/handleText.h" #include "bayMeasureDlg.h" #include "basePannelPropertyProxy.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/types.h" bool FixedPortsModel::_dataInitialised = false; @@ -88,13 +89,13 @@ FixedPortsModel::~FixedPortsModel() _cavas.clear(); } -QMap FixedPortsModel::allNodePos() const +QMap FixedPortsModel::allNodePos() const { - QMap map; + QMap map; for(auto pItem:_nodeItem) { if(pItem->getItemType() != GIT_link){ - itemPageInfo info; + ItemPageInfo info; double dWidth = pItem->boundingRect().width(); double dHeight = pItem->boundingRect().height(); info.pos = pItem->scenePos()/*+QPointF(dWidth*0.5,dHeight*0.5)*/; @@ -178,7 +179,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he QString sMeta = pro->metaModelName(); QString sProModel = pro->modelName(); - modelDataInfo mapValue = DataManager::instance().modelData()[sProModel]; + ModelDataInfo mapValue = DataManager::instance().modelData()[sProModel]; PropertyValueInfo valueInfo; //属性组设置的数据 (ct,pt二次绕组) if(mapValue.groupInfo.contains("base_extend")) { @@ -290,7 +291,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he int nCtSize = 0; //ct设置的个数 int nCtType = 0; //ct类型 1三相0零相 if(valueInfo.contains("ct_winding")){ - propertyStateInfo val = valueInfo.value("ct_winding"); + PropertyStateInfo val = valueInfo.value("ct_winding"); QJsonDocument jsonDocument = QJsonDocument::fromJson(val.defaultValue.toString().toUtf8().data()); if(!jsonDocument.isNull()){ @@ -302,7 +303,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he } } if(valueInfo.contains("phase_num")){ - propertyStateInfo val = valueInfo.value("phase_num"); + PropertyStateInfo val = valueInfo.value("phase_num"); nCtType = val.defaultValue.toInt(); } @@ -342,7 +343,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he if(!valueInfo.isEmpty()){ //使用设置的绕组数更新自己 QList lst; //二次绕组接法 if(valueInfo.contains("pt_sec_winding")){ - propertyStateInfo val = valueInfo.value("pt_sec_winding"); + PropertyStateInfo val = valueInfo.value("pt_sec_winding"); QJsonDocument jsonDocument = QJsonDocument::fromJson(val.defaultValue.toString().toUtf8().data()); if(!jsonDocument.isNull()){ @@ -623,7 +624,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he PropertyModel model = ProjectModelManager::instance().getData()[sMeta][sProModel]; QByteArray svg; if(model.modelSetting.mapSvg.isEmpty()){ - svg = DataBase::GetInstance()->ModelType()[15].icon; + svg = DataBase::GetInstance()->ModelType()[16].icon; } else{ svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["transformer_3w"]; @@ -703,7 +704,7 @@ void FixedPortsModel::loadNodeDataFromDataBase() { if(!_dataInitialised) { - QList lst= DataBase::GetInstance()->getAllComponents(); + QList lst= DataBase::GetInstance()->getAllComponents(); for(auto &info:lst) { QString preTag = removeSuffix(info.tag); @@ -757,7 +758,7 @@ void FixedPortsModel::loadNodeDataFromDataBase() pData->setMeasurement(mapMeasure); } - QList lstTopo = DataBase::GetInstance()->getAllTopologics(); + QList lstTopo = DataBase::GetInstance()->getAllTopologics(); for(auto &info:lstTopo) { QString from_pin = info.context["from_pin"].toString(); @@ -766,7 +767,7 @@ void FixedPortsModel::loadNodeDataFromDataBase() TopologyManager::instance().createConnection(QString::number(info.id),from_pin,to_pin,info.uuid_from.toString(),info.uuid_to.toString()); } - QList lstBay = DataBase::GetInstance()->getAllBay(); + QList lstBay = DataBase::GetInstance()->getAllBay(); for(auto& bay:lstBay) { QString showTag = removeSuffix(bay.tag); @@ -919,9 +920,9 @@ void FixedPortsModel::deleteNodeItem(GraphicsProjectModelItem* pItem) void FixedPortsModel::saveNode(int nPageId) { - QList lstGrid = DataBase::GetInstance()->getAllGrid(); - QList lstZone = DataBase::GetInstance()->getAllZone(); - QList lstStation = DataBase::GetInstance()->getAllStation(); + QList lstGrid = DataBase::GetInstance()->getAllGrid(); + QList lstZone = DataBase::GetInstance()->getAllZone(); + QList lstStation = DataBase::GetInstance()->getAllStation(); QMap groupMap = DataBase::GetInstance()->AttributeGroup(); //属性组名 bool bExist = DataBase::GetInstance()->componentExist(QUuid("11111111-1111-1111-1111-111111111111").toString()); bool bSaveFlag = false; @@ -1183,7 +1184,7 @@ void FixedPortsModel::saveNode(int nPageId) VariableProperty* pVariable = dynamic_cast(pData); if(pVariable) { - modelDataInfo& dataInfo = pVariable->getPropertyValue(); + ModelDataInfo& dataInfo = pVariable->getPropertyValue(); QString tempTag = pData->tag()+"_"+_pageName; //tag后加工程名使得全局唯一 if(exist) //已存在更新 { @@ -1661,7 +1662,7 @@ DiagramCavas* FixedPortsModel::getCavas() return nullptr; } -void FixedPortsModel::addPortsToItem_json(PortState sta,QJsonArray jArr,GraphicsProjectModelItem* pItem) +void FixedPortsModel::addPortsToItem_json(PortState sta,QJsonArray jArr,GraphicsBaseItem* pItem) { for(QJsonValueRef portJson:jArr) { @@ -1856,7 +1857,7 @@ void FixedPortsModel::updateItemLinePort(QUuid uid,ModelFunctionType type) void FixedPortsModel::showModelDlg(const QString& sName,QUuid uuid,GraphicsProjectModelItem* pItem) { - modelStateInfo stateInfo = _modelStateInfo[sName]; + ModelStateInfo stateInfo = _modelStateInfo[sName]; ModelDataMap mapData = DataManager::instance().modelData(); ItemPropertyDlg* pDlg = dynamic_cast(stateInfo._PropertyDlg); if(pDlg) @@ -1881,7 +1882,7 @@ void FixedPortsModel::initialPropertyDlg() void FixedPortsModel::generatePropertyDlg(const QString& sModel) { - modelStateInfo info = _modelStateInfo[sModel]; + ModelStateInfo info = _modelStateInfo[sModel]; if(info._PropertyDlg == NULL) { ItemPropertyDlg* dlg = new ItemPropertyDlg(_widget); @@ -2107,9 +2108,9 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QListonSignal_createDiagram(info); pProPanel = _cavas->getPanel(sPageName); } - QList lstGrid = DataBase::GetInstance()->getAllGrid(); - QList lstZone = DataBase::GetInstance()->getAllZone(); - QList lstStation = DataBase::GetInstance()->getAllStation(); + QList lstGrid = DataBase::GetInstance()->getAllGrid(); + QList lstZone = DataBase::GetInstance()->getAllZone(); + QList lstStation = DataBase::GetInstance()->getAllStation(); QString sG; QString sZ; QString sS; @@ -2155,14 +2156,14 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList lstFirst; + QList lstFirst; for(auto& pOtherItem:lstOther) { BayProperty* pBay = dynamic_cast(pOtherItem->getProperty()); if(pBay){ // 创建间隔项 - RelationItem bayInfo; + HierarchyItem bayInfo; bayInfo.item.nEquipType = 0; // 间隔的设备类型为0 bayInfo.item.nCategory = 1; // 类别为1表示间隔 bayInfo.item.sName = pBay->tag(); @@ -2180,7 +2181,7 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList lstSecond; + QList lstSecond; // 建立间隔UUID到间隔标签的映射,提高查找效率 QHash bayUuidToTag; @@ -2196,7 +2197,7 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList(pBaseItem->getProperty()); - RelationItem info; + HierarchyItem info; info.item.nEquipType = pBase->type(); info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = pBase->name(); @@ -2267,12 +2268,12 @@ void FixedPortsModel::onWizardFinished(QMap mapIte } //pPanel->getModelController()->addTestData(); - QList lstItem; + QList lstItem; for(auto pItem:mapItem){ auto cloneItem = pItem->clone(); BaseModelProperty* pPro = BasePropertyManager::instance().findBaseEntityData(cloneItem->itemId()); if(pPro){ - RelationItem info; + HierarchyItem info; info.item.nEquipType = pPro->type(); info.item.nCategory = 0; // 类别为0表示设备 info.item.sName = pPro->name(); @@ -2392,12 +2393,12 @@ void FixedPortsModel::onWizardFinished(QMap mapIte //_widget->getView()->centerOn(center); //**************间隔************* - QList lstBay; + QList lstBay; for(auto item:mapBlock){ auto p = item->getBlockData(); //获取blockitem对应的data //间隔信息 - RelationItem bayInfo; + HierarchyItem bayInfo; bayInfo.item.nEquipType = 0; // 间隔的设备类型为0 bayInfo.item.nCategory = 1; // 类别为1表示间隔 bayInfo.item.sName = p->getName(); @@ -3390,7 +3391,7 @@ QList FixedPortsModel::turnJsonArrToList(QJsonObject object,QString sInne return lst; } -void FixedPortsModel::generateMonitor(QString sPage,QList lst) +void FixedPortsModel::generateMonitor(QString sPage,QList lst) { MonitorPanel* pPanel = nullptr; if(_cavas){ @@ -3407,8 +3408,8 @@ void FixedPortsModel::generateMonitor(QString sPage,QList lst) _widget->getGeneratePanelLst().append(sPage); //记录生成的运行页 pPanel->setParentPage(_pageName); //生成页记录被哪个组态生成 - QList lstFirst; - QList lstSecond; + QList lstFirst; + QList lstSecond; for(auto& itemInfo:lst) //第一次循环处理间隔 { if(itemInfo.item.nCategory == 1){ //间隔 @@ -3490,14 +3491,14 @@ void FixedPortsModel::generateMonitorConfig(MonitorPanel* pPanel) if(pPro){ QString sModel = pPro->modelName(); QUuid uid = pPro->uuid(); - QList lstInfo; + QList lstInfo; if(itemState.contains(sModel)){ //动态表字段数据使用modelState初始化(兼容无值情况) auto mapData = itemState.value(sModel).groupInfo; for(auto iter = mapData.begin();iter != mapData.end();++iter){ if(iter.value().isPublic == true) //公共属性组暂不显示 continue; for(auto& attr: iter.value().info){ - monitorItemAttributeInfo info; + MonitorItemAttributeInfo info; info.sGroup = iter.key(); info.sTag = attr.tagName; info.sName = attr.name; @@ -3513,7 +3514,7 @@ void FixedPortsModel::generateMonitorConfig(MonitorPanel* pPanel) if(iter.key() == "bay"){ //量测数据放到间隔组 auto mapMeasure = pPro->getMeasurement(); for(auto it = mapMeasure.begin(); it != mapMeasure.end();++it){ - monitorItemAttributeInfo info; + MonitorItemAttributeInfo info; info.sGroup = iter.key(); info.sTag = it->name; info.sName = it->tag; @@ -3584,7 +3585,7 @@ void FixedPortsModel::updateMonitorDisplay() for(auto iter = m_monitorDisplaySetting.begin();iter != m_monitorDisplaySetting.end();++iter){ //将设置的显示数据更新到item(显示数据不放入item的property) if(iter.key().sTag == sMeta){ pItem->setMonitorDisplayInfo(iter.value()); - pItem->updateCurState(monitorItemState::Normal); + pItem->updateCurState(MonitorItemState::Normal); break; } } diff --git a/diagramCavas/source/graphicsItem/electricSvgGroup.cpp b/diagramCavas/source/graphicsItem/electricSvgGroup.cpp index 5a2e6e7..acbbc92 100644 --- a/diagramCavas/source/graphicsItem/electricSvgGroup.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgGroup.cpp @@ -84,7 +84,7 @@ void ElectricSvgGroup::paint(QPainter* painter, const QStyleOptionGraphicsItem* } } -void ElectricSvgGroup::updateCurState(monitorItemState e) +void ElectricSvgGroup::updateCurState(MonitorItemState e) { GraphicsProjectModelItem::updateCurState(e); for(auto& p:m_childItems){ @@ -140,7 +140,7 @@ void ElectricSvgGroup::updateMapSvg(QMap map,QString sIndex) updateItem(); } -void ElectricSvgGroup::setMonitorDisplayInfo(QMap info) +void ElectricSvgGroup::setMonitorDisplayInfo(QMap info) { GraphicsProjectModelItem::setMonitorDisplayInfo(info); for(auto& p:m_childItems){ diff --git a/diagramCavas/source/graphicsItem/electricSvgGroupCT.cpp b/diagramCavas/source/graphicsItem/electricSvgGroupCT.cpp index 11d3ecb..0f2dae3 100644 --- a/diagramCavas/source/graphicsItem/electricSvgGroupCT.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgGroupCT.cpp @@ -2,7 +2,7 @@ #include "graphicsItem/electricSvgItemCT.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include @@ -89,8 +89,6 @@ void ElectricSvgGroupCT::paint(QPainter* painter, const QStyleOptionGraphicsItem void ElectricSvgGroupCT::initial() { setHandleIfShow(H_textCaption,false); - setHandleIfShow(H_textCurrent,false); - setHandleIfShow(h_textVoltage,false); setHandleVisible(false); setFunctionHandleIfShow(false); setFunctionHandleEnaable(false); diff --git a/diagramCavas/source/graphicsItem/electricSvgGroupPT.cpp b/diagramCavas/source/graphicsItem/electricSvgGroupPT.cpp index c3131a5..f564dc4 100644 --- a/diagramCavas/source/graphicsItem/electricSvgGroupPT.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgGroupPT.cpp @@ -2,7 +2,7 @@ #include "graphicsItem/electricSvgItemPT.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include @@ -97,7 +97,7 @@ void ElectricSvgGroupPT::initial() void ElectricSvgGroupPT::updateItem() { - for(auto pItem:m_childItems){ + for(auto &pItem:m_childItems){ delete pItem; } m_childItems.clear(); diff --git a/diagramCavas/source/graphicsItem/electricSvgItem.cpp b/diagramCavas/source/graphicsItem/electricSvgItem.cpp index d6a850d..7502618 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItem.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItem.cpp @@ -201,7 +201,7 @@ void ElectricSvgItem::editShape(int nHandle,const QPointF& ptMouse) updateHandles(); } -void ElectricSvgItem::updateCurState(monitorItemState e) +void ElectricSvgItem::updateCurState(MonitorItemState e) { GraphicsProjectModelItem::updateCurState(e); if(m_pCustomRender == nullptr){ diff --git a/diagramCavas/source/graphicsItem/electricSvgItem2wTransformer.cpp b/diagramCavas/source/graphicsItem/electricSvgItem2wTransformer.cpp index 4091e3e..7526159 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItem2wTransformer.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItem2wTransformer.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItem2wTransformer.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItem3wTransformer.cpp b/diagramCavas/source/graphicsItem/electricSvgItem3wTransformer.cpp index 667f161..4a820ac 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItem3wTransformer.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItem3wTransformer.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItem3wTransformer.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemCT.cpp b/diagramCavas/source/graphicsItem/electricSvgItemCT.cpp index 72a5c27..727e5e4 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemCT.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemCT.cpp @@ -1,5 +1,5 @@ #include "graphicsItem/electricSvgItemCT.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemCableEnd.cpp b/diagramCavas/source/graphicsItem/electricSvgItemCableEnd.cpp index 38cdfc5..309e10d 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemCableEnd.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemCableEnd.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemCableEnd.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemCableTer.cpp b/diagramCavas/source/graphicsItem/electricSvgItemCableTer.cpp index 895a70b..0969778 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemCableTer.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemCableTer.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemCableTer.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemDS.cpp b/diagramCavas/source/graphicsItem/electricSvgItemDS.cpp index 4e57a9b..3e5bdd6 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemDS.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemDS.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemDS.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemDTEDS.cpp b/diagramCavas/source/graphicsItem/electricSvgItemDTEDS.cpp index db679b3..c62a473 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemDTEDS.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemDTEDS.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemDTEDS.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemES.cpp b/diagramCavas/source/graphicsItem/electricSvgItemES.cpp index bb3eef0..555d24d 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemES.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemES.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemES.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemFES.cpp b/diagramCavas/source/graphicsItem/electricSvgItemFES.cpp index 52f95e7..e575b07 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemFES.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemFES.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemFES.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemLA.cpp b/diagramCavas/source/graphicsItem/electricSvgItemLA.cpp index 1d1d907..ae714ac 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemLA.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemLA.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemLA.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemPI.cpp b/diagramCavas/source/graphicsItem/electricSvgItemPI.cpp index a7d5425..ca92183 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemPI.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemPI.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemPI.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemPT.cpp b/diagramCavas/source/graphicsItem/electricSvgItemPT.cpp index a1c7161..ffec79d 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemPT.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemPT.cpp @@ -1,5 +1,5 @@ #include "graphicsItem/electricSvgItemPT.h" -#include "global.h" +//#include "global.h" #include #include diff --git a/diagramCavas/source/graphicsItem/electricSvgItemRect.cpp b/diagramCavas/source/graphicsItem/electricSvgItemRect.cpp index 50f7e03..f12f56d 100644 --- a/diagramCavas/source/graphicsItem/electricSvgItemRect.cpp +++ b/diagramCavas/source/graphicsItem/electricSvgItemRect.cpp @@ -1,7 +1,7 @@ #include "graphicsItem/electricSvgItemRect.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" -#include "global.h" +//#include "global.h" #include #include @@ -78,8 +78,6 @@ void ElectricSvgItemRect::paint(QPainter* painter, const QStyleOptionGraphicsIte void ElectricSvgItemRect::initial() { setHandleIfShow(H_textCaption,false); - setHandleIfShow(H_textCurrent,false); - setHandleIfShow(h_textVoltage,false); setHandleVisible(false); setFunctionHandleIfShow(false); setFunctionHandleEnaable(false); diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.cpp new file mode 100644 index 0000000..eaaa605 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.cpp @@ -0,0 +1,974 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.h" +#include +#include +#include + +ElectricFunctionModelConnectLineItem::ElectricFunctionModelConnectLineItem(QGraphicsItem *parent) + : GraphicsFunctionModelItem(parent) +{ + initial(); +} + +ElectricFunctionModelConnectLineItem::~ElectricFunctionModelConnectLineItem() +{ +} + +void ElectricFunctionModelConnectLineItem::initial() +{ + m_boundingRect = QRectF(); + m_pen = QPen(Qt::black); + m_brush = QBrush(Qt::NoBrush); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + m_lstPoints.push_back(QPointF()); //起点 + m_lstPoints.push_back(QPointF()); //终点 + _curLine = QPoint(); +} + + +void ElectricFunctionModelConnectLineItem::setStartPoint(const QPointF& p) +{ + if (m_lstPoints.size() >= 2) { + // 保存终点 + QPointF endPoint = m_lstPoints.last(); + + // 清空并设置新起点 + m_lstPoints.clear(); + m_lstPoints.append(p); + m_lstPoints.append(endPoint); + + // 重新计算路径 + calculatePath(); + } else if (m_lstPoints.size() == 1) { + m_lstPoints[0] = p; + } else { + m_lstPoints.append(p); + } + update(); +} +void ElectricFunctionModelConnectLineItem::setEndPoint(const QPointF& p) +{ + if (m_lstPoints.size() >= 2) { + // 保存起点 + QPointF startPoint = m_lstPoints.first(); + + // 清空并设置新终点 + m_lstPoints.clear(); + m_lstPoints.append(startPoint); + m_lstPoints.append(p); + + // 重新计算路径 + calculatePath(); + } else if (m_lstPoints.size() == 1) { + m_lstPoints.append(p); + } else { + m_lstPoints.append(p); + } + update(); +} + +// 开始拖拽 +void ElectricFunctionModelConnectLineItem::startDrag(const QPointF& scenePos) +{ + qDebug() << "\n=== START DRAG ==="; + + // 重置状态 + m_dragData.isActive = false; + m_dragData.segmentIndex = -1; + + QPointF itemPos = mapFromScene(scenePos); + qDebug() << "Item pos:" << itemPos; + + // 从路径提取点 + QList points = extractPointsFromPath(); + qDebug() << "Extracted" << points.size() << "points from path"; + + // 查找线段 + int segmentIndex = findSegmentAt(points, itemPos); + + if (segmentIndex >= 0) { + m_dragData.isActive = true; + m_dragData.segmentIndex = segmentIndex; + m_dragData.startScenePos = scenePos; + m_dragData.originalPath = m_points; // 保存原始路径 + + // 判断线段方向 + if (segmentIndex < points.size() - 1) { + QPointF p1 = points[segmentIndex]; + QPointF p2 = points[segmentIndex + 1]; + m_dragData.isVertical = qFuzzyCompare(p1.x(), p2.x()); + } + + qDebug() << "✓ Dragging segment" << segmentIndex; + } +} + +// 更新拖拽 +void ElectricFunctionModelConnectLineItem::updateDrag(const QPointF& scenePos) +{ + if (!m_dragData.isActive) { + return; + } + + int idx = m_dragData.segmentIndex; + + // 从原始路径提取点 + QList points = extractPointsFromPath(m_dragData.originalPath); + + // 安全检查 + if (idx < 0 || idx >= points.size() - 1) { + qWarning() << "Invalid segment index:" << idx; + m_dragData.isActive = false; + return; + } + + // 计算移动距离 + QPointF startItemPos = mapFromScene(m_dragData.startScenePos); + QPointF currentItemPos = mapFromScene(scenePos); + QPointF delta = currentItemPos - startItemPos; + + // 获取当前线段 + QPointF& p1 = points[idx]; + QPointF& p2 = points[idx + 1]; + + // 限制移动方向 + if (m_dragData.isVertical) { + // 垂直线段:只能水平移动 + delta.setY(0); + + // 移动线段 + p1.rx() += delta.x(); + p2.rx() += delta.x(); + } else { + // 水平线段:只能垂直移动 + delta.setX(0); + + p1.ry() += delta.y(); + p2.ry() += delta.y(); + } + + // 修复连接 + fixConnections(points, idx, m_dragData.isVertical); + + // 更新拖拽起点 + m_dragData.startScenePos = scenePos; + + // 应用修改后的点 + applyPointsToPath(points); + + // 重新计算路径(调用原有的 calculatePath) + calculatePath(); + update(); +} +// 结束拖拽 +void ElectricFunctionModelConnectLineItem::endDrag() +{ + qDebug() << "\n" << QString(50, '='); + qDebug() << "END DRAG"; + qDebug() << QString(50, '='); + + if (!m_dragData.isActive) { + qDebug() << "No active drag to end"; + return; + } + + qDebug() << "Drag was active on segment:" << m_dragData.segmentIndex; + + // 验证和修复路径 + validateAndFixPath(); + + // 重置状态 + m_dragData.isActive = false; + m_dragData.segmentIndex = -1; + m_dragData.isVertical = false; + m_dragData.startScenePos = QPointF(); + m_dragData.originalPath = QPainterPath(); + + // 恢复光标 + setCursor(Qt::ArrowCursor); + + // 确保场景更新 + update(); + + qDebug() << "✓ Drag ended successfully"; + qDebug() << QString(50, '=') << "\n"; +} + +void ElectricFunctionModelConnectLineItem::setLastPoint(const QPointF& point) +{ + m_lastPoint = point; +} + +void ElectricFunctionModelConnectLineItem::setPath(const QPainterPath& path) +{ + qDebug() << "\n=== setPath ==="; + + if (m_points == path) { + return; + } + + prepareGeometryChange(); + m_points = path; // 使用已有的 m_points + updateBoundingRect(); + update(); +} + +QPainterPath ElectricFunctionModelConnectLineItem::shape() const +{ + // 使用路径的轮廓 + if (m_points.isEmpty()) { + return QPainterPath(); + } + + QPainterPathStroker stroker; + stroker.setWidth(8.0); // 选择区域宽度 + + QPainterPath shape = stroker.createStroke(m_points); + return shape; +} + +QRectF ElectricFunctionModelConnectLineItem::boundingRect() const +{ + QRectF rect = shape().boundingRect(); + + // 如果shape为空,使用路径边界 + if (rect.isNull() && !m_points.isEmpty()) { + rect = m_points.boundingRect().adjusted(-5, -5, 5, 5); + } + + return rect; +} + +void ElectricFunctionModelConnectLineItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + if (option->state & QStyle::State_Selected) + { + painter->setPen(Qt::red); + } + else + { + if(_curMonitorStateEnable){ //当前状态被设置 + painter->setPen(QPen(_curMonitorStateColor)); + } + else + painter->setPen(m_pen); + } + + painter->setBrush(m_brush); + + painter->drawPath(m_points); +} + +void ElectricFunctionModelConnectLineItem::calculatePath() +{ + if (m_lstPoints.size() < 2) return; + + QPointF start = m_lstPoints.first(); + QPointF end = m_lstPoints.last(); + + qDebug() << "\n=== calculatePath ==="; + qDebug() << "Start:" << start << "End:" << end; + + // 创建新路径 + m_points = QPainterPath(); + m_points.moveTo(start); + qDebug() << "Initialized path, current position:" << m_points.currentPosition(); + + // 获取元件 + QList components = getAllComponentRects(); + qDebug() << "Found" << components.size() << "components"; + + // 检查起点终点距离 + qDebug() << "Distance:" << QLineF(start, end).length(); + + // 如果距离很近,直接连接 + if (QLineF(start, end).length() < 10) { + qDebug() << "Points are very close, direct connection"; + m_points.lineTo(end); + } else { + // 生成路径 + generateAvoidancePath(start, end, components); + } + + // 验证路径 + qDebug() << "After generation - Path element count:" << m_points.elementCount(); + qDebug() << "After generation - Current position:" << m_points.currentPosition(); + + if (m_points.elementCount() <= 1) { + qWarning() << "Path has only" << m_points.elementCount() << "elements! Adding direct line"; + m_points.lineTo(end); + } + + // 确保路径结束于终点 + if (m_points.currentPosition() != end) { + qWarning() << "Path does not end at destination! Adding final segment"; + qDebug() << "Expected end:" << end << "Actual end:" << m_points.currentPosition(); + m_points.lineTo(end); + } + + update(); + m_boundingRect = m_points.boundingRect(); + prepareGeometryChange(); + + qDebug() << "Final path bounds:" << m_boundingRect; + qDebug() << "=== calculatePath end ===\n"; +} + +// 使用形状进行避障 +void ElectricFunctionModelConnectLineItem::generateAvoidancePath(const QPointF& start, const QPointF& end, + const QList& components) +{ + qDebug() << "=== generateAvoidancePath (rectilinear) ==="; + + m_points = QPainterPath(); + m_points.moveTo(start); + + // 生成候选路径列表,按长度排序 + QMultiMap> candidatePaths; + + // 1. 收集所有可能的直角路径 + collectRectilinearPaths(start, end, components, candidatePaths); + + // 2. 选择最短的安全路径 + for (auto it = candidatePaths.begin(); it != candidatePaths.end(); ++it) { + const QList& path = it.value(); + + if (isPathSafe(path, components)) { + qDebug() << " Selected path with length" << it.key() << ":" << path; + + // 绘制路径 + for (int i = 1; i < path.size(); i++) { + m_points.lineTo(path[i]); + } + return; + } + } + + // 3. 所有路径都失败,使用强制绕行 + qDebug() << " All rectilinear paths failed, using forced bypass"; + generateForcedRectilinearBypass(start, end, components); +} + +// 计算路径长度 +double ElectricFunctionModelConnectLineItem::calculatePathLength(const QList& path) +{ + double length = 0; + for (int i = 0; i < path.size() - 1; i++) { + length += QLineF(path[i], path[i+1]).length(); + } + return length; +} + + +// 单一线段与矩形相交检测 +bool ElectricFunctionModelConnectLineItem::lineIntersectsRect(const QLineF& line, const QRectF& rect) const +{ + // 检查端点是否在矩形内 + if (rect.contains(line.p1()) || rect.contains(line.p2())) { + return true; + } + + // 检查是否与矩形的边相交 + QLineF edges[4] = { + QLineF(rect.topLeft(), rect.topRight()), + QLineF(rect.topRight(), rect.bottomRight()), + QLineF(rect.bottomRight(), rect.bottomLeft()), + QLineF(rect.bottomLeft(), rect.topLeft()) + }; + + QPointF intersection; + for (int i = 0; i < 4; i++) { + if (line.intersects(edges[i], &intersection) == QLineF::BoundedIntersection) { + return true; + } + } + + return false; +} + +// 辅助方法实现 +bool ElectricFunctionModelConnectLineItem::isSegmentSafe(const QPointF& p1, const QPointF& p2, + const QList& components) +{ + QLineF segment(p1, p2); + + for (const QRectF& component : components) { + if (segmentPenetratesComponent(segment, component)) { + return false; + } + } + + return true; +} + +bool ElectricFunctionModelConnectLineItem::isPathSafe(const QList& path, + const QList& components) +{ + for (int i = 0; i < path.size() - 1; i++) { + if (!isSegmentSafe(path[i], path[i+1], components)) { + return false; + } + } + return true; +} + +// 检查线段是否穿透元件 +bool ElectricFunctionModelConnectLineItem::segmentPenetratesComponent(const QLineF& segment, + const QRectF& component) +{ + // 检查线段端点是否在元件内 + bool p1Inside = component.contains(segment.p1()); + bool p2Inside = component.contains(segment.p2()); + + if (p1Inside && p2Inside) { + // 线段完全在元件内 + return true; + } + + // 获取与元件的交点 + int intersectionCount = 0; + QLineF edges[4] = { + QLineF(component.topLeft(), component.topRight()), + QLineF(component.topRight(), component.bottomRight()), + QLineF(component.bottomRight(), component.bottomLeft()), + QLineF(component.bottomLeft(), component.topLeft()) + }; + + QPointF intersection; + for (int i = 0; i < 4; i++) { + if (segment.intersects(edges[i], &intersection) == QLineF::BoundedIntersection) { + intersectionCount++; + } + } + + // 如果线段与元件有2个或更多交点,说明穿透了元件 + return intersectionCount >= 2; +} + +// 获取所有元件的总边界 +QRectF ElectricFunctionModelConnectLineItem::getTotalComponentsBounds(const QList& components) +{ + if (components.isEmpty()) { + return QRectF(); + } + + QRectF total = components.first(); + for (int i = 1; i < components.size(); i++) { + total = total.united(components[i]); + } + + return total; +} + +// 收集所有可能的直角路径 +void ElectricFunctionModelConnectLineItem::collectRectilinearPaths(const QPointF& start, const QPointF& end, + const QList& components, + QMultiMap>& paths) +{ + // 2段路径 + QPointF turn1(start.x(), end.y()); // 水平-垂直 + QPointF turn2(end.x(), start.y()); // 垂直-水平 + + addPathIfRectilinear({start, turn1, end}, paths); + addPathIfRectilinear({start, turn2, end}, paths); + + // 3段路径 + double midX = (start.x() + end.x()) / 2; + double midY = (start.y() + end.y()) / 2; + + // 水平-垂直-水平 + addPathIfRectilinear({start, + QPointF(start.x(), midY), + QPointF(end.x(), midY), + end}, paths); + + // 垂直-水平-垂直 + addPathIfRectilinear({start, + QPointF(midX, start.y()), + QPointF(midX, end.y()), + end}, paths); + + // 4段路径(绕行) + collectBypassPaths(start, end, components, paths); +} + +// 添加路径(如果是直角) +void ElectricFunctionModelConnectLineItem::addPathIfRectilinear(const QList& path, + QMultiMap>& paths) +{ + // 检查是否所有线段都是水平或垂直 + for (int i = 0; i < path.size() - 1; i++) { + if (path[i].x() != path[i+1].x() && path[i].y() != path[i+1].y()) { + return; // 不是直角 + } + } + + double length = calculatePathLength(path); + paths.insert(length, path); +} + +// 收集绕行路径 +void ElectricFunctionModelConnectLineItem::collectBypassPaths(const QPointF& start, const QPointF& end, + const QList& components, + QMultiMap>& paths) +{ + if (components.isEmpty()) return; + + // 获取所有元件的总边界 + QRectF totalBounds = getTotalComponentsBounds(components); + if (!totalBounds.isValid()) return; + + const double clearance = 20.0; + QRectF expanded = totalBounds.adjusted(-clearance, -clearance, clearance, clearance); + + // 从上方绕行 + addPathIfRectilinear({start, + QPointF(start.x(), expanded.top()), + QPointF(end.x(), expanded.top()), + end}, paths); + + // 从下方绕行 + addPathIfRectilinear({start, + QPointF(start.x(), expanded.bottom()), + QPointF(end.x(), expanded.bottom()), + end}, paths); + + // 从左方绕行 + addPathIfRectilinear({start, + QPointF(expanded.left(), start.y()), + QPointF(expanded.left(), end.y()), + end}, paths); + + // 从右方绕行 + addPathIfRectilinear({start, + QPointF(expanded.right(), start.y()), + QPointF(expanded.right(), end.y()), + end}, paths); +} + +// 强制直角绕行 +void ElectricFunctionModelConnectLineItem::generateForcedRectilinearBypass(const QPointF& start, const QPointF& end, + const QList& components) +{ + qDebug() << " In generateForcedRectilinearBypass"; + + // 找到阻挡的元件 + QRectF blocking = findFirstBlockingComponent(start, end, components); + + if (blocking.isValid()) { + qDebug() << " Blocking component:" << blocking; + + // 从上方或下方绕过 + const double clearance = 15.0; + double bypassY = (start.y() < blocking.center().y()) ? + blocking.top() - clearance : blocking.bottom() + clearance; + + QList path = {start, + QPointF(start.x(), bypassY), + QPointF(end.x(), bypassY), + end}; + + qDebug() << " Forced bypass path:" << path; + + for (int i = 1; i < path.size(); i++) { + m_points.lineTo(path[i]); + } + } else { + // 没有阻挡,使用简单的直角路径 + qDebug() << " No blocking component, using simple orthogonal path"; + QPointF turnPoint = (qAbs(start.x() - end.x()) < qAbs(start.y() - end.y())) ? + QPointF(end.x(), start.y()) : QPointF(start.x(), end.y()); + + m_points.lineTo(turnPoint); + m_points.lineTo(end); + } +} + +// 找到第一个阻挡的元件 +QRectF ElectricFunctionModelConnectLineItem::findFirstBlockingComponent(const QPointF& start, const QPointF& end, + const QList& components) +{ + QLineF line(start, end); + + for (const QRectF& rect : components) { + if (lineIntersectsRect(line, rect)) { + return rect; + } + } + + return QRectF(); +} + +double ElectricFunctionModelConnectLineItem::distancePointToLine(const QLineF& line, const QPointF& point) const +{ + // 向量法计算点到线段的最短距离 + + if (line.isNull()) { + return QLineF(point, line.p1()).length(); + } + + QPointF v = line.p2() - line.p1(); // 线段向量 + QPointF w = point - line.p1(); // 点到线段起点的向量 + + // 计算点积 + double c1 = w.x() * v.x() + w.y() * v.y(); // w·v + if (c1 <= 0.0) { + // 点在线段起点后方 + return QLineF(point, line.p1()).length(); + } + + double c2 = v.x() * v.x() + v.y() * v.y(); // v·v + if (c2 <= c1) { + // 点在线段终点前方 + return QLineF(point, line.p2()).length(); + } + + // 计算投影点 + double b = c1 / c2; + QPointF projection = line.p1() + b * v; + return QLineF(point, projection).length(); +} + +void ElectricFunctionModelConnectLineItem::ensureEnoughPointsForDrag() +{ + qDebug() << "\n=== ensureEnoughPointsForDrag ==="; + qDebug() << "Current points:" << m_lstPoints.size(); + + if (m_lstPoints.size() < 2) { + qWarning() << "Not enough points!"; + return; + } + + // 如果是只有2个点的直线,需要添加转折点 + if (m_lstPoints.size() == 2) { + QPointF start = m_lstPoints[0]; + QPointF end = m_lstPoints[1]; + + // 如果是斜线,添加转折点 + if (start.x() != end.x() && start.y() != end.y()) { + QPointF turnPoint; + + // 选择转折方式 + if (qAbs(end.x() - start.x()) < qAbs(end.y() - start.y())) { + // 接近垂直,先水平 + turnPoint = QPointF(end.x(), start.y()); + } else { + // 接近水平,先垂直 + turnPoint = QPointF(start.x(), end.y()); + } + + m_lstPoints.insert(1, turnPoint); + qDebug() << "Added turn point:" << turnPoint; + qDebug() << "Now have" << m_lstPoints.size() << "points"; + + // 重新计算路径 + calculatePath(); + } + } +} + +void ElectricFunctionModelConnectLineItem::debugPathState(const QString& context) const +{ + qDebug() << "\n=== Debug Path State:" << context << "==="; + qDebug() << "m_lstPoints count:" << m_lstPoints.size(); + qDebug() << "m_dragState.isDragging:" << m_dragData.isActive; + qDebug() << "m_dragState.segmentIndex:" << m_dragData.segmentIndex; + qDebug() << "m_dragState.isVertical:" << m_dragData.isVertical; + + for (int i = 0; i < m_lstPoints.size(); i++) { + qDebug() << QString(" Point[%1]: (%2, %3)") + .arg(i) + .arg(m_lstPoints[i].x(), 0, 'f', 1) + .arg(m_lstPoints[i].y(), 0, 'f', 1); + } + + // 检查每个线段 + for (int i = 0; i < m_lstPoints.size() - 1; i++) { + QPointF p1 = m_lstPoints[i]; + QPointF p2 = m_lstPoints[i + 1]; + + bool isVertical = qFuzzyCompare(p1.x(), p2.x()); + bool isHorizontal = qFuzzyCompare(p1.y(), p2.y()); + + QString type = "DIAGONAL"; + if (isVertical) type = "VERTICAL"; + else if (isHorizontal) type = "HORIZONTAL"; + + qDebug() << QString(" Segment[%1]: %2, length=%3") + .arg(i) + .arg(type) + .arg(QLineF(p1, p2).length(), 0, 'f', 1); + } +} + +QVector ElectricFunctionModelConnectLineItem::extractSegmentsFromPainterPath() const +{ + QVector segments; + + if (m_points.isEmpty()) { + return segments; + } + + // 遍历QPainterPath的所有元素 + QPointF lastPoint; + bool hasLastPoint = false; + + for (int i = 0; i < m_points.elementCount(); i++) { + QPainterPath::Element elem = m_points.elementAt(i); + QPointF currentPoint(elem.x, elem.y); + + switch (elem.type) { + case QPainterPath::MoveToElement: + lastPoint = currentPoint; + hasLastPoint = true; + break; + + case QPainterPath::LineToElement: + if (hasLastPoint) { + segments.append(QLineF(lastPoint, currentPoint)); + } + lastPoint = currentPoint; + hasLastPoint = true; + break; + + case QPainterPath::CurveToElement: + // 处理曲线(如果需要) + break; + + case QPainterPath::CurveToDataElement: + // 曲线数据 + break; + } + } + + return segments; +} + +int ElectricFunctionModelConnectLineItem::findSegmentAt(const QList& points, + const QPointF& itemPos) const +{ + if (points.size() < 2) { + return -1; + } + + const double HIT_TOLERANCE = 10.0; + int bestSegment = -1; + double bestDistance = HIT_TOLERANCE; + + for (int i = 0; i < points.size() - 1; i++) { + QLineF segment(points[i], points[i + 1]); + + // 计算距离 + double distance = distanceToSegment(segment, itemPos); + + if (distance < bestDistance) { + bestDistance = distance; + bestSegment = i; + } + } + + return bestSegment; +} + +double ElectricFunctionModelConnectLineItem::distanceToSegment(const QLineF& segment, const QPointF& point) const +{ + if (segment.isNull()) { + return std::numeric_limits::max(); + } + + // 检查是否是正交线段 + bool isHorizontal = qFuzzyCompare(segment.y1(), segment.y2()); + bool isVertical = qFuzzyCompare(segment.x1(), segment.x2()); + + if (isHorizontal) { + // 水平线段 + double minX = qMin(segment.x1(), segment.x2()); + double maxX = qMax(segment.x1(), segment.x2()); + double y = segment.y1(); + + if (point.x() >= minX && point.x() <= maxX) { + return qAbs(point.y() - y); + } else if (point.x() < minX) { + return QLineF(point, QPointF(minX, y)).length(); + } else { + return QLineF(point, QPointF(maxX, y)).length(); + } + } + else if (isVertical) { + // 垂直线段 + double minY = qMin(segment.y1(), segment.y2()); + double maxY = qMax(segment.y1(), segment.y2()); + double x = segment.x1(); + + if (point.y() >= minY && point.y() <= maxY) { + return qAbs(point.x() - x); + } else if (point.y() < minY) { + return QLineF(point, QPointF(x, minY)).length(); + } else { + return QLineF(point, QPointF(x, maxY)).length(); + } + } + else { + // 斜线(理论上不应该出现) + return QLineF(segment.p1(), point).length(); + } +} + +QList ElectricFunctionModelConnectLineItem::extractPointsFromPath() const +{ + QList points; + + if (m_points.isEmpty()) { + return points; + } + + // 从 QPainterPath 提取所有点 + for (int i = 0; i < m_points.elementCount(); i++) { + QPainterPath::Element elem = m_points.elementAt(i); + if (elem.type == QPainterPath::MoveToElement || + elem.type == QPainterPath::LineToElement) { + points.append(QPointF(elem.x, elem.y)); + } + } + + return points; +} + +QList ElectricFunctionModelConnectLineItem::extractPointsFromPath(const QPainterPath& path) const +{ + QList points; + + if (path.isEmpty()) { + return points; + } + + for (int i = 0; i < path.elementCount(); i++) { + QPainterPath::Element elem = path.elementAt(i); + if (elem.type == QPainterPath::MoveToElement || + elem.type == QPainterPath::LineToElement) { + points.append(QPointF(elem.x, elem.y)); + } + } + + return points; +} + +void ElectricFunctionModelConnectLineItem::applyPointsToPath(const QList& points) +{ + if (points.size() < 2) { + m_points = QPainterPath(); + return; + } + + QPainterPath newPath; + newPath.moveTo(points.first()); + + for (int i = 1; i < points.size(); i++) { + newPath.lineTo(points[i]); + } + + m_points = newPath; + setPath(m_points); +} + +void ElectricFunctionModelConnectLineItem::fixConnections(QList& points, + int segmentIndex, bool isVertical) +{ + int n = points.size(); + if (n < 3) { + return; + } + + if (isVertical) { + // 垂直线段移动 + if (segmentIndex > 0) { + points[segmentIndex - 1].setX(points[segmentIndex].x()); + } + if (segmentIndex + 2 < n) { + points[segmentIndex + 2].setX(points[segmentIndex + 1].x()); + } + } else { + // 水平线段移动 + if (segmentIndex > 0) { + points[segmentIndex - 1].setY(points[segmentIndex].y()); + } + if (segmentIndex + 2 < n) { + points[segmentIndex + 2].setY(points[segmentIndex + 1].y()); + } + } +} + +void ElectricFunctionModelConnectLineItem::validateAndFixPath() +{ + qDebug() << "Validating and fixing path..."; + + QList points = extractPointsFromPath(); + + if (points.size() < 2) { + qWarning() << "Path has less than 2 points"; + return; + } + + bool needsFix = false; + + // 检查每个线段 + for (int i = 0; i < points.size() - 1; i++) { + QPointF& p1 = points[i]; + QPointF& p2 = points[i + 1]; + + // 检查是否正交 + if (!qFuzzyCompare(p1.x(), p2.x()) && !qFuzzyCompare(p1.y(), p2.y())) { + qDebug() << "Fixing non-orthogonal segment" << i; + + // 选择主要方向 + double dx = qAbs(p2.x() - p1.x()); + double dy = qAbs(p2.y() - p1.y()); + + if (dx < dy) { + p2.setX(p1.x()); // 改为垂直 + } else { + p2.setY(p1.y()); // 改为水平 + } + + needsFix = true; + } + } + + // 移除连续重复点 + QList cleanedPoints; + cleanedPoints.append(points.first()); + + for (int i = 1; i < points.size(); i++) { + if (!points[i - 1].isNull() && + qFuzzyCompare(points[i - 1].x(), points[i].x()) && + qFuzzyCompare(points[i - 1].y(), points[i].y())) { + continue; // 跳过重复点 + } + cleanedPoints.append(points[i]); + } + + if (needsFix || cleanedPoints.size() != points.size()) { + qDebug() << "Applying fixes to path"; + applyPointsToPath(cleanedPoints); + + // 重新计算路径 + calculatePath(); + } +} + +void ElectricFunctionModelConnectLineItem::updateBoundingRect() +{ + if (m_points.isEmpty()) { + m_boundingRect = QRectF(); + } else { + // 使用路径的边界 + m_boundingRect = m_points.boundingRect(); + + // 添加一些边距 + const qreal MARGIN = 2.0; + m_boundingRect.adjust(-MARGIN, -MARGIN, MARGIN, MARGIN); + } + + qDebug() << "Updated bounds:" << m_boundingRect; +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelPortItem.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelPortItem.cpp new file mode 100644 index 0000000..52aed91 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelPortItem.cpp @@ -0,0 +1,65 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelPortItem.h" +#include "graphicsItem/itemPort.h" +#include "baseProperty.h" +#include +#include +#include + +ElectricFunctionModelPortItem::ElectricFunctionModelPortItem(QGraphicsItem *parent) + : GraphicsFunctionModelItem(parent) +{ + initial(); +} + +ElectricFunctionModelPortItem::~ElectricFunctionModelPortItem() +{ + +} + +QRectF ElectricFunctionModelPortItem::boundingRect() const +{ + return m_boundingRect; +} + +void ElectricFunctionModelPortItem::updateConnectData() +{ + QJsonObject obj; + QJsonArray arr; + if(_property) + { + for(auto& ptr:m_mapPort) + { + //if(ptr->connected()) + { + QJsonObject port; + port["portId"] = ptr->getId(); + //auto pLine = ptr->getConnectPtr(); + port["x"] = ptr->pos().x(); + port["y"] = ptr->pos().y(); + port["portType"] = ptr->getType(); + arr.push_back(port); + } + } + + obj["port"] = arr; + obj["metaModel"] = _property->metaModelName(); + obj["extraInfo"] = _property->getVoltageLevel(); + _property->setContext(obj); + } +} + +void ElectricFunctionModelPortItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + painter->setBrush(m_brush); + painter->drawEllipse(m_boundingRect); +} + +void ElectricFunctionModelPortItem::initial() +{ + m_boundingRect = QRectF(-1,-1,2,2); + m_pen = QPen(Qt::black); + m_brush = QBrush(Qt::black); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp new file mode 100644 index 0000000..56f3958 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp @@ -0,0 +1,149 @@ +#include "graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h" +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItem.h" + +#include +#include +#include + +ElectricFunctionModelSvgGroup::ElectricFunctionModelSvgGroup(const QRect &rect,QGraphicsItem *parent) + : GraphicsFunctionModelGroup(parent) +{ + m_lastBoudingRect = rect; + m_boundingRect = rect; + m_dWidth = rect.width(); + m_dHeight = rect.height(); +} + +ElectricFunctionModelSvgGroup::~ElectricFunctionModelSvgGroup() +{ + +} + +QPainterPath ElectricFunctionModelSvgGroup::shape() +{ + QPainterPath path; + path.addRect(m_boundingRect); + return path; +} + +void ElectricFunctionModelSvgGroup::updateCoordinate() //当执行了resie和editShape函数后,boundingRect发生了变换,需要将item的原点(以中心点为原点)校准至boundingRect.center() +{ + if (!parentItem()) + { + QPointF pt1, pt2, delta; + pt1 = mapToScene(QPointF(0, 0)); + pt2 = mapToScene(m_boundingRect.center()); + delta = pt1 - pt2; + + prepareGeometryChange(); + //将boundingRect设置成中心点和原点(也是默认变换原点),这样三点重合,有助于简化计算 + m_boundingRect = QRectF(-m_dWidth / 2, -m_dHeight / 2, m_dWidth, m_dHeight); + //setTransformOriginPoint(m_boundingRect.center()); //变换中心默认为item的(0,0)点,所以不执行这句话也没有问题 + //更新bouondingRect后重回会显示位置会有变化,需要做对应的移动 + moveBy(-delta.x(), -delta.y()); + updateHandles(); + } + + m_lastBoudingRect = m_boundingRect; +} + +void ElectricFunctionModelSvgGroup::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + painter->setPen(m_pen); + painter->setBrush(m_brush); + if(m_state == S_prepareConnect) + { + painter->setPen(QPen(QColor(255,51,153,180))); + painter->drawLine(m_beginConnectPoint,m_endConnectPoint); + } + if(m_touched) + { + painter->setPen(QPen(QColor(238,58,140,220))); + painter->drawRect(m_boundingRect); + } + + if (option->state & QStyle::State_Selected) //是选中状态,绘制选中框 + { + renderSelectBackground(painter); + } +} + +void ElectricFunctionModelSvgGroup::updateCurState(MonitorItemState e) +{ + GraphicsProjectModelItem::updateCurState(e); + for(auto& p:m_childItems){ + auto pItem = dynamic_cast(p); + if(pItem){ + pItem->updateCurState(e); + } + } +} + + +void ElectricFunctionModelSvgGroup::resize(int nHandle,double dSX, double dSY, const QPointF& basePoint) +{ + switch (nHandle) + { + case H_left: + case H_right: + dSY = 1; //拖拽的是左点右点,为水平缩放,忽略垂直变化 + break; + case H_top: + case H_bottom: + dSX = 1; //拖拽的是顶点底点,为垂直缩放,忽略水平变化 + break; + default: + break; + } + + QTransform trans; + //缩放是以图元原点(中心)位置为基准,所以每帧都先移动移动到想要的基准点,缩放之后再移回 + trans.translate(basePoint.x(), basePoint.y()); + trans.scale(dSX, dSY); + trans.translate(-basePoint.x(), -basePoint.y()); + + prepareGeometryChange(); + m_boundingRect = trans.mapRect(m_lastBoudingRect); + m_dWidth = m_boundingRect.width(); + m_dHeight = m_boundingRect.height(); + updateHandles(); +} + +void ElectricFunctionModelSvgGroup::move(const QPointF& point) +{ + moveBy(point.x(), point.y()); +} + +void ElectricFunctionModelSvgGroup::updateMapSvg(QMap map,QString sIndex) +{ + if(sIndex.isEmpty()) + m_mapSvg = map; + else{ + m_mapSvg[sIndex] = map[sIndex]; + } + updateItem(); +} + +void ElectricFunctionModelSvgGroup::setMonitorDisplayInfo(QMap info) +{ + GraphicsProjectModelItem::setMonitorDisplayInfo(info); + for(auto& p:m_childItems){ + auto pItem = dynamic_cast(p); + if(pItem){ + pItem->setMonitorDisplayInfo(info); + } + } +} + +void ElectricFunctionModelSvgGroup::addSvgItem(ElectricFunctionModelSvgItem* item) +{ + item->setParentItem(this); // 关键:设置父项 + m_childItems.append(item); + updateLayout(); +} + +void ElectricFunctionModelSvgGroup::editShape(int nHandle,const QPointF& ptMouse) +{ + prepareGeometryChange(); + updateHandles(); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp new file mode 100644 index 0000000..cea8eda --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp @@ -0,0 +1,115 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.h" +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgGroupCT::ElectricFunctionModelSvgGroupCT(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgGroup(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgGroupCT::~ElectricFunctionModelSvgGroupCT() +{ + +} + +void ElectricFunctionModelSvgGroupCT::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["ct"] = svgData; + updateMapSvg(mapData,"ct"); + updateItem(); + } + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"ct"); + GraphicsBaseItem::setImage_1(info); +} + + +void ElectricFunctionModelSvgGroupCT::setupFinish(QVariant var) +{ + if(var.canConvert>()){ + QPair pair = var.value>(); + _nType = pair.first; + _nSize = pair.second; + } + updateItem(); +} + +void ElectricFunctionModelSvgGroupCT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgGroup::paint(painter,option,widget); + + if(m_childItems.isEmpty()){ //无对象时绘制提示框 + QPen pen(Qt::darkYellow); + pen.setStyle(Qt::DotLine); + painter->setPen(pen); + painter->drawRect(m_boundingRect); + } +} + +void ElectricFunctionModelSvgGroupCT::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("ct")) + _itemImgIndex.append("ct"); + if(!_itemImgIndex.contains("zsct")) + _itemImgIndex.append("zsct"); +} + +void ElectricFunctionModelSvgGroupCT::updateItem() +{ + for(auto pItem:m_childItems){ + delete pItem; + } + m_childItems.clear(); + + QRect rec(0,0,90,30); + + if(_nType == 1){ + for(int i = 0;i < _nSize;++i){ + ElectricFunctionModelSvgItemCT* p = new ElectricFunctionModelSvgItemCT(rec); + p->setItemType(_nType); + p->setMoveable(false); + p->loadSvg(m_mapSvg["ct"]); + addSvgItem(p); + } + } + else if(_nType == 0){ + ElectricFunctionModelSvgItemCT* p = new ElectricFunctionModelSvgItemCT(rec); + p->setItemType(_nType); + p->setMoveable(false); + p->loadSvg(m_mapSvg["zsct"]); + addSvgItem(p); + } + updateTerPos(); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp new file mode 100644 index 0000000..a0f35ae --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp @@ -0,0 +1,181 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.h" +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgGroupPT::ElectricFunctionModelSvgGroupPT(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgGroup(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgGroupPT::~ElectricFunctionModelSvgGroupPT() +{ + +} + +void ElectricFunctionModelSvgGroupPT::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["pt"] = svgData; + updateMapSvg(mapData,"pt"); + updateItem(); + } + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"pt"); + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgGroupPT::setupFinish(QVariant var) +{ + if(var.canConvert>()){ + QList lst = var.value>(); + m_lstType = lst; + } + updateItem(); +} + +void ElectricFunctionModelSvgGroupPT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgGroup::paint(painter,option,widget); + + if(m_childItems.isEmpty()){ //无对象时绘制提示框 + QPen pen(Qt::lightGray); + pen.setStyle(Qt::DotLine); + painter->setPen(pen); + painter->drawRect(m_boundingRect); + } +} + +void ElectricFunctionModelSvgGroupPT::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("y")) + _itemImgIndex.append("y"); + if(!_itemImgIndex.contains("z")) + _itemImgIndex.append("z"); +} + +void ElectricFunctionModelSvgGroupPT::updateItem() +{ + for(auto pItem:m_childItems){ + delete pItem; + } + m_childItems.clear(); + + QRect rec(0,0,30,30); + for(int i = 0;i < m_lstType.size();++i){ + + ElectricFunctionModelSvgItemPT* p = new ElectricFunctionModelSvgItemPT(rec); + if(m_lstType[i] == 1){ + p->loadSvg(m_mapSvg["y"]); + p->setItemType(1); + } + else{ + p->loadSvg(m_mapSvg["z"]); + p->setItemType(0); + } + p->setMoveable(false); + addSvgItem(p); + } + updateTerPos(); +} + +void ElectricFunctionModelSvgGroupPT::updateLayout() +{ + if (m_childItems.isEmpty()) return; + + // 获取所有子项 + //QList children = childItems(); + int n = m_childItems.size(); + + if (n == 0) return; + + // 中心点 + QPointF center(0, 0); // 假设以当前item的坐标系中心为布局中心 + + // 圆的半径(假设所有子项大小相同) + qreal radius = m_childItems.first()->boundingRect().width()*0.5; // 根据需要调整 + + // 布局半径(子项中心到布局中心的距离) + qreal layoutRadius = radius * 1; // 根据需要调整 + + switch(n) { + case 1: + // 单个子项放在中心 + m_childItems[0]->setPos(center); + break; + + case 2: + // 两个子项上下排列 + m_childItems[0]->setPos(center.x(), center.y() - layoutRadius); + m_childItems[1]->setPos(center.x(), center.y() + layoutRadius); + break; + + case 3: + // 三个子项三角形排列 + for (int i = 0; i < 3; ++i) { + qreal angle = 2 * M_PI * i / 3 - M_PI / 2; // 从顶部开始 + m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle), + center.y() + layoutRadius * sin(angle)); + } + break; + + case 4: + // 四个子项正方形排列 + for (int i = 0; i < 4; ++i) { + qreal angle = 2 * M_PI * i / 4 - M_PI / 4; // 从右上角开始 + m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle), + center.y() + layoutRadius * sin(angle)); + } + break; + + case 5: + // 五个子项五角星排列 + for (int i = 0; i < 5; ++i) { + qreal angle = 2 * M_PI * i / 5 - M_PI / 2; // 从顶部开始 + m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle), + center.y() + layoutRadius * sin(angle)); + } + break; + + default: + // 对于多于5个的情况,使用圆形排列 + for (int i = 0; i < n; ++i) { + qreal angle = 2 * M_PI * i / n; + m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle), + center.y() + layoutRadius * sin(angle)); + } + break; + } + + updateBoundRect(); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp new file mode 100644 index 0000000..264946f --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp @@ -0,0 +1,190 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItem.h" +#include "graphicsItem/itemControlHandle.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItem::ElectricFunctionModelSvgItem(const QRect &rect, bool autoGenPort,QGraphicsItem *parent) + : GraphicsFunctionModelItem(parent),m_pRender(nullptr),m_pCustomRender(nullptr) +{ + m_lastBoudingRect = rect; + m_boundingRect = rect; + m_dWidth = rect.width(); + m_dHeight = rect.height(); + + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); +} + +ElectricFunctionModelSvgItem::~ElectricFunctionModelSvgItem() +{ + if(m_pRender) + delete m_pRender; +} + +QPainterPath ElectricFunctionModelSvgItem::shape() +{ + QPainterPath path; + path.addRect(m_boundingRect); + return path; +} + +void ElectricFunctionModelSvgItem::updateCoordinate() //当执行了resie和editShape函数后,boundingRect发生了变换,需要将item的原点(以中心点为原点)校准至boundingRect.center() +{ + if (!parentItem()) + { + QPointF pt1, pt2, delta; + pt1 = mapToScene(QPointF(0, 0)); + pt2 = mapToScene(m_boundingRect.center()); + delta = pt1 - pt2; + + prepareGeometryChange(); + //将boundingRect设置成中心点和原点(也是默认变换原点),这样三点重合,有助于简化计算 + m_boundingRect = QRectF(-m_dWidth / 2, -m_dHeight / 2, m_dWidth, m_dHeight); + //setTransformOriginPoint(m_boundingRect.center()); //变换中心默认为item的(0,0)点,所以不执行这句话也没有问题 + //更新bouondingRect后重回会显示位置会有变化,需要做对应的移动 + moveBy(-delta.x(), -delta.y()); + updateHandles(); + } + + m_lastBoudingRect = m_boundingRect; +} + +void ElectricFunctionModelSvgItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + if(_curMonitorStateEnable){ + + painter->setRenderHint(QPainter::Antialiasing); + + QSize imageSize = m_boundingRect.size().toSize(); + if (imageSize.isEmpty()) return; + + // 1. 渲染SVG到图像 + QImage sourceImage(imageSize, QImage::Format_ARGB32_Premultiplied); + sourceImage.fill(Qt::transparent); + + QPainter sourcePainter(&sourceImage); + sourcePainter.setRenderHint(QPainter::Antialiasing); + m_pCustomRender->render(&sourcePainter, QRectF(0, 0, imageSize.width(), imageSize.height())); + sourcePainter.end(); + + // 2. 直接使用合成模式改变颜色(更高效) + QImage resultImage(imageSize, QImage::Format_ARGB32_Premultiplied); + resultImage.fill(Qt::transparent); + + QPainter resultPainter(&resultImage); + + // 先绘制原始SVG(保留透明度) + resultPainter.drawImage(0, 0, sourceImage); + + // 然后对非透明区域应用颜色叠加 + resultPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); + resultPainter.fillRect(resultImage.rect(), QColor(_curMonitorStateColor)); + resultPainter.end(); + + // 3. 最终绘制 + painter->drawImage(m_boundingRect, resultImage); + } + else{ + if(m_pRender) + { + m_pRender->render(painter,m_boundingRect); + } + } + + painter->setPen(m_pen); + painter->setBrush(m_brush); + if(m_state == S_prepareConnect) + { + painter->setPen(QPen(QColor(255,51,153,180))); + painter->drawLine(m_beginConnectPoint,m_endConnectPoint); + } + if(m_touched) + { + painter->setPen(QPen(QColor(238,58,140,220))); + painter->drawRect(m_boundingRect); + } + + if (option->state & QStyle::State_Selected) //是选中状态,绘制选中框 + { + renderSelectBackground(painter); + } +} + +void ElectricFunctionModelSvgItem::resize(int nHandle,double dSX, double dSY, const QPointF& basePoint) +{ + switch (nHandle) + { + case H_left: + case H_right: + dSY = 1; //拖拽的是左点右点,为水平缩放,忽略垂直变化 + break; + case H_top: + case H_bottom: + dSX = 1; //拖拽的是顶点底点,为垂直缩放,忽略水平变化 + break; + default: + break; + } + + QTransform trans; + //缩放是以图元原点(中心)位置为基准,所以每帧都先移动移动到想要的基准点,缩放之后再移回 + trans.translate(basePoint.x(), basePoint.y()); + trans.scale(dSX, dSY); + trans.translate(-basePoint.x(), -basePoint.y()); + + prepareGeometryChange(); + m_boundingRect = trans.mapRect(m_lastBoudingRect); + m_dWidth = m_boundingRect.width(); + m_dHeight = m_boundingRect.height(); + updateHandles(); +} + +void ElectricFunctionModelSvgItem::move(const QPointF& point) +{ + moveBy(point.x(), point.y()); +} + +void ElectricFunctionModelSvgItem::loadSvg(QByteArray b) +{ + if(m_pRender == nullptr){ + m_pRender = new QSvgRenderer(b); + } + else{ + m_pRender->load(b); + } + _tempSvg = b; + update(); +} + +void ElectricFunctionModelSvgItem::updateMapSvg(QMap map,QString sIndex) +{ + if(sIndex.isEmpty()) + m_mapSvg = map; + else{ + m_mapSvg[sIndex] = map[sIndex]; + } + if(!m_mapSvg.isEmpty()) + loadSvg(m_mapSvg.first()); +} + +void ElectricFunctionModelSvgItem::editShape(int nHandle,const QPointF& ptMouse) +{ + prepareGeometryChange(); + updateHandles(); +} + +void ElectricFunctionModelSvgItem::updateCurState(MonitorItemState e) +{ + GraphicsProjectModelItem::updateCurState(e); + if(m_pCustomRender == nullptr){ + m_pCustomRender = new QSvgRenderer(_curMonitorStateSvg); + } + else{ + m_pCustomRender->load(_curMonitorStateSvg); + } +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp new file mode 100644 index 0000000..cfa210f --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp @@ -0,0 +1,68 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItem2wTransformer::ElectricFunctionModelSvgItem2wTransformer(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItem2wTransformer::~ElectricFunctionModelSvgItem2wTransformer() +{ + +} + +void ElectricFunctionModelSvgItem2wTransformer::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["transformer_2w"] = svgData; + updateMapSvg(mapData,"transformer_2w"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"transformer_2w"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItem2wTransformer::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItem2wTransformer::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("transformer_2w")) + _itemImgIndex.append("transformer_2w"); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp new file mode 100644 index 0000000..3975c5b --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp @@ -0,0 +1,69 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItem3wTransformer::ElectricFunctionModelSvgItem3wTransformer(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItem3wTransformer::~ElectricFunctionModelSvgItem3wTransformer() +{ + +} + +void ElectricFunctionModelSvgItem3wTransformer::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["transformer_3w"] = svgData; + updateMapSvg(mapData,"transformer_3w"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"transformer_3w"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItem3wTransformer::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItem3wTransformer::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("transformer_3w")) + _itemImgIndex.append("transformer_3w"); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp new file mode 100644 index 0000000..42ac6ee --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp @@ -0,0 +1,104 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.h" +#include "graphicsItem/itemControlHandle.h" +#include "graphicsItem/itemPort.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemBus::ElectricFunctionModelSvgItemBus(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemBus::~ElectricFunctionModelSvgItemBus() +{ + +} + +void ElectricFunctionModelSvgItemBus::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["bus"] = svgData; + updateMapSvg(mapData,"bus"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"bus"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemBus::updateHandles() +{ + ElectricFunctionModelSvgItem::updateHandles(); +} + +void ElectricFunctionModelSvgItemBus::updateConnectData() +{ + QJsonObject obj; + QJsonArray arr; + if(_property) + { + for(auto &ptr:m_mapPort) + { + //if(ptr->connected()) + { + QJsonObject port; + port["portId"] = ptr->getId(); + //auto pLine = ptr->getConnectPtr(); + port["x"] = ptr->pos().x(); + port["y"] = ptr->pos().y(); + port["portType"] = ptr->getType(); + arr.push_back(port); + } + } + + obj["port"] = arr; + obj["metaModel"] = _property->metaModelName(); + obj["subList"] = _property->saveSubToJsonArr(); + obj["extraInfo"] = _property->getVoltageLevel(); + _property->setContext(obj); + } +} + +void ElectricFunctionModelSvgItemBus::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemBus::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + setHandleEnaable(H_right,true); + setHandleEnaable(H_left,true); + if(!_itemImgIndex.contains("bus")) + _itemImgIndex.append("bus"); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp new file mode 100644 index 0000000..5137765 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp @@ -0,0 +1,75 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include +#include + +ElectricFunctionModelSvgItemCB::ElectricFunctionModelSvgItemCB(const QRect &rect, bool genNewPort, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemCB::~ElectricFunctionModelSvgItemCB() +{ + +} + +void ElectricFunctionModelSvgItemCB::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["cb"] = svgData; + updateMapSvg(mapData,"cb"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"cb"); + + GraphicsBaseItem::setImage_1(info); +} + + +void ElectricFunctionModelSvgItemCB::updateHandles() +{ + ElectricFunctionModelSvgItem::updateHandles(); +} + +void ElectricFunctionModelSvgItemCB::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemCB::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("cb")) + _itemImgIndex.append("cb"); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.cpp new file mode 100644 index 0000000..40b636d --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.cpp @@ -0,0 +1,108 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.h" +#include "global.h" + +#include +#include +#include +#include +#include + +ElectricFunctionModelSvgItemCT::ElectricFunctionModelSvgItemCT(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemCT::~ElectricFunctionModelSvgItemCT() +{ + +} + +void ElectricFunctionModelSvgItemCT::initial() +{ + setFlag(QGraphicsItem::ItemIsSelectable, false); + setFlag(QGraphicsItem::ItemIsFocusable, false); + setAcceptedMouseButtons(Qt::NoButton); +} + +void ElectricFunctionModelSvgItemCT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + // 计算每个图形的宽度 + qreal singleWidth = m_boundingRect.width() / 3.0; + + if(_curMonitorStateEnable){ + + painter->setRenderHint(QPainter::Antialiasing); + + QSize imageSize = m_boundingRect.size().toSize(); + if (imageSize.isEmpty()) return; + + // 1. 渲染SVG到图像 + QImage sourceImage(imageSize, QImage::Format_ARGB32_Premultiplied); + sourceImage.fill(Qt::transparent); + + QPainter sourcePainter(&sourceImage); + sourcePainter.setRenderHint(QPainter::Antialiasing); + m_pCustomRender->render(&sourcePainter, QRectF(0, 0, imageSize.width(), imageSize.height())); + sourcePainter.end(); + + // 2. 直接使用合成模式改变颜色(更高效) + QImage resultImage(imageSize, QImage::Format_ARGB32_Premultiplied); + resultImage.fill(Qt::transparent); + + QPainter resultPainter(&resultImage); + + // 先绘制原始SVG(保留透明度) + resultPainter.drawImage(0, 0, sourceImage); + + // 然后对非透明区域应用颜色叠加 + resultPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); + resultPainter.fillRect(resultImage.rect(), QColor(_curMonitorStateColor)); + resultPainter.end(); + + // 3. 最终绘制 + //QRectF rect(m_boundingRect.x() + singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height()); + //painter->drawImage(rect, resultImage); + + if(_itemType == 1){ + QRectF rect1(m_boundingRect.x(), m_boundingRect.y(), singleWidth, m_boundingRect.height()); + painter->drawImage(rect1, resultImage); + + // 绘制第二个图形 + QRectF rect2(m_boundingRect.x() + singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height()); + painter->drawImage(rect2, resultImage); + + // 绘制第三个图形 + QRectF rect3(m_boundingRect.x() + 2 * singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height()); + painter->drawImage(rect3, resultImage); + } + else if(_itemType == 0){ + QRectF rect(m_boundingRect.x() + singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height()); + painter->drawImage(rect, resultImage); + } + } + else{ + if (!m_pRender || !m_pRender->isValid()) + return; + + // 绘制第一个图形 + if(_itemType == 1){ + QRectF rect1(m_boundingRect.x(), m_boundingRect.y(), singleWidth, m_boundingRect.height()); + m_pRender->render(painter, rect1); + + // 绘制第二个图形 + QRectF rect2(m_boundingRect.x() + singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height()); + m_pRender->render(painter, rect2); + + // 绘制第三个图形 + QRectF rect3(m_boundingRect.x() + 2 * singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height()); + m_pRender->render(painter, rect3); + } + else if(_itemType == 0){ + QRectF rect(m_boundingRect.x() + singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height()); + m_pRender->render(painter, rect); + } + } +} + + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp new file mode 100644 index 0000000..47c4e18 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp @@ -0,0 +1,69 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemCableEnd::ElectricFunctionModelSvgItemCableEnd(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemCableEnd::~ElectricFunctionModelSvgItemCableEnd() +{ + +} + +void ElectricFunctionModelSvgItemCableEnd::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["cable_end"] = svgData; + updateMapSvg(mapData,"cable_end"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"cable_end"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemCableEnd::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemCableEnd::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("cable_end")) + _itemImgIndex.append("cable_end"); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp new file mode 100644 index 0000000..30980d4 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp @@ -0,0 +1,68 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemCableTer::ElectricFunctionModelSvgItemCableTer(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemCableTer::~ElectricFunctionModelSvgItemCableTer() +{ + +} + +void ElectricFunctionModelSvgItemCableTer::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["cable_termination"] = svgData; + updateMapSvg(mapData,"cable_termination"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"cable_termination"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemCableTer::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemCableTer::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("cable_termination")) + _itemImgIndex.append("cable_termination"); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp new file mode 100644 index 0000000..47a41c9 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp @@ -0,0 +1,69 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemDS::ElectricFunctionModelSvgItemDS(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemDS::~ElectricFunctionModelSvgItemDS() +{ + +} + +void ElectricFunctionModelSvgItemDS::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["ds"] = svgData; + updateMapSvg(mapData,"ds"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"ds"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemDS::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemDS::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("ds")) + _itemImgIndex.append("ds"); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp new file mode 100644 index 0000000..f472872 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp @@ -0,0 +1,69 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemDTEDS::ElectricFunctionModelSvgItemDTEDS(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + inital(); +} + +ElectricFunctionModelSvgItemDTEDS::~ElectricFunctionModelSvgItemDTEDS() +{ + +} + +void ElectricFunctionModelSvgItemDTEDS::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["dteds"] = svgData; + updateMapSvg(mapData,"dteds"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"dteds"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemDTEDS::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemDTEDS::inital() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("dteds")) + _itemImgIndex.append("dteds"); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp new file mode 100644 index 0000000..3fe4eb9 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp @@ -0,0 +1,70 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemES.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemES::ElectricFunctionModelSvgItemES(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemES::~ElectricFunctionModelSvgItemES() +{ + +} + +void ElectricFunctionModelSvgItemES::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["es"] = svgData; + updateMapSvg(mapData,"es"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"es"); + + GraphicsBaseItem::setImage_1(info); +} + + +void ElectricFunctionModelSvgItemES::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemES::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("es")) + _itemImgIndex.append("es"); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp new file mode 100644 index 0000000..67562c7 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp @@ -0,0 +1,68 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemFES::ElectricFunctionModelSvgItemFES(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemFES::~ElectricFunctionModelSvgItemFES() +{ + +} + +void ElectricFunctionModelSvgItemFES::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["fes"] = svgData; + updateMapSvg(mapData,"fes"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"fes"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemFES::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemFES::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("fes")) + _itemImgIndex.append("fes"); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp new file mode 100644 index 0000000..f3630cb --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp @@ -0,0 +1,69 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include + +ElectricFunctionModelSvgItemLA::ElectricFunctionModelSvgItemLA(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemLA::~ElectricFunctionModelSvgItemLA() +{ + +} + +void ElectricFunctionModelSvgItemLA::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["lightning_arrester"] = svgData; + updateMapSvg(mapData,"lightning_arrester"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"lightning_arrester"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemLA::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemLA::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("lightning_arrester")) + _itemImgIndex.append("lightning_arrester"); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp new file mode 100644 index 0000000..d399186 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp @@ -0,0 +1,70 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" +#include "global.h" + +#include +#include +#include +#include +#include + +ElectricFunctionModelSvgItemPI::ElectricFunctionModelSvgItemPI(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemPI::~ElectricFunctionModelSvgItemPI() +{ + +} + +void ElectricFunctionModelSvgItemPI::setImage_1(QFileInfo info) +{ + QByteArray svgData; + QFile svgFile(info.absoluteFilePath()); + + if (svgFile.open(QIODevice::ReadOnly)) { + svgData = svgFile.readAll(); + svgFile.close(); + } else { + qDebug() << "can't open imgfile" << svgFile.errorString(); + } + + QMap mapData; + if(!svgData.isEmpty()){ + mapData["potential_indicator"] = svgData; + updateMapSvg(mapData,"potential_indicator"); + loadSvg(svgData); + updateItem(); + } + + QString sMeta; + QString sModel; + if(_property){ + sMeta = _property->metaModelName(); + sModel = _property->modelName(); + } + + if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) + _pHandle->updateItemIcon(sMeta,sModel,mapData,"potential_indicator"); + + GraphicsBaseItem::setImage_1(info); +} + +void ElectricFunctionModelSvgItemPI::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + ElectricFunctionModelSvgItem::paint(painter,option,widget); +} + +void ElectricFunctionModelSvgItemPI::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + if(!_itemImgIndex.contains("potential_indicator")) + _itemImgIndex.append("potential_indicator"); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.cpp new file mode 100644 index 0000000..e91ab9f --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.cpp @@ -0,0 +1,68 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h" + +#include +#include +#include +#include +#include + +ElectricFunctionModelSvgItemPT::ElectricFunctionModelSvgItemPT(const QRect &rect, QGraphicsItem *parent) + : ElectricFunctionModelSvgItem(rect,parent) +{ + initial(); +} + +ElectricFunctionModelSvgItemPT::~ElectricFunctionModelSvgItemPT() +{ + +} + +void ElectricFunctionModelSvgItemPT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + if(_curMonitorStateEnable){ + + painter->setRenderHint(QPainter::Antialiasing); + + QSize imageSize = m_boundingRect.size().toSize(); + if (imageSize.isEmpty()) return; + + // 1. 渲染SVG到图像 + QImage sourceImage(imageSize, QImage::Format_ARGB32_Premultiplied); + sourceImage.fill(Qt::transparent); + + QPainter sourcePainter(&sourceImage); + sourcePainter.setRenderHint(QPainter::Antialiasing); + m_pCustomRender->render(&sourcePainter, QRectF(0, 0, imageSize.width(), imageSize.height())); + sourcePainter.end(); + + // 2. 直接使用合成模式改变颜色(更高效) + QImage resultImage(imageSize, QImage::Format_ARGB32_Premultiplied); + resultImage.fill(Qt::transparent); + + QPainter resultPainter(&resultImage); + + // 先绘制原始SVG(保留透明度) + resultPainter.drawImage(0, 0, sourceImage); + + // 然后对非透明区域应用颜色叠加 + resultPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); + resultPainter.fillRect(resultImage.rect(), QColor(_curMonitorStateColor)); + resultPainter.end(); + + // 3. 最终绘制 + painter->drawImage(m_boundingRect, resultImage); + } + else{ + if (!m_pRender || !m_pRender->isValid()) + return; + m_pRender->render(painter, m_boundingRect); + } +} + +void ElectricFunctionModelSvgItemPT::initial() +{ + setFlag(QGraphicsItem::ItemIsSelectable, false); + setFlag(QGraphicsItem::ItemIsFocusable, false); + setAcceptedMouseButtons(Qt::NoButton); +} + diff --git a/diagramCavas/source/graphicsItem/functionModelItem/graphicsFunctionModelItem.cpp b/diagramCavas/source/graphicsItem/functionModelItem/graphicsFunctionModelItem.cpp new file mode 100644 index 0000000..a26b73c --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/graphicsFunctionModelItem.cpp @@ -0,0 +1,97 @@ +#include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h" + +GraphicsFunctionModelItem::GraphicsFunctionModelItem(QGraphicsItem *parent) + : GraphicsProjectModelItem(parent) +{ + +} + +GraphicsProjectModelItem::~GraphicsProjectModelItem() +{ +} + +void GraphicsProjectModelItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + Q_UNUSED(option) + Q_UNUSED(widget) +} + + +/********************************功能模item组*************************************/ + +GraphicsFunctionModelGroup::GraphicsFunctionModelGroup(QGraphicsItem *parent) + :GraphicsFunctionModelItem(parent) +{ + +} + +GraphicsFunctionModelGroup::~GraphicsFunctionModelGroup() +{ + +} + +void GraphicsFunctionModelGroup::addItem(GraphicsFunctionModelItem* item) +{ + item->setParentItem(this); // 关键:设置父项 + m_childItems.append(item); + updateLayout(); +} + +QRectF GraphicsFunctionModelGroup::updateBoundRect() +{ + QRectF rect; + if(m_childItems.size()){ + for (auto* child : m_childItems) { + rect |= child->boundingRect().translated(child->pos()); + } + + m_boundingRect = rect; + } + else + { + return m_boundingRect; + } + + updateHandles(); + return rect; +} + +void GraphicsFunctionModelGroup::updateLayout() +{ + if (m_childItems.isEmpty()) return; + + // 计算所有子项的总尺寸 + qreal totalSize = 0; + QList childSizes; + + for (GraphicsBaseItem *child : m_childItems) { + QRectF childRect = child->boundingRect(); + qreal size = (m_direction == 0) ? childRect.width() : childRect.height(); + childSizes.append(size); + totalSize += size; + } + + // 计算总间距 + qreal totalSpacing = m_spacing * (m_childItems.size() - 1); + + // 计算起始位置(相对于父项中心) + qreal startPos = -(totalSize + totalSpacing) / 2; + + // 定位每个子项 + qreal currentPos = startPos; + for (int i = 0; i < m_childItems.size(); ++i) { + GraphicsBaseItem *child = m_childItems[i]; + QRectF childRect = child->boundingRect(); + + if (m_direction == 0) { + // 水平布局:x坐标变化,y坐标保持中心对齐 + child->setPos(currentPos, -childRect.height() / 2); + currentPos += childSizes[i] + m_spacing; + } else { + // 垂直布局:y坐标变化,x坐标保持中心对齐 + child->setPos(-childRect.width() / 2, currentPos); + currentPos += childSizes[i] + m_spacing; + } + } + updateBoundRect(); +} diff --git a/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp b/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp index f07b952..de26629 100644 --- a/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp +++ b/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp @@ -284,7 +284,7 @@ void GraphicsBaseItem::onUpdateData() void GraphicsBaseItem::initialPortsByDatabase(int nComponentTypeId) { - QMap mapType = DataBase::GetInstance()->getAllComponentType(); + QMap mapType = DataBase::GetInstance()->getAllComponentType(); if(mapType.contains(nComponentTypeId)) { @@ -591,7 +591,7 @@ GraphicsProjectModelItem::GraphicsProjectModelItem(QGraphicsItem *parent) setFlag(QGraphicsItem::ItemIsSelectable, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); - _curMonitorState = monitorItemState::Normal; + _curMonitorState = MonitorItemState::Normal; _curMonitorStateEnable = false; } @@ -634,7 +634,7 @@ GraphicsProjectModelItem::GraphicsProjectModelItem(const GraphicsProjectModelIte setPos(obj.pos()); setRotation(obj.rotation()); - _curMonitorState = monitorItemState::Normal; + _curMonitorState = MonitorItemState::Normal; _curMonitorStateEnable = false; } @@ -755,26 +755,6 @@ QString GraphicsProjectModelItem::getLabelTag() const return m_vecHanle[H_textCaption]->getText(); } -void GraphicsProjectModelItem::setLabelCurrent(const QString& str) -{ - m_vecHanle[H_textCurrent]->setText(str); -} - -QString GraphicsProjectModelItem::getLabelCurrent() const -{ - return m_vecHanle[H_textCurrent]->getText(); -} - -void GraphicsProjectModelItem::setLabelVoltage(const QString& str) -{ - m_vecHanle[h_textVoltage]->setText(str); -} - -QString GraphicsProjectModelItem::getLabelVoltage() const -{ - return m_vecHanle[h_textVoltage]->getText(); -} - void GraphicsProjectModelItem::updateByProperty() { if(_property) diff --git a/diagramCavas/source/graphicsItem/itemControlHandle.cpp b/diagramCavas/source/graphicsItem/itemControlHandle.cpp index 42acfec..c31cf91 100644 --- a/diagramCavas/source/graphicsItem/itemControlHandle.cpp +++ b/diagramCavas/source/graphicsItem/itemControlHandle.cpp @@ -1,5 +1,6 @@ #include "graphicsItem/itemControlHandle.h" #include +#include "common/frontend/graphics_items.h" ItemControlHandle::ItemControlHandle(QGraphicsItem *parent) : QGraphicsItem(parent) diff --git a/diagramCavas/source/instance/dataAccessor.cpp b/diagramCavas/source/instance/dataAccessor.cpp index a267f8b..9229697 100644 --- a/diagramCavas/source/instance/dataAccessor.cpp +++ b/diagramCavas/source/instance/dataAccessor.cpp @@ -7,7 +7,8 @@ #include #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/data_transmission.h" const int DIAGRAM_MAX_DATA_COUNT = 1000; diff --git a/diagramCavas/source/itemPropertyDlg.cpp b/diagramCavas/source/itemPropertyDlg.cpp index d62c16f..fca34fa 100644 --- a/diagramCavas/source/itemPropertyDlg.cpp +++ b/diagramCavas/source/itemPropertyDlg.cpp @@ -40,7 +40,7 @@ void ItemPropertyDlg::initial() connect(ui->btn_cancel,&QPushButton::clicked,this,&ItemPropertyDlg::onCancelClicked); } -void ItemPropertyDlg::loadGroupButton(QMap map) +void ItemPropertyDlg::loadGroupButton(QMap map) { groupInfo_ = map; for(auto &info:map) @@ -84,7 +84,7 @@ void ItemPropertyDlg::onOkClicked() for(iter = groupViews_.begin();iter != groupViews_.end();++iter) { BaseContentDlg* pDlg = qobject_cast(iter.value()); - QMap mapPro = pDlg->getPropertyValue(pPro); + QMap mapPro = pDlg->getPropertyValue(pPro); if(!mapPro.empty()) DataManager::instance().updateModelData(_curModel,curUuid_,iter.key(),mapPro); @@ -92,7 +92,7 @@ void ItemPropertyDlg::onOkClicked() int nCtSize = 0; //ct设置的个数 int nCtType = 0; //ct类型 1三相0零相 if(mapPro.contains("ct_winding")){ - propertyStateInfo val = mapPro.value("ct_winding"); + PropertyStateInfo val = mapPro.value("ct_winding"); QJsonObject obj = val.defaultValue.toJsonObject(); if(obj.contains("winding")){ QJsonArray arr = obj["winding"].toArray(); @@ -100,7 +100,7 @@ void ItemPropertyDlg::onOkClicked() } } if(mapPro.contains("phase_num")){ - propertyStateInfo val = mapPro.value("phase_num"); + PropertyStateInfo val = mapPro.value("phase_num"); nCtType = val.defaultValue.toInt(); } @@ -111,7 +111,7 @@ void ItemPropertyDlg::onOkClicked() else if(nType == 5 && iter.key() == "base_extend"){ //pt QList lst; //二次绕组接法 if(mapPro.contains("pt_sec_winding")){ - propertyStateInfo val = mapPro.value("pt_sec_winding"); + PropertyStateInfo val = mapPro.value("pt_sec_winding"); QJsonObject obj = val.defaultValue.toJsonObject(); QJsonArray arr = obj["winding"].toArray(); for (QJsonValueRef jsonObj : arr) @@ -153,7 +153,7 @@ void ItemPropertyDlg::onGroupSelected(const QString& str) BaseContentDlg* pDlg = qobject_cast(groupViews_[str]); if(pDlg) { - QMap valueMap; + QMap valueMap; BaseProperty* pPro = BasePropertyManager::instance().findEntityData(curUuid_); if(str != QString("component") && str != QString("bay")) { @@ -169,17 +169,17 @@ void ItemPropertyDlg::onGroupSelected(const QString& str) if(pPro->type() == 4 || pPro->type() == 5){ //ct和pt情况,bay组需要跨界面使用extend信息 if(groupValue_.contains("base_extend")){ //实时数据中已包含(已设置) if(groupValue_["base_extend"].mapInfo.contains(curUuid_)){ - QMap extendMap = groupValue_["base_extend"].mapInfo.value(curUuid_); + QMap extendMap = groupValue_["base_extend"].mapInfo.value(curUuid_); if(pPro->type() == 4){ if(extendMap.contains("ct_winding")){ - propertyStateInfo val = extendMap.value("ct_winding"); + PropertyStateInfo val = extendMap.value("ct_winding"); pDlg->setExtendProperty(val); bWindExist = true; } } else if(pPro->type() == 5){ if(extendMap.contains("pt_sec_winding")){ - propertyStateInfo val = extendMap.value("pt_sec_winding"); + PropertyStateInfo val = extendMap.value("pt_sec_winding"); pDlg->setExtendProperty(val); bWindExist = true; } @@ -190,17 +190,17 @@ void ItemPropertyDlg::onGroupSelected(const QString& str) if(!bWindExist){ if(groupViews_.contains("base_extend")){ //实时数据未包含,从extend界面读取 BaseContentDlg* pExtendDlg = qobject_cast(groupViews_.value("base_extend")); - QMap mapPro = pExtendDlg->getPropertyValue(pPro); + QMap mapPro = pExtendDlg->getPropertyValue(pPro); if(pPro->type() == 4 ){ //ct if(mapPro.contains("ct_winding")){ - propertyStateInfo val = mapPro.value("ct_winding"); + PropertyStateInfo val = mapPro.value("ct_winding"); pDlg->setExtendProperty(val); } } else if(pPro->type() == 5){ //pt if(mapPro.contains("pt_sec_winding")){ - propertyStateInfo val = mapPro.value("pt_sec_winding"); + PropertyStateInfo val = mapPro.value("pt_sec_winding"); pDlg->setExtendProperty(val); } } @@ -261,7 +261,7 @@ void ItemPropertyDlg::onHttpDataUpdated(HttpRecommandInfo info) } } -void ItemPropertyDlg::showDlg(modelDataInfo dataInfo,QUuid uuid,GraphicsProjectModelItem* pItem) +void ItemPropertyDlg::showDlg(ModelDataInfo dataInfo,QUuid uuid,GraphicsProjectModelItem* pItem) { groupValue_ = dataInfo.groupInfo; curUuid_ = uuid; diff --git a/diagramCavas/source/loadMonitorPageDlg.cpp b/diagramCavas/source/loadMonitorPageDlg.cpp index 194672c..0f8c0d6 100644 --- a/diagramCavas/source/loadMonitorPageDlg.cpp +++ b/diagramCavas/source/loadMonitorPageDlg.cpp @@ -1,6 +1,7 @@ #include "loadMonitorPageDlg.h" #include "ui_loadMonitorPageDlg.h" -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" #include "tools.h" #include diff --git a/diagramCavas/source/measureSettingDlg.cpp b/diagramCavas/source/measureSettingDlg.cpp index cd1d5a8..2e1ac9f 100644 --- a/diagramCavas/source/measureSettingDlg.cpp +++ b/diagramCavas/source/measureSettingDlg.cpp @@ -61,7 +61,7 @@ void MeasureSettingDlg::initial() ui->gb_yx->setVisible(false); } -void MeasureSettingDlg::showDlg(int type,propertyStateInfo proInfo,bool isDouble) +void MeasureSettingDlg::showDlg(int type,PropertyStateInfo proInfo,bool isDouble) { ui->label_wind->setVisible(false); ui->cb_windIndex->setVisible(false); @@ -197,7 +197,7 @@ void MeasureSettingDlg::showDlg(int type,propertyStateInfo proInfo,bool isDouble } } -void MeasureSettingDlg::showDlg(MeasurementInfo info,propertyStateInfo proInfo,bool isDouble,MeasurementInfo symmetryInfo) +void MeasureSettingDlg::showDlg(MeasurementInfo info,PropertyStateInfo proInfo,bool isDouble,MeasurementInfo symmetryInfo) { ui->label_wind->setVisible(false); ui->cb_windIndex->setVisible(false); @@ -551,7 +551,7 @@ void MeasureSettingDlg::onCancelClicked() void MeasureSettingDlg::onTagChanged(const QString& str) { - QList lst; + QList lst; QString curName; if(_nParentType == 0){ if(_pBayComponent){ @@ -585,7 +585,7 @@ void MeasureSettingDlg::onTagChanged(const QString& str) void MeasureSettingDlg::onNameChanged(const QString& str) { - QList lst; + QList lst; QString curName; if(_nParentType == 0){ if(_pBayComponent){ diff --git a/diagramCavas/source/monitorAttributeDlg.cpp b/diagramCavas/source/monitorAttributeDlg.cpp index 32be90d..d0f0705 100644 --- a/diagramCavas/source/monitorAttributeDlg.cpp +++ b/diagramCavas/source/monitorAttributeDlg.cpp @@ -5,7 +5,7 @@ #include "monitorSideBarDlg.h" #include #include -#include "global.h" +//#include "global.h" MonitorAttributeDlg::MonitorAttributeDlg(QWidget* parent) : QDialog(parent) @@ -48,7 +48,7 @@ void MonitorAttributeDlg::initial() void MonitorAttributeDlg::generateAttributeGroups(QUuid uid) { - QMap> mapLst; + QMap> mapLst; auto mapPara = getParent()->getParent()->getModelController()->getMonitorPara(); if(mapPara.contains(uid)){ auto lst = mapPara[uid]; diff --git a/diagramCavas/source/monitorAttributeGroupDlg.cpp b/diagramCavas/source/monitorAttributeGroupDlg.cpp index 521d19b..af42066 100644 --- a/diagramCavas/source/monitorAttributeGroupDlg.cpp +++ b/diagramCavas/source/monitorAttributeGroupDlg.cpp @@ -13,7 +13,7 @@ #include #include #include -#include "global.h" +//#include "global.h" MonitorAttributeGroupDlg::MonitorAttributeGroupDlg(QWidget* parent) : QScrollArea(parent) @@ -35,7 +35,7 @@ void MonitorAttributeGroupDlg::initial() _layout = new QVBoxLayout(this); } -void MonitorAttributeGroupDlg::createGroupView(QList lst,int nType) +void MonitorAttributeGroupDlg::createGroupView(QList lst,int nType) { QWidget* content = new QWidget(); QGridLayout* gridLayout = new QGridLayout(content); @@ -77,7 +77,7 @@ void MonitorAttributeGroupDlg::createGroupView(QList l setWidgetResizable(true); } -QWidget* MonitorAttributeGroupDlg::createEditor(monitorItemAttributeInfo info,int nType) +QWidget* MonitorAttributeGroupDlg::createEditor(MonitorItemAttributeInfo info,int nType) { QWidget* pWidget = nullptr; if(info.nShowType == 0){ //正常显示 diff --git a/diagramCavas/source/monitorConfigDlg.cpp b/diagramCavas/source/monitorConfigDlg.cpp index c0cb98a..b63897e 100644 --- a/diagramCavas/source/monitorConfigDlg.cpp +++ b/diagramCavas/source/monitorConfigDlg.cpp @@ -5,7 +5,7 @@ #include #include "monitorPanel.h" #include "uiCommunicationBus.h" -#include "global.h" +//#include "global.h" MonitorConfigDlg::MonitorConfigDlg(QWidget *parent) : QDialog(parent) @@ -231,7 +231,7 @@ void MonitorConfigDlg::savePropertyData(const QModelIndex &previous,QUuid uid) void MonitorConfigDlg::loadPropertyData(const QModelIndex ¤t,QUuid uid) { - QList lst; + QList lst; if(_tempConfig.contains(uid)){ lst = _tempConfig.value(uid); } diff --git a/diagramCavas/source/monitorDetailAttributeDlg.cpp b/diagramCavas/source/monitorDetailAttributeDlg.cpp index 97b94b7..09dd15a 100644 --- a/diagramCavas/source/monitorDetailAttributeDlg.cpp +++ b/diagramCavas/source/monitorDetailAttributeDlg.cpp @@ -3,7 +3,7 @@ #include "monitorAttributeGroupDlg.h" #include "monitorPanel.h" #include "graphicsDataModel/fixedPortsModel.h" -#include "global.h" +//#include "global.h" MonitorDetailAttributeDlg::MonitorDetailAttributeDlg(QWidget *parent) : QDialog(parent) @@ -43,7 +43,7 @@ void MonitorDetailAttributeDlg::onColChanged(const QString& str) void MonitorDetailAttributeDlg::generateAttributeGroups(QUuid uid) { clearAllGroup(); - QMap> mapLst; + QMap> mapLst; auto mapPara = _pParent->getModelController()->getMonitorPara(); if(mapPara.contains(uid)){ _curId = uid; diff --git a/diagramCavas/source/monitorDisplaySettingDlg.cpp b/diagramCavas/source/monitorDisplaySettingDlg.cpp index 261537c..ca78ea5 100644 --- a/diagramCavas/source/monitorDisplaySettingDlg.cpp +++ b/diagramCavas/source/monitorDisplaySettingDlg.cpp @@ -153,7 +153,7 @@ void MonitorDisplaySettingDlg::onDeviceComboBoxChanged(const QString& str) } // 2. 构建新设备 - monitorItemTypeStruct newType; + MonitorItemTypeStruct newType; newType.sTag = ui->cb_type->currentData().toString(); newType.sName = str; @@ -164,7 +164,7 @@ void MonitorDisplaySettingDlg::onDeviceComboBoxChanged(const QString& str) // 3. 检查新设备是否存在 if (!_tempSetting.contains(newType)) { _curType = newType; - _curState = monitorItemStateStruct(); + _curState = MonitorItemStateStruct(); clearStateDisplay(); return; } @@ -187,7 +187,7 @@ void MonitorDisplaySettingDlg::onDeviceComboBoxChanged(const QString& str) if (ui->cb_state->count() > 0) { loadFirstStateSafely(); } else { - _curState = monitorItemStateStruct(); + _curState = MonitorItemStateStruct(); clearStateDisplay(); } } @@ -209,9 +209,9 @@ void MonitorDisplaySettingDlg::onStateComboBoxChanged(const QString& str) return; } - monitorItemStateStruct newState; + MonitorItemStateStruct newState; newState.sState = str; - newState.eState = static_cast(stateData.toInt()); + newState.eState = static_cast(stateData.toInt()); // 3. 更新当前状态 _curState = newState; @@ -220,7 +220,7 @@ void MonitorDisplaySettingDlg::onStateComboBoxChanged(const QString& str) loadSetting(_curType, _curState); } -void MonitorDisplaySettingDlg::loadSetting(monitorItemTypeStruct type, monitorItemStateStruct state) +void MonitorDisplaySettingDlg::loadSetting(MonitorItemTypeStruct type, MonitorItemStateStruct state) { if (!type.isValid() || !state.isValid()) { return; @@ -346,7 +346,7 @@ void MonitorDisplaySettingDlg::clearStateDisplay() ui->btn_selectColor->setText(_curColor.name()); // 清空当前状态 - _curState = monitorItemStateStruct(); + _curState = MonitorItemStateStruct(); _curModel.clear(); _curMeta.clear(); } @@ -402,9 +402,9 @@ void MonitorDisplaySettingDlg::loadFirstStateSafely() QString firstStateName = ui->cb_state->itemText(0); QVariant firstStateData = ui->cb_state->itemData(0); - monitorItemStateStruct firstState; + MonitorItemStateStruct firstState; firstState.sState = firstStateName; - firstState.eState = static_cast(firstStateData.toInt()); + firstState.eState = static_cast(firstStateData.toInt()); _curState = firstState; ui->cb_state->setCurrentIndex(0); diff --git a/diagramCavas/source/monitorPanel.cpp b/diagramCavas/source/monitorPanel.cpp index 82401d6..84ed4eb 100644 --- a/diagramCavas/source/monitorPanel.cpp +++ b/diagramCavas/source/monitorPanel.cpp @@ -137,7 +137,7 @@ QJsonObject MonitorPanel::getMonitorInfo() const QJsonArray arr; if(_pModel) { - QMap map = _pModel->allNodePos(); + QMap map = _pModel->allNodePos(); for(auto iter = map.begin();iter != map.end();++iter) { QJsonObject node; @@ -264,7 +264,7 @@ void MonitorPanel::loadNodes(QJsonObject obj) } QJsonArray paraArr = obj["para"].toArray(); - QMap> mapPara; + QMap> mapPara; bool resPara = deserializeParaFromJsonArray(paraArr,mapPara); if(resPara){ if(_pModel){ @@ -279,7 +279,7 @@ void MonitorPanel::loadNodes(QJsonObject obj) } QJsonArray displayArr = obj["displaySetting"].toArray(); - QMap> mapDisplay; + QMap> mapDisplay; deserializeDisplayFromJsonArray(displayArr,mapDisplay); if(_pModel){ _pModel->setMonitorDisplaySetting(mapDisplay); @@ -287,10 +287,10 @@ void MonitorPanel::loadNodes(QJsonObject obj) } QJsonArray relationArr = obj["relation"].toArray(); - QList lstRelation; + QList lstRelation; bool resRel = deserializeRelationFromJsonArray(relationArr, lstRelation); if(resRel){ - QList lstFirst; + QList lstFirst; if(_pModel){ auto pItems = _pModel->getProjectItems(); auto pBays = _pModel->getProjectBayItems(); @@ -303,7 +303,7 @@ void MonitorPanel::loadNodes(QJsonObject obj) } } - QList lstSecond; + QList lstSecond; for(auto& itemInfo:lstRelation) //第二次循环设备 { if(itemInfo.item.nCategory == 0){ //间隔 @@ -326,7 +326,7 @@ void MonitorPanel::saveNodes(int pageId) } -void MonitorPanel::updateSelectedItems(QList lst,bool val) +void MonitorPanel::updateSelectedItems(QList lst,bool val) { if(val){ QStandardItem *root = _itemListmodel->invisibleRootItem(); @@ -464,115 +464,115 @@ void MonitorPanel::initDisplayState() { auto &mapState = _pModel->getMonitorStateMap(); - QList> lst_bus; - lst_bus.append(qMakePair(monitorItemState::Normal,"正常")); - lst_bus.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_bus.append(qMakePair(monitorItemState::Energized,"带电")); - lst_bus.append(qMakePair(monitorItemState::DeEnergized,"失电")); - lst_bus.append(qMakePair(monitorItemState::Grounding,"接地")); + QList> lst_bus; + lst_bus.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_bus.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_bus.append(qMakePair(MonitorItemState::Energized,"带电")); + lst_bus.append(qMakePair(MonitorItemState::DeEnergized,"失电")); + lst_bus.append(qMakePair(MonitorItemState::Grounding,"接地")); mapState.insert(1,lst_bus); - QList> lst_asyncmotor; - lst_asyncmotor.append(qMakePair(monitorItemState::Normal,"正常")); - lst_asyncmotor.append(qMakePair(monitorItemState::Alarm,"告警")); - lst_asyncmotor.append(qMakePair(monitorItemState::LineBreak,"断线")); - lst_asyncmotor.append(qMakePair(monitorItemState::StatusFault,"故障")); + QList> lst_asyncmotor; + lst_asyncmotor.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_asyncmotor.append(qMakePair(MonitorItemState::Alarm,"告警")); + lst_asyncmotor.append(qMakePair(MonitorItemState::LineBreak,"断线")); + lst_asyncmotor.append(qMakePair(MonitorItemState::StatusFault,"故障")); mapState.insert(2,lst_asyncmotor); - QList> lst_cb; - lst_cb.append(qMakePair(monitorItemState::Normal,"正常")); - lst_cb.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_cb.append(qMakePair(monitorItemState::Closing,"合闸")); - lst_cb.append(qMakePair(monitorItemState::Opening,"分闸")); - lst_cb.append(qMakePair(monitorItemState::AccidentTrip,"事故跳闸")); + QList> lst_cb; + lst_cb.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_cb.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_cb.append(qMakePair(MonitorItemState::Closing,"合闸")); + lst_cb.append(qMakePair(MonitorItemState::Opening,"分闸")); + lst_cb.append(qMakePair(MonitorItemState::AccidentTrip,"事故跳闸")); mapState.insert(3,lst_cb); - QList> lst_ct; - lst_ct.append(qMakePair(monitorItemState::Normal,"正常")); - lst_ct.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_ct.append(qMakePair(monitorItemState::LineBreak,"断线")); + QList> lst_ct; + lst_ct.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_ct.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_ct.append(qMakePair(MonitorItemState::LineBreak,"断线")); mapState.insert(4,lst_ct); - QList> lst_pt; - lst_pt.append(qMakePair(monitorItemState::Normal,"正常")); - lst_pt.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_pt.append(qMakePair(monitorItemState::LineBreak,"断线")); + QList> lst_pt; + lst_pt.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_pt.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_pt.append(qMakePair(MonitorItemState::LineBreak,"断线")); mapState.insert(5,lst_pt); - QList> lst_es; - lst_es.append(qMakePair(monitorItemState::Normal,"正常")); - lst_es.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_es.append(qMakePair(monitorItemState::Closing,"合闸")); - lst_es.append(qMakePair(monitorItemState::Opening,"分闸")); + QList> lst_es; + lst_es.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_es.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_es.append(qMakePair(MonitorItemState::Closing,"合闸")); + lst_es.append(qMakePair(MonitorItemState::Opening,"分闸")); mapState.insert(6,lst_es); - QList> lst_fes; - lst_fes.append(qMakePair(monitorItemState::Normal,"正常")); - lst_fes.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_fes.append(qMakePair(monitorItemState::Closing,"合闸")); - lst_fes.append(qMakePair(monitorItemState::Opening,"分闸")); + QList> lst_fes; + lst_fes.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_fes.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_fes.append(qMakePair(MonitorItemState::Closing,"合闸")); + lst_fes.append(qMakePair(MonitorItemState::Opening,"分闸")); mapState.insert(7,lst_fes); - QList> lst_cable; - lst_cable.append(qMakePair(monitorItemState::Normal,"正常")); - lst_cable.append(qMakePair(monitorItemState::Energized,"带电")); - lst_cable.append(qMakePair(monitorItemState::DeEnergized,"失电")); - lst_cable.append(qMakePair(monitorItemState::Grounding,"接地")); + QList> lst_cable; + lst_cable.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_cable.append(qMakePair(MonitorItemState::Energized,"带电")); + lst_cable.append(qMakePair(MonitorItemState::DeEnergized,"失电")); + lst_cable.append(qMakePair(MonitorItemState::Grounding,"接地")); mapState.insert(8,lst_cable); - QList> lst_ds; - lst_ds.append(qMakePair(monitorItemState::Normal,"正常")); - lst_ds.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_ds.append(qMakePair(monitorItemState::Closing,"合闸")); - lst_ds.append(qMakePair(monitorItemState::Opening,"分闸")); + QList> lst_ds; + lst_ds.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_ds.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_ds.append(qMakePair(MonitorItemState::Closing,"合闸")); + lst_ds.append(qMakePair(MonitorItemState::Opening,"分闸")); mapState.insert(9,lst_ds); - QList> lst_dteds; - lst_dteds.append(qMakePair(monitorItemState::Normal,"正常")); - lst_dteds.append(qMakePair(monitorItemState::StatusFault,"故障")); - lst_dteds.append(qMakePair(monitorItemState::Closing,"合闸")); - lst_dteds.append(qMakePair(monitorItemState::Opening,"分闸")); + QList> lst_dteds; + lst_dteds.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_dteds.append(qMakePair(MonitorItemState::StatusFault,"故障")); + lst_dteds.append(qMakePair(MonitorItemState::Closing,"合闸")); + lst_dteds.append(qMakePair(MonitorItemState::Opening,"分闸")); mapState.insert(10,lst_dteds); - QList> lst_potentialIndicator; - lst_potentialIndicator.append(qMakePair(monitorItemState::Normal,"正常")); - lst_potentialIndicator.append(qMakePair(monitorItemState::StatusFault,"故障")); + QList> lst_potentialIndicator; + lst_potentialIndicator.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_potentialIndicator.append(qMakePair(MonitorItemState::StatusFault,"故障")); mapState.insert(11,lst_potentialIndicator); - QList> lst_lightningArrester; - lst_lightningArrester.append(qMakePair(monitorItemState::Normal,"正常")); - lst_lightningArrester.append(qMakePair(monitorItemState::StatusFault,"故障")); + QList> lst_lightningArrester; + lst_lightningArrester.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_lightningArrester.append(qMakePair(MonitorItemState::StatusFault,"故障")); mapState.insert(12,lst_lightningArrester); - QList> lst_cableTermination; - lst_cableTermination.append(qMakePair(monitorItemState::Normal,"正常")); - lst_cableTermination.append(qMakePair(monitorItemState::StatusFault,"故障")); + QList> lst_cableTermination; + lst_cableTermination.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_cableTermination.append(qMakePair(MonitorItemState::StatusFault,"故障")); mapState.insert(13,lst_cableTermination); - QList> lst_cableEnd; - lst_cableEnd.append(qMakePair(monitorItemState::Normal,"正常")); - lst_cableEnd.append(qMakePair(monitorItemState::StatusFault,"故障")); + QList> lst_cableEnd; + lst_cableEnd.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_cableEnd.append(qMakePair(MonitorItemState::StatusFault,"故障")); mapState.insert(14,lst_cableEnd); - QList> lst_transformer2w; - lst_transformer2w.append(qMakePair(monitorItemState::Normal,"正常")); - lst_transformer2w.append(qMakePair(monitorItemState::Alarm,"告警")); - lst_transformer2w.append(qMakePair(monitorItemState::LineBreak,"断线")); - lst_transformer2w.append(qMakePair(monitorItemState::StatusFault,"故障")); + QList> lst_transformer2w; + lst_transformer2w.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_transformer2w.append(qMakePair(MonitorItemState::Alarm,"告警")); + lst_transformer2w.append(qMakePair(MonitorItemState::LineBreak,"断线")); + lst_transformer2w.append(qMakePair(MonitorItemState::StatusFault,"故障")); mapState.insert(15,lst_transformer2w); - QList> lst_transformer3w; - lst_transformer3w.append(qMakePair(monitorItemState::Normal,"正常")); - lst_transformer3w.append(qMakePair(monitorItemState::Alarm,"告警")); - lst_transformer3w.append(qMakePair(monitorItemState::LineBreak,"断线")); - lst_transformer3w.append(qMakePair(monitorItemState::StatusFault,"故障")); + QList> lst_transformer3w; + lst_transformer3w.append(qMakePair(MonitorItemState::Normal,"正常")); + lst_transformer3w.append(qMakePair(MonitorItemState::Alarm,"告警")); + lst_transformer3w.append(qMakePair(MonitorItemState::LineBreak,"断线")); + lst_transformer3w.append(qMakePair(MonitorItemState::StatusFault,"故障")); mapState.insert(16,lst_transformer3w); } void MonitorPanel::initDisplaySetting() { auto stateMap = _pModel->getMonitorStateMap(); - QMap mapType = DataBase::GetInstance()->getAllComponentType(); //所有类型 + QMap mapType = DataBase::GetInstance()->getAllComponentType(); //所有类型 QMap mapUsed; //本图中使用的类型、模型名 auto mapItems = getModelController()->getProjectItems(); @@ -596,15 +596,15 @@ void MonitorPanel::initDisplaySetting() QMap mapAllType = DataBase::GetInstance()->ModelType(); for(auto iter = mapUsed.begin();iter != mapUsed.end();++iter){ //遍历所有类型 - QMap mapStates; + QMap mapStates; QString sType = mapUsed.value(iter.key()).sType; QString sName = mapUsed.value(iter.key()).sName; QString sMeta = mapUsed.value(iter.key()).sMeta; QString sModel = mapUsed.value(iter.key()).sModel; - QList> lstState = stateMap.value(iter.key()); + QList> lstState = stateMap.value(iter.key()); for(auto &pair:lstState){ - monitorItemDisplayInfo info; + MonitorItemDisplayInfo info; info.nItemType = iter.key(); info.sStateName = pair.second; info.sMeta = sMeta; @@ -632,20 +632,20 @@ void MonitorPanel::initDisplaySetting() } info.bytPicture = svg; - monitorItemStateStruct keyState; + MonitorItemStateStruct keyState; keyState.eState = pair.first; keyState.sState = pair.second; mapStates.insert(keyState,info); } - monitorItemTypeStruct keyType; + MonitorItemTypeStruct keyType; keyType.sTag = sType; keyType.sName = sName; _pModel->getMonitorDisplaySetting().insert(keyType,mapStates); } } -QJsonArray MonitorPanel::serializeRelationToJsonArray(const QList& data) const +QJsonArray MonitorPanel::serializeRelationToJsonArray(const QList& data) const { QJsonArray rootArray; @@ -657,14 +657,14 @@ QJsonArray MonitorPanel::serializeRelationToJsonArray(const QList& } // 从 QJsonArray 反序列化到 QList -bool MonitorPanel::deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList& result) +bool MonitorPanel::deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList& result) { result.clear(); for (const QJsonValue& itemValue : jsonArray) { if (!itemValue.isObject()) continue; - RelationItem relationItem; + HierarchyItem relationItem; relationItem.fromJson(itemValue.toObject()); if (relationItem.isValid()) { @@ -675,13 +675,13 @@ bool MonitorPanel::deserializeRelationFromJsonArray(const QJsonArray& jsonArray, return true; } -QJsonArray MonitorPanel::serializeParaToJsonArray(const QMap>& data) const +QJsonArray MonitorPanel::serializeParaToJsonArray(const QMap>& data) const { QJsonArray rootArray; for (auto it = data.begin(); it != data.end(); ++it) { const QUuid& uuid = it.key(); - const QList& attributeList = it.value(); + const QList& attributeList = it.value(); QJsonObject uuidObject; uuidObject["uuid"] = uuid.toString(); @@ -704,7 +704,7 @@ QJsonArray MonitorPanel::serializeParaToJsonArray(const QMap> bool MonitorPanel::deserializeParaFromJsonArray(const QJsonArray& jsonArray, - QMap>& result) + QMap>& result) { result.clear(); @@ -718,13 +718,13 @@ bool MonitorPanel::deserializeParaFromJsonArray(const QJsonArray& jsonArray, if (uuid.isNull()) continue; // 解析属性列表 - QList attributeList; + QList attributeList; QJsonArray attributesArray = uuidObject["attributes"].toArray(); for (const QJsonValue& attrValue : attributesArray) { if (!attrValue.isObject()) continue; - monitorItemAttributeInfo attribute; + MonitorItemAttributeInfo attribute; attribute.fromJson(attrValue.toObject()); attributeList.append(attribute); } @@ -736,13 +736,13 @@ bool MonitorPanel::deserializeParaFromJsonArray(const QJsonArray& jsonArray, } -QJsonArray MonitorPanel::serializeDisplayToJsonArray(const QMap>& data) const +QJsonArray MonitorPanel::serializeDisplayToJsonArray(const QMap>& data) const { QJsonArray rootArray; for (auto typeIt = data.begin(); typeIt != data.end(); ++typeIt) { - const monitorItemTypeStruct& typeKey = typeIt.key(); + const MonitorItemTypeStruct& typeKey = typeIt.key(); const auto& stateMap = typeIt.value(); QJsonObject typeObject; @@ -751,8 +751,8 @@ QJsonArray MonitorPanel::serializeDisplayToJsonArray(const QMap>& result) +void MonitorPanel::deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,QMap>& result) { result.clear(); @@ -780,10 +780,10 @@ void MonitorPanel::deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,Q QJsonObject typeObject = typeValue.toObject(); // 解析类型键 - monitorItemTypeStruct typeKey; + MonitorItemTypeStruct typeKey; typeKey.fromJson(typeObject["typeKey"].toObject()); - QMap stateMap; + QMap stateMap; QJsonArray statesArray = typeObject["states"].toArray(); for (const QJsonValue& stateValue : statesArray) { @@ -791,10 +791,10 @@ void MonitorPanel::deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,Q QJsonObject stateObject = stateValue.toObject(); - monitorItemStateStruct stateKey; + MonitorItemStateStruct stateKey; stateKey.fromJson(stateObject["stateKey"].toObject()); - monitorItemDisplayInfo displayInfo; + MonitorItemDisplayInfo displayInfo; displayInfo.fromJson(stateObject["displayInfo"].toObject()); stateMap[stateKey] = displayInfo; diff --git a/diagramCavas/source/projectIconSetting.cpp b/diagramCavas/source/projectIconSetting.cpp index 4ce2d6c..b506e33 100644 --- a/diagramCavas/source/projectIconSetting.cpp +++ b/diagramCavas/source/projectIconSetting.cpp @@ -7,7 +7,7 @@ #include "projectModelManager.h" #include #include -#include "global.h" +//#include "global.h" ProjectIconSetting::ProjectIconSetting(QWidget *parent) : QDialog(parent) diff --git a/diagramCavas/source/projectModelSetting.cpp b/diagramCavas/source/projectModelSetting.cpp index 48ea51c..437b28a 100644 --- a/diagramCavas/source/projectModelSetting.cpp +++ b/diagramCavas/source/projectModelSetting.cpp @@ -12,7 +12,7 @@ #include "graphicsDataModel/fixedPortsModel.h" #include "projectModelManager.h" #include "tools.h" -#include "global.h" +//#include "global.h" #include "logger.h" #include "dataBase.h" #include "designerScene.h" @@ -245,7 +245,7 @@ void ProjectModelSetting::onAddClicked() pGroup->appendRow(pItem); } - _curItemData->getModelProperty().mapProperty[strGroup].mCheckState[pItem->text()].checkState = true; //选择状态设为1 + _curItemData->getModelProperty().mapProperty[strGroup].checkState[pItem->text()].checkState = true; //选择状态设为1 } } @@ -293,7 +293,7 @@ void ProjectModelSetting::onDecreaseClicked() pGroup->appendRow(pItem); } - _curItemData->getModelProperty().mapProperty[strGroup].mCheckState[pItem->text()].checkState = false; //选择状态设为1 + _curItemData->getModelProperty().mapProperty[strGroup].checkState[pItem->text()].checkState = false; //选择状态设为1 } } diff --git a/diagramCavas/source/propertyContentDlg.cpp b/diagramCavas/source/propertyContentDlg.cpp index 2437970..5ed2fbe 100644 --- a/diagramCavas/source/propertyContentDlg.cpp +++ b/diagramCavas/source/propertyContentDlg.cpp @@ -18,7 +18,7 @@ PropertyContentDlg::~PropertyContentDlg() } -void PropertyContentDlg::createGroupView(groupStateInfo infos) +void PropertyContentDlg::createGroupView(GroupStateInfo infos) { QScrollArea* scrollArea = new QScrollArea(this); QWidget* content = new QWidget(); @@ -36,7 +36,7 @@ void PropertyContentDlg::createGroupView(groupStateInfo infos) _layout->addWidget(scrollArea); } -QWidget* PropertyContentDlg::createEditor(propertyStateInfo pro) +QWidget* PropertyContentDlg::createEditor(PropertyStateInfo pro) { QWidget* pWidget = nullptr; if(pro.type.contains("SMALLINT")) @@ -156,103 +156,103 @@ QWidget* PropertyContentDlg::createEditor(propertyStateInfo pro) if(pWidget) { pWidget->setProperty("name",pro.tagName); - propertyContentInfo info; + PropertyContentInfo info; info.proTag = pro.tagName; info.proName = pro.name; info.proType = pro.type; - info.proEditer = pWidget; + info.proEditor = pWidget; _mapPro.insert(pro.tagName,info); } return pWidget; } -QMap PropertyContentDlg::getPropertyValue(BaseProperty* pPro) +QMap PropertyContentDlg::getPropertyValue(BaseProperty* pPro) { - QMap map; + QMap map; for(auto &pro:_mapPro) { - propertyStateInfo info; + PropertyStateInfo info; info.type = pro.proType; info.name = pro.proName; info.tagName = pro.proTag; - if(pro.proEditer != nullptr) + if(pro.proEditor != nullptr) { if(pro.proType.contains("SMALLINT") || pro.proType.contains("INTEGER")) { - QSpinBox* spin = qobject_cast(pro.proEditer); + QSpinBox* spin = qobject_cast(pro.proEditor); if(spin) info.defaultValue = spin->value(); } else if(pro.proType.contains("BIGINT")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) info.defaultValue = lineEdit->text(); } else if(pro.proType.contains("REAL") || pro.proType.contains("DOUBLE PRECISION")) { - QDoubleSpinBox* dbSpin = qobject_cast(pro.proEditer); + QDoubleSpinBox* dbSpin = qobject_cast(pro.proEditor); if(dbSpin) info.defaultValue = dbSpin->value(); } else if(pro.proType.contains("NUMERIC") || pro.proType.contains("DECIMAL")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) info.defaultValue = lineEdit->text(); } else if(pro.proType.contains("SERIAL") || pro.proType.contains("BIGSERIAL")) { - QLabel* label = qobject_cast(pro.proEditer); + QLabel* label = qobject_cast(pro.proEditor); if(label) info.defaultValue = label->text(); } else if(pro.proType.contains("CHAR") || pro.proType.contains("VARCHAR")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) info.defaultValue = lineEdit->text(); } else if(pro.proType.contains("TEXT")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) info.defaultValue = lineEdit->text(); } else if(pro.proType.contains("BYTEA")) { - QLabel* label = qobject_cast(pro.proEditer); + QLabel* label = qobject_cast(pro.proEditor); if(label) info.defaultValue = label->text(); } else if(pro.proType.contains("DATE")) { - QDateEdit* dateEdit = qobject_cast(pro.proEditer); + QDateEdit* dateEdit = qobject_cast(pro.proEditor); if(dateEdit) info.defaultValue = dateEdit->text(); } else if(pro.proType.contains("TIME")) { - QTimeEdit* timeEdit = qobject_cast(pro.proEditer); + QTimeEdit* timeEdit = qobject_cast(pro.proEditor); if(timeEdit) info.defaultValue = timeEdit->text(); } else if(pro.proType.contains("TIMESTAMP")) { - QDateTimeEdit* dateTimeEidt = qobject_cast(pro.proEditer); + QDateTimeEdit* dateTimeEidt = qobject_cast(pro.proEditor); if(dateTimeEidt) info.defaultValue = dateTimeEidt->text(); } else if(pro.proType.contains("UUID")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) info.defaultValue = lineEdit->text(); } else if(pro.proType.contains("JSON") || pro.proType.contains("JSONB")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) info.defaultValue = lineEdit->text(); } @@ -276,89 +276,89 @@ QMap PropertyContentDlg::getPropertyValue(BasePropert void PropertyContentDlg::setPropertyValue(QVariant var) { - QMap map = var.value>(); + QMap map = var.value>(); _curValue = map; for(auto &info:map) { - propertyContentInfo pro = _mapPro[info.tagName]; + PropertyContentInfo pro = _mapPro[info.tagName]; if(info.type.contains("SMALLINT") || info.type.contains("INTEGER")) { - QSpinBox* spin = qobject_cast(pro.proEditer); + QSpinBox* spin = qobject_cast(pro.proEditor); if(spin) spin->setValue(info.defaultValue.toInt()); } else if(info.type.contains("BIGINT")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) lineEdit->setText(info.defaultValue.toString()); } else if(info.type.contains("REAL") || info.type.contains("DOUBLE PRECISION")) { - QDoubleSpinBox* dbSpin = qobject_cast(pro.proEditer); + QDoubleSpinBox* dbSpin = qobject_cast(pro.proEditor); if(dbSpin) dbSpin->setValue(info.defaultValue.toDouble()); } else if(info.type.contains("NUMERIC") || info.type.contains("DECIMAL")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) lineEdit->setText(info.defaultValue.toString()); } else if(info.type.contains("SERIAL") || info.type.contains("BIGSERIAL")) { - QLabel* label = qobject_cast(pro.proEditer); + QLabel* label = qobject_cast(pro.proEditor); if(label) label->setText(info.defaultValue.toString()); } else if(info.type.contains("CHAR") || info.type.contains("VARCHAR")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) lineEdit->setText(info.defaultValue.toString()); } else if(info.type.contains("TEXT")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) lineEdit->setText(info.defaultValue.toString()); } else if(info.type.contains("BYTEA")) { - QLabel* label = qobject_cast(pro.proEditer); + QLabel* label = qobject_cast(pro.proEditor); if(label) label->setText(info.defaultValue.toString()); } else if(info.type.contains("DATE")) { - QDateEdit* dateEdit = qobject_cast(pro.proEditer); + QDateEdit* dateEdit = qobject_cast(pro.proEditor); QDate date = QDate::fromString(info.defaultValue.toString(), "yyyy-MM-dd"); if(dateEdit) dateEdit->setDate(date); } else if(info.type.contains("TIME")) { - QTimeEdit* timeEdit = qobject_cast(pro.proEditer); + QTimeEdit* timeEdit = qobject_cast(pro.proEditor); QTime time = QTime::fromString(info.defaultValue.toString(), "HH:mm:ss"); if(timeEdit) timeEdit->setTime(time); } else if(info.type.contains("TIMESTAMP")) { - QDateTimeEdit* dateTimeEidt = qobject_cast(pro.proEditer); + QDateTimeEdit* dateTimeEidt = qobject_cast(pro.proEditor); QDateTime dateTime = QDateTime::fromString(info.defaultValue.toString(), "yyyy-MM-dd HH:mm:ss"); if(dateTimeEidt) dateTimeEidt->setDateTime(dateTime); } else if(info.type.contains("UUID")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) lineEdit->setText(info.defaultValue.toString()); } else if(info.type.contains("JSON") || info.type.contains("JSONB")) { - QLineEdit* lineEdit = qobject_cast(pro.proEditer); + QLineEdit* lineEdit = qobject_cast(pro.proEditor); if(lineEdit) lineEdit->setText(info.defaultValue.toString()); } diff --git a/diagramCavas/source/ptExtraInfoDlg.cpp b/diagramCavas/source/ptExtraInfoDlg.cpp index 0adf01f..9014f8c 100644 --- a/diagramCavas/source/ptExtraInfoDlg.cpp +++ b/diagramCavas/source/ptExtraInfoDlg.cpp @@ -29,10 +29,10 @@ PtExtraInfoDlg::~PtExtraInfoDlg() delete ui; } -void PtExtraInfoDlg::createGroupView(groupStateInfo infos) +void PtExtraInfoDlg::createGroupView(GroupStateInfo infos) { for(auto& info:infos.info) { - propertyContentInfo inf; + PropertyContentInfo inf; inf.proTag = info.tagName; inf.proName = info.name; inf.proType = info.type; @@ -40,13 +40,13 @@ void PtExtraInfoDlg::createGroupView(groupStateInfo infos) } } -QMap PtExtraInfoDlg::getPropertyValue(BaseProperty* pPro) +QMap PtExtraInfoDlg::getPropertyValue(BaseProperty* pPro) { - QMap map; + QMap map; for(auto &pro:_mapPro) { - propertyStateInfo info; + PropertyStateInfo info; info.type = pro.proType; info.name = pro.proName; info.tagName = pro.proTag; @@ -108,7 +108,7 @@ QMap PtExtraInfoDlg::getPropertyValue(BaseProperty* p void PtExtraInfoDlg::setPropertyValue(QVariant var) { - QMap map = var.value>(); + QMap map = var.value>(); for(auto &info:map) { if(info.name == "额定电压(V)" || info.tagName == "un_v") diff --git a/diagramCavas/source/structDataMeasurementModel.cpp b/diagramCavas/source/structDataMeasurementModel.cpp index 70996c7..fd55e2e 100644 --- a/diagramCavas/source/structDataMeasurementModel.cpp +++ b/diagramCavas/source/structDataMeasurementModel.cpp @@ -1,6 +1,7 @@ #include "structDataMeasurementModel.h" #include "structDataSource.h" -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" StructDataMeasurementModel::StructDataMeasurementModel(StructDataSource* dataManager, QObject* parent) : QAbstractTableModel(parent) diff --git a/diagramCavas/source/structDataPreviewDlg.cpp b/diagramCavas/source/structDataPreviewDlg.cpp index 545047f..ca13d86 100644 --- a/diagramCavas/source/structDataPreviewDlg.cpp +++ b/diagramCavas/source/structDataPreviewDlg.cpp @@ -14,7 +14,7 @@ #include "structDataPropertyDelegate.h" #include "structDataMeasurementDelegate.h" #include "dataBase.h" -#include "global.h" +//#include "global.h" StructDataPreviewDlg::StructDataPreviewDlg(QWidget *parent) : QDialog(parent) diff --git a/diagramCavas/source/structDataPropertyModel.cpp b/diagramCavas/source/structDataPropertyModel.cpp index c10f35e..863318b 100644 --- a/diagramCavas/source/structDataPropertyModel.cpp +++ b/diagramCavas/source/structDataPropertyModel.cpp @@ -1,6 +1,7 @@ #include "structDataPropertyModel.h" #include "structDataSource.h" -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" StructDataPropertyModel::StructDataPropertyModel(StructDataSource* dataManager, QObject* parent) @@ -95,7 +96,7 @@ bool StructDataPropertyModel::setData(const QModelIndex& index, const QVariant& } } else { // 修改属性数据 - propertyStateInfo* data = m_dataManager->getPropertyData(updatedProp); + PropertyStateInfo* data = m_dataManager->getPropertyData(updatedProp); if (data) { changed = updatePropertyData(data, col, value); if (changed) { @@ -191,7 +192,7 @@ ExtraProperty* StructDataPropertyModel::getProperty(int displayRow) const { } QVariant StructDataPropertyModel::getPropertyData(const ExtraProperty& prop, int col) const { - propertyStateInfo* data = m_dataManager->getPropertyData(prop); + PropertyStateInfo* data = m_dataManager->getPropertyData(prop); if (!data) return QVariant(); switch (col) { @@ -202,7 +203,7 @@ QVariant StructDataPropertyModel::getPropertyData(const ExtraProperty& prop, int return QVariant(); } -bool StructDataPropertyModel::updatePropertyData(propertyStateInfo* data, int col, const QVariant& value) { +bool StructDataPropertyModel::updatePropertyData(PropertyStateInfo* data, int col, const QVariant& value) { switch (col) { case ColLengthPrecision: if (data->lengthPrecision != value.toInt()) { diff --git a/diagramCavas/source/util/baseSelector.cpp b/diagramCavas/source/util/baseSelector.cpp index 9c91af4..dbfda0d 100644 --- a/diagramCavas/source/util/baseSelector.cpp +++ b/diagramCavas/source/util/baseSelector.cpp @@ -474,12 +474,12 @@ void BaseSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerSc view->setDragMode(QGraphicsView::NoDrag); } - QList lst; //发送已选中的元件 + QList lst; //发送已选中的元件 QList items = scene->selectedItems(); for(auto& pItem:items){ GraphicsProjectModelItem* item = dynamic_cast(pItem); if(item){ - RelationItem info; + HierarchyItem info; auto pPro = item->getProperty(); if(pPro){ info.item.nCategory = 0; @@ -492,7 +492,7 @@ void BaseSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerSc else{ GraphicsNonStandardItem* bay = dynamic_cast(pItem); if(bay){ - RelationItem info; + HierarchyItem info; auto pBayPro = bay->getProperty(); if(pBayPro){ info.item.nCategory = 1; diff --git a/diagramCavas/source/util/connectingSelector.cpp b/diagramCavas/source/util/connectingSelector.cpp index 65cb7db..ea95daf 100644 --- a/diagramCavas/source/util/connectingSelector.cpp +++ b/diagramCavas/source/util/connectingSelector.cpp @@ -133,7 +133,7 @@ void ConnectingSelector::createConnectLline(GraphicsProjectModelItem* connecting if(TopologyManager::instance().validateConnection(srcPortId,destPortId)){ PowerConnection* pCon = TopologyManager::instance().createConnection(uid.toString(),srcPortId,destPortId,connectingItem->itemId().toString(),touchedItem->itemId().toString()); //创建拓扑连接(逻辑) if(pCon) - pCon->setState(DataState::changed); + pCon->setState(DataState::Changed); } pItem->getProperty()->setConnection(Connection(connectingItem->itemId(),QUuid(srcPortId),ptSrc->getType(),ptSrc->portPos(),touchedItem->itemId(),QUuid(destPortId),ptDest->getType(),ptDest->portPos())); diff --git a/diagramCavas/source/util/creatingSelector.cpp b/diagramCavas/source/util/creatingSelector.cpp index 131d716..1ab11fd 100644 --- a/diagramCavas/source/util/creatingSelector.cpp +++ b/diagramCavas/source/util/creatingSelector.cpp @@ -4,7 +4,7 @@ #include "graphicsItem/electricSvgItemBus.h" #include "graphicsItem/electricSvgItemRect.h" #include "graphicsItem/electricSvgItemTriangle.h" -#include "global.h" +//#include "global.h" #include #include #include diff --git a/diagramCavas/source/util/movingSelector.cpp b/diagramCavas/source/util/movingSelector.cpp index 085fc32..b1dd56c 100644 --- a/diagramCavas/source/util/movingSelector.cpp +++ b/diagramCavas/source/util/movingSelector.cpp @@ -42,7 +42,7 @@ void MovingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerSce void MovingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene,DiagramMode sceneMode) { - QList lst; //发送已选中的元件 + QList lst; //发送已选中的元件 QList items = scene->selectedItems(); for(int n = 0; n < items.size(); n++) { @@ -53,7 +53,7 @@ void MovingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, Designer GraphicsProjectModelItem* p = dynamic_cast(items.at(n)); if(p){ auto pPro = p->getProperty(); - RelationItem info; + HierarchyItem info; if(pPro){ info.item.nCategory = 0; info.item.nEquipType = pPro->type(); @@ -65,7 +65,7 @@ void MovingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, Designer else{ GraphicsNonStandardItem* bay = dynamic_cast(items.at(n)); if(bay){ - RelationItem info; + HierarchyItem info; auto pBayPro = bay->getProperty(); if(pBayPro){ info.item.nCategory = 1; diff --git a/diagramCavas/source/util/selectorManager.cpp b/diagramCavas/source/util/selectorManager.cpp index 520bc60..b37497e 100644 --- a/diagramCavas/source/util/selectorManager.cpp +++ b/diagramCavas/source/util/selectorManager.cpp @@ -66,7 +66,7 @@ BaseSelector* SelectorManager::getWorkingSelector() return nullptr; } -void SelectorManager::setDrawGraphicsItem(modelStateInfo& info) +void SelectorManager::setDrawGraphicsItem(ModelStateInfo& info) { for(auto it = m_vecSelectors.begin(); it != m_vecSelectors.end(); it++) { diff --git a/diagramUtils/CMakeLists.txt b/diagramUtils/CMakeLists.txt index c3974a2..4b3c9c2 100644 --- a/diagramUtils/CMakeLists.txt +++ b/diagramUtils/CMakeLists.txt @@ -7,11 +7,18 @@ set(DIAGRAMUTILS_HEADER_FILES include/basePropertyManager.h include/projectModelManager.h include/projectManager.h - ../common/include/global.h + #../common/include/global.h ../common/include/baseProperty.h ../common/include/compiler.hpp ../common/include/export.hpp ../common/include/operatingSystem.hpp + + ../common/core_model/types.h + ../common/core_model/topology.h + ../common/core_model/diagram.h + ../common/backend/project_model.h + ../common/backend/meta_model.h + ../common/frontend/monitor_item.h ) set(DIAGRAMUTILS_SOURCE_FILES @@ -22,7 +29,7 @@ set(DIAGRAMUTILS_SOURCE_FILES source/projectModelManager.cpp source/projectManager.cpp source/componentIconManager.cpp - ../common/source/global.cpp + #../common/source/global.cpp ../common/source/baseProperty.cpp ) diff --git a/diagramUtils/include/componentIconManager.h b/diagramUtils/include/componentIconManager.h index 56f7a78..1047f2b 100644 --- a/diagramUtils/include/componentIconManager.h +++ b/diagramUtils/include/componentIconManager.h @@ -2,8 +2,9 @@ #define COMPONENTICONMANAGER_H #include -#include "global.h" +//#include "global.h" #include "export.hpp" +#include "common/core_model/types.h" /****图标管理类 * 对各种状态图标的管理 *****/ diff --git a/diagramUtils/include/dataBase.h b/diagramUtils/include/dataBase.h index 5d415a4..b6df683 100644 --- a/diagramUtils/include/dataBase.h +++ b/diagramUtils/include/dataBase.h @@ -5,7 +5,12 @@ #include #include #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" +#include "common/core_model/topology.h" +#include "common/backend/meta_model.h" +#include "common/frontend/monitor_item.h" +#include "common/core_model/diagram.h" #include "export.hpp" @@ -36,35 +41,35 @@ public: QString getZoneNameById(int); QString getStationNameById(int); - QList getAllGrid(); - QList getAllZone(); - QList getAllStation(); + QList getAllGrid(); + QList getAllZone(); + QList getAllStation(); - QList getAllTopologics(); + QList getAllTopologics(); int topologicExist(QUuid fromItem,QUuid toItem); - topologicInfo getTopologicById(int id); + TopologyInfo getTopologicById(int id); bool deleteTopologic(QUuid fromPin,QUuid toPin); /*********************************************************************************/ bool updateComponent(QUuid uuid,QString tag,QString name,QJsonObject context); bool insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op); - bool insertDynamicProperty(QUuid uuid,groupStateValue groupValue); - bool updateDynamicProperty(QUuid uuid,groupStateValue groupValue); - componentInfo getComponentInfoByUuid(QString uuid); - QList getAllComponents(); + bool insertDynamicProperty(QUuid uuid,GroupStateValue groupValue); + bool updateDynamicProperty(QUuid uuid,GroupStateValue groupValue); + ComponentInfo getComponentInfoByUuid(QString uuid); + QList getAllComponents(); bool componentExist(QString uuid); bool deleteComponent(QString uuid); - QMap getAllComponentType(); //获取所有支持的元件种类 + QMap getAllComponentType(); //获取所有支持的元件种类 /*********************************************************************************/ int getPageIdByName(QString name); bool updatePage(QString tag,QString name,QJsonObject context); QJsonObject getPageContextByName(QString name); - QList getAllPage(); + QList getAllPage(); /*********************************************************************************/ bool insertBay(QUuid uuid,QString name,QString tag,QString type,double unom,double fla,double capacity,QString description,bool inService,int nState,QString grid,QString zone,QString station,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context); bool updateBay(QUuid uuid,QString name,QString tag,double unom,double fla,double capacity,QString description,bool inService,int nState,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context); - bayInfo getBay(QUuid uuid); - QList getAllBay(); + BayInfo getBay(QUuid uuid); + QList getAllBay(); bool ifBayExist(QUuid uuid); bool deleteBay(QUuid uuid); /*********************************************************************************/ @@ -136,33 +141,33 @@ public: QStringList ifModelOccupy(const QString&); //判断模型是否被使用 //**********使用工程模 QMap getAllProjectModel(); //获取所有工程模<名称,图元类型> - QMap getModelInfo(const QString&); //获取模型信息 - QMap getPublicInfo(); //获取公共属性组信息 - QMap getProjectModelGroupInfo(const QString&); //获取指定工程模所有属性组信息<属性组名,属性信息> - QMap selectGroupPropertyByState(const QString& tableName,QMap mapPro); //返回属性组表中的信息 + QMap getModelInfo(const QString&); //获取模型信息 + QMap getPublicInfo(); //获取公共属性组信息 + QMap getProjectModelGroupInfo(const QString&); //获取指定工程模所有属性组信息<属性组名,属性信息> + QMap selectGroupPropertyByState(const QString& tableName,QMap mapPro); //返回属性组表中的信息 PropertyValueInfo selectGroupPropertyByValue(const QString& tableName,QUuid uuid,PropertyValueInfo value); //通过已有结构更新数据 - QList getMeasureAttributeTypes(); //获取所有量测属性 + QList getMeasureAttributeTypes(); //获取所有量测属性 /************************************运行模式(监控)*********************************************/ bool insertMonitor(QUuid uid,QString tag,QString name,QString parent,QJsonObject context); QUuid getMonitorIdByName(QString name); bool updateMonitor(QString tag,QJsonObject context); QJsonObject getMonitorContextByTag(QString tag); - QList getAllMonitor(); + QList getAllMonitor(); public: /***********************************editor编辑器**********************************************/ bool insertEditorProject(QUuid,QString,QString); - QList getAllEditorProject(); + QList getAllEditorProject(); bool deleteEditorProject(QString); bool ifEditorProjectExist(QString name); /***********************************baseSetting**********************************************/ bool insertBaseSetting(QUuid,QString,QString,QByteArray,QUuid,QString ts); bool updateBaseSetting(QUuid,QByteArray context,QString ts); QByteArray getBaseSettingByUid(QUuid); - editorBaseSettingInfo getBaseSettingInfo(QUuid); - QList getAllBaseSetting(); + EditorBaseSettingInfo getBaseSettingInfo(QUuid); + QList getAllBaseSetting(); bool deleteBaseSetting(QUuid); bool ifBaseSettingExist(QUuid); private: @@ -175,7 +180,7 @@ private: QMap _modelAttributePublic; //公共属性组 QMap _modelConnectivity; //连接性组 - QMap _componentType; //存储系统支持的类型列表 + QMap _componentType; //存储系统支持的类型列表 private: void initial(); //bool createProjectDB(); diff --git a/diagramUtils/include/dataManager.h b/diagramUtils/include/dataManager.h index 874fcae..186897f 100644 --- a/diagramUtils/include/dataManager.h +++ b/diagramUtils/include/dataManager.h @@ -2,13 +2,14 @@ #define DATAMANAGER_H #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" #include "export.hpp" /****数据管理类 * 对模型数据的集中分发、更新 *****/ -typedef QMap ModleStateMap; -typedef QMap ModelDataMap; +typedef QMap ModleStateMap; +typedef QMap ModelDataMap; class DIAGRAM_DESIGNER_PUBLIC DataManager : public QObject { @@ -23,7 +24,7 @@ public: void initialModelState(bool refresh = false); void initialModelData(bool refresh = false); - void updateModelData(const QString& sModel,QUuid uuid,const QString& sGroup,QMap mapPro); + void updateModelData(const QString& sModel,QUuid uuid,const QString& sGroup,QMap mapPro); ModleStateMap& modelState(); ModelDataMap& modelData(); diff --git a/diagramUtils/include/projectManager.h b/diagramUtils/include/projectManager.h index d43b60e..c3bd86d 100644 --- a/diagramUtils/include/projectManager.h +++ b/diagramUtils/include/projectManager.h @@ -2,8 +2,9 @@ #define PROJECTMANAGER_H #include -#include "global.h" +//#include "global.h" #include "export.hpp" +#include "common/core_model/diagram.h" /****工程管理类 * 对工程进行管理 *****/ @@ -28,8 +29,8 @@ public: void loadBaseSetting(const QString& str,QUuid id); //加载wizard与基模拓扑设置 - QList getBaseSettingsByProject(const QString&); //获取工程名对应的设置列表 - editorBaseSettingInfo getBaseSetting(QUuid); //获取设置 + QList getBaseSettingsByProject(const QString&); //获取工程名对应的设置列表 + EditorBaseSettingInfo getBaseSetting(QUuid); //获取设置 signals: void prepareUnloadProject(const QString&); void prepareOpenSetting(const QString& str); diff --git a/diagramUtils/include/projectModelManager.h b/diagramUtils/include/projectModelManager.h index 0b77d29..6ff3427 100644 --- a/diagramUtils/include/projectModelManager.h +++ b/diagramUtils/include/projectModelManager.h @@ -4,7 +4,8 @@ #include #include #include "export.hpp" -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" /****工程模管理类*****/ class DIAGRAM_DESIGNER_PUBLIC ProjectModelManager : public QObject @@ -35,7 +36,7 @@ public: QPair combinePropertySql(const QStandardItem*); //根据item属性生成sql bool ifProjectEqual(const QString& sMeta,const QString& sPro,QMap); //根据每个属性组的勾选状态判断两个模型是否相同 QString modifyProjectModel(const QString& sMeta,const QString& sProject,QMap); //修改工程模 - bool renameProjectModel(const QString& strCur,QMap datas); //重命名工程模 + bool renameProjectModel(const QString& strCur,QMap datas); //重命名工程模 void updateComponentModelName(const QString& strOld,const QString& strNew); //更新component中的工程模 bool ifProjectExsit(const QString&); //判断工程模存在 signals: @@ -44,7 +45,7 @@ private: int createPropertyTable(const QString& sMeta,const QString& sProject,const QString& sGroup,QList lstSelect,QList lstBase,int nLinkType,bool isPublic); //创建属性组表并插入记录到管理表(工程名,当前项迭代器,关联图元类型) QJsonObject getSelectedState(QList select,QList base); //返回json格式的选中状态 QString getItemDataType(const QStandardItem* pItem); //返回数据类型 - projectModelSetting getModelSetting(const QString& sMeta,const QString& sProject); //获取指定工程模的设定 + ProjectModelSettingStruct getModelSetting(const QString& sMeta,const QString& sProject); //获取指定工程模的设定 QByteArray cleanHexData(const QByteArray& hexData); QByteArray fixHexLength(const QByteArray& hexData); diff --git a/diagramUtils/source/componentIconManager.cpp b/diagramUtils/source/componentIconManager.cpp index 431ae35..94062ca 100644 --- a/diagramUtils/source/componentIconManager.cpp +++ b/diagramUtils/source/componentIconManager.cpp @@ -21,7 +21,7 @@ ComponentIconManager::~ComponentIconManager() void ComponentIconManager::initialData() { - addIcon("circuitBreaker",DM_edit,VI_thumbnail,"abcde"); + addIcon("circuitBreaker",DM_edit,VI_Thumbnail,"abcde"); } void ComponentIconManager::addIcon(QString sType,DiagramMode mode,VariantIcon varIcon, QString iconPath) diff --git a/diagramUtils/source/dataBase.cpp b/diagramUtils/source/dataBase.cpp index 0a8e5e8..7a9fd28 100644 --- a/diagramUtils/source/dataBase.cpp +++ b/diagramUtils/source/dataBase.cpp @@ -299,7 +299,7 @@ bool DataBase::updateComponent(QUuid uuid,QString tag,QString name,QJsonObject c return false; } -bool DataBase::insertDynamicProperty(QUuid uuid,groupStateValue groupValue) +bool DataBase::insertDynamicProperty(QUuid uuid,GroupStateValue groupValue) { QString strPros; QString strPronouns; @@ -335,7 +335,7 @@ bool DataBase::insertDynamicProperty(QUuid uuid,groupStateValue groupValue) } } -bool DataBase::updateDynamicProperty(QUuid uuid,groupStateValue groupValue) +bool DataBase::updateDynamicProperty(QUuid uuid,GroupStateValue groupValue) { QStringList setClauses; @@ -573,9 +573,9 @@ QString DataBase::getStationNameById(int id) } } -QList DataBase::getAllGrid() +QList DataBase::getAllGrid() { - QList lst; + QList lst; QString strSQL = "SELECT id, tagname, name, description FROM grid"; try @@ -583,7 +583,7 @@ QList DataBase::getAllGrid() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - gridInfo info; + GridInfo info; info.id = query.value(0).toInt(); info.tagname = query.value(1).toString(); info.name = query.value(2).toString(); @@ -599,9 +599,9 @@ QList DataBase::getAllGrid() } } -QList DataBase::getAllZone() +QList DataBase::getAllZone() { - QList lst; + QList lst; QString strSQL = "SELECT id,grid_id,tagname,name,description FROM zone"; try @@ -609,7 +609,7 @@ QList DataBase::getAllZone() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - zoneInfo info; + ZoneInfo info; info.id = query.value(0).toInt(); info.grid_id = query.value(1).toInt(); info.tagname = query.value(2).toString(); @@ -626,9 +626,9 @@ QList DataBase::getAllZone() } } -QList DataBase::getAllStation() +QList DataBase::getAllStation() { - QList lst; + QList lst; QString strSQL = "SELECT id,zone_id,tagname,name,description,is_local FROM station"; try @@ -636,7 +636,7 @@ QList DataBase::getAllStation() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - stationInfo info; + StationInfo info; info.id = query.value(0).toInt(); info.zone_id = query.value(1).toInt(); info.tagname = query.value(2).toString(); @@ -654,9 +654,9 @@ QList DataBase::getAllStation() } } -QList DataBase::getAllTopologics() +QList DataBase::getAllTopologics() { - QList lst; + QList lst; QString strSQL = "SELECT id,uuid_from,uuid_to,context,flag FROM topologic"; try @@ -664,7 +664,7 @@ QList DataBase::getAllTopologics() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - topologicInfo info; + TopologyInfo info; info.id = query.value(0).toInt(); info.uuid_from = QUuid(query.value(1).toString()); info.uuid_to = QUuid(query.value(2).toString()); @@ -707,9 +707,9 @@ int DataBase::topologicExist(QUuid fromItem,QUuid toItem) } } -topologicInfo DataBase::getTopologicById(int id) +TopologyInfo DataBase::getTopologicById(int id) { - topologicInfo info; + TopologyInfo info; QString strSQL = "SELECT id,uuid_from,uuid_to,context,flag FROM topologic WHERE id = ?"; QVariantList params; params.append(id); @@ -756,9 +756,9 @@ bool DataBase::deleteTopologic(QUuid fromPin,QUuid toPin) } /************************************************************/ -componentInfo DataBase::getComponentInfoByUuid(QString uuid) +ComponentInfo DataBase::getComponentInfoByUuid(QString uuid) { - componentInfo inf; + ComponentInfo inf; if(db.open()) { QSqlQuery qry(db); @@ -795,9 +795,9 @@ componentInfo DataBase::getComponentInfoByUuid(QString uuid) return inf; } -QList DataBase::getAllComponents() +QList DataBase::getAllComponents() { - QList lst; + QList lst; if(db.open()) { QSqlQuery qry(db); @@ -814,7 +814,7 @@ QList DataBase::getAllComponents() { while (qry.next()) { - componentInfo inf; + ComponentInfo inf; inf.uuid = QUuid(qry.value(0).toString()); inf.modelName = qry.value(1).toString(); inf.tag = qry.value(2).toString(); @@ -881,11 +881,11 @@ bool DataBase::deleteComponent(QString uuid) return false; } -QMap DataBase::getAllComponentType() +QMap DataBase::getAllComponentType() { if(_componentType.empty()) { - QMap map; + QMap map; if(db.open()) { QSqlQuery qry(db); @@ -902,7 +902,7 @@ QMap DataBase::getAllComponentType() { while (qry.next()) { - componentTypeInfo inf; + ComponentTypeInfo inf; inf.id = qry.value(0).toInt(); inf.type = qry.value(1).toString(); inf.name = qry.value(2).toString(); @@ -1013,9 +1013,9 @@ QJsonObject DataBase::getPageContextByName(QString name) return QJsonObject(); } -QList DataBase::getAllPage() +QList DataBase::getAllPage() { - QList lst; + QList lst; QString strSQL = "SELECT id,tag,name,label,context,description,op FROM page"; try @@ -1023,7 +1023,7 @@ QList DataBase::getAllPage() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - pageInfo info; + PageInfo info; info.id = query.value(0).toInt(); info.tag = query.value(1).toString(); info.name = query.value(2).toString(); @@ -1236,9 +1236,9 @@ bool DataBase::updateBay(QUuid uuid,QString name,QString tag,double unom,double } } -bayInfo DataBase::getBay(QUuid uuid) +BayInfo DataBase::getBay(QUuid uuid) { - bayInfo info; + BayInfo info; QString strSQL = "SELECT bay_uuid, name, tag, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context FROM bay WHERE bay_uuid = ?"; QVariantList params; params.append(uuid); @@ -1293,9 +1293,9 @@ bayInfo DataBase::getBay(QUuid uuid) } } -QList DataBase::getAllBay() +QList DataBase::getAllBay() { - QList lstInfo; + QList lstInfo; QString strSQL = "SELECT bay_uuid, name, tag, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context FROM bay"; try @@ -1303,7 +1303,7 @@ QList DataBase::getAllBay() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - bayInfo info; + BayInfo info; info.uuid = QUuid(query.value(0).toString()); info.name = query.value(1).toString(); info.tag = query.value(2).toString(); @@ -2172,7 +2172,7 @@ bool DataBase::getAttributeGroup() ag.id = id; ag.groupType = groupType; ag.groupName = groupName; - ag.ispublic = ispublic; + ag.isPublic = ispublic; ag.remark = remark; _attributeGroup.insert(id,ag); } @@ -2239,7 +2239,7 @@ bool DataBase::getModelType() mt.id = id; mt.modelType = sModelType; mt.modelName = sModelName; - mt.graphicEelement = graphicElement; + mt.graphicElement = graphicElement; mt.icon = bIcon; mt.remark = remark; @@ -2778,9 +2778,9 @@ QMap DataBase::getAllProjectModel() } } -QMap DataBase::getModelInfo(const QString& sProject) +QMap DataBase::getModelInfo(const QString& sProject) { - QMap map; + QMap map; QString strSQL = "SELECT group_name,name,check_state FROM project_manager WHERE tag = ?"; QVariantList params; params.append(sProject); @@ -2790,7 +2790,7 @@ QMap DataBase::getModelInfo(const QString& sProject) QSqlQuery query = executeSQL(strSQL,false,params); while (query.next()) { - propertyGroupState sta; + PropertyGroupState sta; sta.groupName = query.value(0).toString(); sta.tableName = query.value(1).toString(); sta.propertyState = QstringToJson(query.value(2).toString()); @@ -2805,9 +2805,9 @@ QMap DataBase::getModelInfo(const QString& sProject) } } -QMap DataBase::getPublicInfo() +QMap DataBase::getPublicInfo() { - QMap map; + QMap map; bool ispublic = true; QString strSQL = "SELECT group_name,name,check_state FROM project_manager WHERE ispublic = ?"; QVariantList params; @@ -2818,7 +2818,7 @@ QMap DataBase::getPublicInfo() QSqlQuery query = executeSQL(strSQL,false,params); while (query.next()) { - propertyGroupState sta; + PropertyGroupState sta; sta.groupName = query.value(0).toString(); sta.tableName = query.value(1).toString(); sta.propertyState = QstringToJson(query.value(2).toString()); @@ -2833,9 +2833,9 @@ QMap DataBase::getPublicInfo() } } -QMap DataBase::getProjectModelGroupInfo(const QString& sTable) +QMap DataBase::getProjectModelGroupInfo(const QString& sTable) { - QMap map; + QMap map; QString strSQL = "SELECT name,tag,meta_model,group_name,link_type,check_state FROM project_manager WHERE tag = ?"; QVariantList params; params.append(sTable); @@ -2845,7 +2845,7 @@ QMap DataBase::getProjectModelGroupInfo(const QString& s QSqlQuery query = executeSQL(strSQL,false,params); while (query.next()) { - projectManager info; + ProjectManagerStruct info; info.name = query.value(0).toString(); info.tag = query.value(1).toString(); info.metaModel = query.value(2).toString(); @@ -2866,7 +2866,7 @@ QMap DataBase::getProjectModelGroupInfo(const QString& s } } -QMap DataBase::selectGroupPropertyByState(const QString& tableName,QMap mapPro) +QMap DataBase::selectGroupPropertyByState(const QString& tableName,QMap mapPro) { QStringList paramList; for(auto &pro:mapPro) @@ -2885,7 +2885,7 @@ QMap DataBase::selectGroupPropertyByState(const QString QUuid uuid; for(auto &proVal:mapPro) { - propertyStateInfo pro; + PropertyStateInfo pro; if(proVal.tagName == "global_uuid" && tableName != "baseProperty") //除基础属性组,其他组不显示uuid todo:组名适配 { uuid = QUuid(query.value(proVal.tagName).toString()); @@ -2898,7 +2898,7 @@ QMap DataBase::selectGroupPropertyByState(const QString pro.tagName = proVal.tagName; pro.name = proVal.name; pro.type = proVal.type; - pro.isVisibe = proVal.isVisibe; + pro.isVisible = proVal.isVisible; /*if(proVal.type == "JSONB"){ //json单独处理 pro.defaultValue = query.value(proVal.name).toJsonObject(); } @@ -2937,11 +2937,11 @@ PropertyValueInfo DataBase::selectGroupPropertyByValue(const QString& tableName, QUuid uuid; for(auto &proVal:value) { - propertyStateInfo pro; + PropertyStateInfo pro; pro.tagName = proVal.tagName; pro.name = proVal.name; pro.type = proVal.type; - pro.isVisibe = proVal.isVisibe; + pro.isVisible = proVal.isVisible; pro.defaultValue = query.value(proVal.tagName ); map.insert(proVal.tagName,pro); } @@ -2955,9 +2955,9 @@ PropertyValueInfo DataBase::selectGroupPropertyByValue(const QString& tableName, } } -QList DataBase::getMeasureAttributeTypes() //暂时调换获取的name与tag +QList DataBase::getMeasureAttributeTypes() //暂时调换获取的name与tag { - QList lst; + QList lst; QString strSQL = "SELECT attribute,attribute_name FROM basic.attribute WHERE is_visible = ?"; QVariantList params; params.append(2); @@ -2993,7 +2993,7 @@ QList DataBase::getMeasureAttributeTypes() //暂时 { QString tn2 = name; QString tt2 = tag; - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = tn2.replace("sn",sn); measure.name = tt2.replace("sn",sn); lst.append(measure); @@ -3015,7 +3015,7 @@ QList DataBase::getMeasureAttributeTypes() //暂时 { QString tn2 = name; QString tt2 = tag; - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = tn2.replace("sn",sn); measure.name = tt2.replace("sn",sn); lst.append(measure); @@ -3035,7 +3035,7 @@ QList DataBase::getMeasureAttributeTypes() //暂时 { QString tn2 = name; QString tt2 = tag; - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = tn2.replace("sn",sn); measure.name = tt2.replace("sn",sn); lst.append(measure); @@ -3054,7 +3054,7 @@ QList DataBase::getMeasureAttributeTypes() //暂时 QString name = attName; QString tag = attTag; - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = name.replace("_$",i); measure.name = tag.replace("_$",i); lst.append(measure); @@ -3069,7 +3069,7 @@ QList DataBase::getMeasureAttributeTypes() //暂时 QString name = attName; QString tag = attTag; - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = name.replace("_$",u); measure.name = tag.replace("_$",u); lst.append(measure); @@ -3085,7 +3085,7 @@ QList DataBase::getMeasureAttributeTypes() //暂时 QString name = attName; QString tag = attTag; - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = name.replace("$",dor); measure.name = tag.replace("$",dor); lst.append(measure); @@ -3102,14 +3102,14 @@ QList DataBase::getMeasureAttributeTypes() //暂时 QString name = attName; QString tag = attTag; - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = name.replace("sn",sn); measure.name = tag.replace("sn",sn); lst.append(measure); } } else{ //没有分支 - measureAttributeType measure; + MeasureAttributeType measure; measure.tag = attName; measure.name = attTag; lst.append(measure); @@ -3217,9 +3217,9 @@ QJsonObject DataBase::getMonitorContextByTag(QString tag) return QJsonObject(); } -QList DataBase::getAllMonitor() +QList DataBase::getAllMonitor() { - QList lst; + QList lst; QString strSQL = "SELECT id,global_uuid,tag,name,parent,context,ts FROM diagramui_monitor_page"; try @@ -3227,7 +3227,7 @@ QList DataBase::getAllMonitor() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - monitorPageInfo info; + MonitorPageInfo info; info.id = query.value(0).toInt(); info.uid = QUuid(query.value(1).toString()); info.tag = query.value(2).toString(); @@ -3499,7 +3499,7 @@ bool DataBase::modifyProjectTable(QString sTable,QMap mOld,QMap QStringList DataBase::ifModelOccupy(const QString& sName) { QStringList lst; - QMap map; + QMap map; QString strSQL = "SELECT tag FROM component WHERE model_name = ?"; QVariantList params; params.append(sName); @@ -3541,9 +3541,9 @@ bool DataBase::insertEditorProject(QUuid uid,QString name,QString tag) } } -QList DataBase::getAllEditorProject() +QList DataBase::getAllEditorProject() { - QList lst; + QList lst; QString strSQL = "SELECT id,global_uuid,name,tag FROM diagramui_editor_projects"; try @@ -3551,7 +3551,7 @@ QList DataBase::getAllEditorProject() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - editorProjectInfo info; + EditorProjectInfo info; info.id = query.value(0).toInt(); info.uuid = QUuid(query.value(1).toString()); info.name = query.value(2).toString(); @@ -3673,9 +3673,9 @@ QByteArray DataBase::getBaseSettingByUid(QUuid uid) } } -editorBaseSettingInfo DataBase::getBaseSettingInfo(QUuid uid) +EditorBaseSettingInfo DataBase::getBaseSettingInfo(QUuid uid) { - editorBaseSettingInfo info; + EditorBaseSettingInfo info; QString strSQL = "SELECT project_name, autor, context, generate_uuid, ts FROM diagramui_editor_basesetting WHERE global_uuid = ?"; QVariantList params; params.append(uid); @@ -3701,9 +3701,9 @@ editorBaseSettingInfo DataBase::getBaseSettingInfo(QUuid uid) } } -QList DataBase::getAllBaseSetting() +QList DataBase::getAllBaseSetting() { - QList lst; + QList lst; QString strSQL = "SELECT id,global_uuid, project_name, autor, context, generate_uuid, ts FROM diagramui_editor_basesetting"; try @@ -3711,7 +3711,7 @@ QList DataBase::getAllBaseSetting() QSqlQuery query = executeSQL(strSQL); while (query.next()) { - editorBaseSettingInfo info; + EditorBaseSettingInfo info; info.id = query.value(0).toInt(); info.uuid = QUuid(query.value(1).toString()); info.projectName = query.value(2).toString(); diff --git a/diagramUtils/source/dataManager.cpp b/diagramUtils/source/dataManager.cpp index 7649b03..6040698 100644 --- a/diagramUtils/source/dataManager.cpp +++ b/diagramUtils/source/dataManager.cpp @@ -37,17 +37,17 @@ void DataManager::initialModelState(bool refresh) QMap::Iterator iter; for(iter = model.begin();iter != model.end(); ++iter) //遍历模型 { - modelStateInfo modelInfo; + ModelStateInfo modelInfo; modelInfo.modelType = iter.value(); //模型类型 modelInfo.modelName = iter.key(); - QMap mapState = DataBase::GetInstance()->getModelInfo(iter.key()); - QMap mapPublic = DataBase::GetInstance()->getPublicInfo(); //公共属性组 + QMap mapState = DataBase::GetInstance()->getModelInfo(iter.key()); + QMap mapPublic = DataBase::GetInstance()->getPublicInfo(); //公共属性组 - QMap::Iterator it; + QMap::Iterator it; for(it = mapPublic.begin();it != mapPublic.end();++it) //遍历公共属性组 { - groupStateInfo groupInfo; + GroupStateInfo groupInfo; groupInfo.groupName = it.key(); groupInfo.tableName = it->tableName; groupInfo.isPublic = true; @@ -55,7 +55,7 @@ void DataManager::initialModelState(bool refresh) for (QJsonValueRef nodeJson : nodesJsonArray) //每个属性的状态信息 { - propertyStateInfo propertyInfo; + PropertyStateInfo propertyInfo; QJsonObject node = nodeJson.toObject(); QString propertyTag = node["name"].toString(); @@ -78,7 +78,7 @@ void DataManager::initialModelState(bool refresh) propertyInfo.type = dataType; propertyInfo.defaultValue = defaultValue; propertyInfo.lengthPrecision = lengthPrecision; - propertyInfo.isVisibe = nIsVisible; + propertyInfo.isVisible = nIsVisible; groupInfo.info.insert(propertyName,propertyInfo); } @@ -88,14 +88,14 @@ void DataManager::initialModelState(bool refresh) for(it = mapState.begin();it != mapState.end();++it) //遍历模型属性组 { - groupStateInfo groupInfo; + GroupStateInfo groupInfo; groupInfo.groupName = it.key(); groupInfo.tableName = it->tableName; QJsonArray nodesJsonArray = it->propertyState["checkState"].toArray(); for (QJsonValueRef nodeJson : nodesJsonArray) //每个属性的状态信息 { - propertyStateInfo propertyInfo; + PropertyStateInfo propertyInfo; QJsonObject node = nodeJson.toObject(); QString propertyTag = node["name"].toString(); @@ -118,7 +118,7 @@ void DataManager::initialModelState(bool refresh) propertyInfo.type = dataType; propertyInfo.defaultValue = defaultValue; propertyInfo.lengthPrecision = lengthPrecision; - propertyInfo.isVisibe = nIsVisible; + propertyInfo.isVisible = nIsVisible; groupInfo.info.insert(propertyName,propertyInfo); } @@ -139,25 +139,25 @@ void DataManager::initialModelData(bool refresh) QMap::Iterator iter; for(iter = model.begin();iter != model.end(); ++iter) //遍历模型 { - modelDataInfo modelInfo; + ModelDataInfo modelInfo; modelInfo.modelType = iter.value(); //模型类型 modelInfo.modelName = iter.key(); - QMap mapState = DataBase::GetInstance()->getModelInfo(iter.key()); - QMap mapPublic = DataBase::GetInstance()->getPublicInfo(); //公共属性组 - QMap::Iterator it; + QMap mapState = DataBase::GetInstance()->getModelInfo(iter.key()); + QMap mapPublic = DataBase::GetInstance()->getPublicInfo(); //公共属性组 + QMap::Iterator it; for(it = mapPublic.begin();it != mapPublic.end();++it) //遍历公共属性组 { - groupStateValue groupValue; + GroupStateValue groupValue; groupValue.groupName = it.key(); groupValue.tableName = it->tableName; QJsonArray nodesJsonArray = it->propertyState["checkState"].toArray(); - QMap mapPro; + QMap mapPro; for (QJsonValueRef nodeJson : nodesJsonArray) //每个属性的状态信息 { - propertyStateInfo propertyInfo; + PropertyStateInfo propertyInfo; QJsonObject node = nodeJson.toObject(); QString propertyTag = node["name"].toString(); @@ -176,7 +176,7 @@ void DataManager::initialModelData(bool refresh) propertyInfo.tagName = propertyTag; propertyInfo.name = propertyName; propertyInfo.type = dataType; - propertyInfo.isVisibe = nIsVisible; + propertyInfo.isVisible = nIsVisible; if(nState) { mapPro.insert(propertyTag,propertyInfo); @@ -184,7 +184,7 @@ void DataManager::initialModelData(bool refresh) } if(!mapPro.contains("global_uuid")) //不包含uuid则手动添加 { - propertyStateInfo uuidInfo; + PropertyStateInfo uuidInfo; uuidInfo.tagName = "global_uuid"; //全局id未添加到属性状态中,手动添加 mapPro.insert("global_uuid",uuidInfo); } @@ -196,15 +196,15 @@ void DataManager::initialModelData(bool refresh) for(it = mapState.begin();it != mapState.end();++it) //遍历模型属性组 { - groupStateValue groupValue; + GroupStateValue groupValue; groupValue.groupName = it.key(); groupValue.tableName = it->tableName; QJsonArray nodesJsonArray = it->propertyState["checkState"].toArray(); - QMap mapPro; + QMap mapPro; for (QJsonValueRef nodeJson : nodesJsonArray) //每个属性的状态信息 { - propertyStateInfo propertyInfo; + PropertyStateInfo propertyInfo; QJsonObject node = nodeJson.toObject(); QString propertyTag = node["name"].toString(); @@ -223,13 +223,13 @@ void DataManager::initialModelData(bool refresh) propertyInfo.tagName = propertyTag; propertyInfo.name = propertyName; propertyInfo.type = dataType; - propertyInfo.isVisibe = nIsVisible; + propertyInfo.isVisible = nIsVisible; if(nState) { mapPro.insert(propertyTag,propertyInfo); } } - propertyStateInfo uuidInfo; + PropertyStateInfo uuidInfo; uuidInfo.tagName = "global_uuid"; //全局id未添加到属性状态中,手动添加 mapPro.insert("global_uuid",uuidInfo); @@ -264,7 +264,7 @@ void DataManager::initialModelData(bool refresh) } } -void DataManager::updateModelData(const QString& sModel,QUuid uuid,const QString& sGroup,QMap mapPro) +void DataManager::updateModelData(const QString& sModel,QUuid uuid,const QString& sGroup,QMap mapPro) { if(_modleDataInfo[sModel].groupInfo[sGroup].mapInfo.contains(uuid)) _modleDataInfo[sModel].groupInfo[sGroup].mapInfo[uuid] = mapPro; //暂用设定值直接替换旧属性,待测试 diff --git a/diagramUtils/source/projectManager.cpp b/diagramUtils/source/projectManager.cpp index fbb6a8e..ee6ed34 100644 --- a/diagramUtils/source/projectManager.cpp +++ b/diagramUtils/source/projectManager.cpp @@ -72,10 +72,10 @@ void ProjectManager::loadBaseSetting(const QString& str,QUuid id) emit prepareLoadBaseSetting(str,id); } -QList ProjectManager::getBaseSettingsByProject(const QString& strPro) +QList ProjectManager::getBaseSettingsByProject(const QString& strPro) { - QList lst; - QList lstAll = DataBase::GetInstance()->getAllBaseSetting(); + QList lst; + QList lstAll = DataBase::GetInstance()->getAllBaseSetting(); for(auto &info:lstAll){ if(info.projectName == strPro) lst.append(info); @@ -83,7 +83,7 @@ QList ProjectManager::getBaseSettingsByProject(const QStr return lst; } -editorBaseSettingInfo ProjectManager::getBaseSetting(QUuid uid) +EditorBaseSettingInfo ProjectManager::getBaseSetting(QUuid uid) { return DataBase::GetInstance()->getBaseSettingInfo(uid); } diff --git a/diagramUtils/source/projectModelManager.cpp b/diagramUtils/source/projectModelManager.cpp index fdbb345..d7cfb8c 100644 --- a/diagramUtils/source/projectModelManager.cpp +++ b/diagramUtils/source/projectModelManager.cpp @@ -2,6 +2,7 @@ #include "projectModelManager.h" #include "dataBase.h" #include "logger.h" +#include "common/core_model/types.h" const QSet stringDataTypes = {"VARCHAR", "CHAR", "TEXT", "DATE", "TIME", "TIMESTAMP","JSONB","JSON"}; ProjectModelManager& ProjectModelManager::instance() @@ -79,13 +80,13 @@ void ProjectModelManager::generate(const QString& sMeta,const QString& sPro) bool isPub = it->isPublic; int res = createPropertyTable(sMeta,sPro,it.key(),lstSelected,lstBase,nType,isPub); switch (res){ - case int(AlertInfo::success): + case int(AlertInfo::Success): LOG_INFO("DB", QString("create %1 dynamicTable success").arg(sPro)); break; - case int(AlertInfo::fail): + case int(AlertInfo::Fail): LOG_WARN("DB", QString("create %1 dynamicTable fail").arg(sPro)); break; - case int(AlertInfo::exist): + case int(AlertInfo::Exist): LOG_WARN("DB", QString("%1 dynamicTable exist").arg(sPro)); break; default: @@ -94,7 +95,7 @@ void ProjectModelManager::generate(const QString& sMeta,const QString& sPro) createRes = createRes | res; } } - if(!(createRes & int(AlertInfo::fail))) //结果不含失败就成功 + if(!(createRes & int(AlertInfo::Fail))) //结果不含失败就成功 { //QMessageBox::information(NULL, QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"创建表成功")); emit modelChange(); @@ -155,7 +156,7 @@ MapProperty ProjectModelManager::addNewProject(const QString& sMeta,const QStrin if(pGroup){ pGroup->appendRow(pItem); sta.checkState = true; - struProperty.mCheckState.insert(propertyName,sta); + struProperty.checkState.insert(propertyName,sta); } } else @@ -174,7 +175,7 @@ MapProperty ProjectModelManager::addNewProject(const QString& sMeta,const QStrin if(pGroup){ pGroup->appendRow(pItem); sta.checkState = false; - struProperty.mCheckState.insert(propertyName,sta); + struProperty.checkState.insert(propertyName,sta); } } } @@ -195,7 +196,7 @@ MapProperty ProjectModelManager::addNewProject(const QString& sMeta,const QStrin PropertyState sta; sta.dataType = dataType; sta.checkState = false; - struProperty.mCheckState.insert(name,sta); //初始都是未选择状态 + struProperty.checkState.insert(name,sta); //初始都是未选择状态 } } mt.insert(property,struProperty); @@ -224,7 +225,7 @@ MapProperty ProjectModelManager::addNewProject(const QString& sMeta,const QStrin sta.dataType = dataType; sta.checkState = true; sta.editable = false; - struProperty.mCheckState.insert(name,sta); //初始都已经选择 + struProperty.checkState.insert(name,sta); //初始都已经选择 } pubMap.insert(pro,struProperty); } @@ -396,7 +397,6 @@ QStringList ProjectModelManager::getPublicGroupList() const QStringList ProjectModelManager::getAttributeList(const QString& sM,const QString& sG) const { QMap modelType = DataBase::GetInstance()->ModelType(); - //QMap modelGroupMap = DataBase::GetInstance()->ModelGroup(); QMap groupMap = DataBase::GetInstance()->AttributeGroup(); QMap modelAttMap = DataBase::GetInstance()->ModelAttribute(); QMap attMap = DataBase::GetInstance()->Attribute(); @@ -550,7 +550,7 @@ bool ProjectModelManager::ifProjectEqual(const QString& sMeta,const QString& sPr continue; if(!map.contains(iter.key())) //已存在的模型中不包含该属性组 { - QMap curCheckState = iter.value().mCheckState; + QMap curCheckState = iter.value().checkState; for(auto &val:curCheckState) { if(val.checkState) //该属性组不在模型中且被勾选 @@ -561,7 +561,7 @@ bool ProjectModelManager::ifProjectEqual(const QString& sMeta,const QString& sPr else { QJsonObject dbCheckState = map[iter.key()]; //数据库中该属性组的勾选状态 - QMap curCheckState = iter.value().mCheckState; //当前程序中的勾选状态 + QMap curCheckState = iter.value().checkState; //当前程序中的勾选状态 QJsonArray nodesJsonArray = dbCheckState["checkState"].toArray(); if(nodesJsonArray.size() != curCheckState.size()) //属性个数对不上,模型不同 @@ -590,7 +590,7 @@ QString ProjectModelManager::modifyProjectModel(const QString& sMeta,const QStri QMap::Iterator iter; for(iter = curPro.begin();iter != curPro.end();++iter) //遍历当前模型所有属性组 { - QMap curCheckState = iter.value().mCheckState; //当前程序中的属性勾选状态 + QMap curCheckState = iter.value().checkState; //当前程序中的属性勾选状态 bool isNull = true; //当前属性组是否未空 for(auto &val:curCheckState) { @@ -663,7 +663,7 @@ QString ProjectModelManager::modifyProjectModel(const QString& sMeta,const QStri return sRes; } -bool ProjectModelManager::renameProjectModel(const QString& strCur,QMap datas) +bool ProjectModelManager::renameProjectModel(const QString& strCur,QMap datas) { for(auto &data:datas) { @@ -715,12 +715,12 @@ int ProjectModelManager::createPropertyTable(const QString& sMeta,const QString& if(!DataBase::GetInstance()->createDynamicTable(sName,fields)) { - return int(AlertInfo::fail); + return int(AlertInfo::Fail); } else { DataBase::GetInstance()->insertProjectManager(sName,sProject,sMeta,sGroup,nLinkType,objState); - return int(AlertInfo::success); + return int(AlertInfo::Success); } } else @@ -751,7 +751,7 @@ int ProjectModelManager::createPropertyTable(const QString& sMeta,const QString& } else { - return int(AlertInfo::exist); + return int(AlertInfo::Exist); } } } @@ -836,9 +836,9 @@ QString ProjectModelManager::getItemDataType(const QStandardItem* pItem) return dataTypePart; } -projectModelSetting ProjectModelManager::getModelSetting(const QString& sMeta,const QString& sProject) +ProjectModelSettingStruct ProjectModelManager::getModelSetting(const QString& sMeta,const QString& sProject) { - projectModelSetting setting; + ProjectModelSettingStruct setting; setting.modelName = sProject; QJsonObject obj = DataBase::GetInstance()->getProjectSetting(sMeta,sProject); QJsonArray arr = obj["picture"].toArray(); diff --git a/include/diagramView.h b/include/diagramView.h index db32474..6e22d6a 100644 --- a/include/diagramView.h +++ b/include/diagramView.h @@ -3,7 +3,8 @@ #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/diagram.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramView; } diff --git a/include/electricElementsBox.h b/include/electricElementsBox.h index 3a5ae10..94db2f7 100644 --- a/include/electricElementsBox.h +++ b/include/electricElementsBox.h @@ -2,7 +2,9 @@ #define ELETRICELEMENTSPANELCONTAINER_H #include -#include "global.h" +//#include +#include "common/core_model/types.h" +#include "common/backend/project_model.h" class ToolBox; class ElectricElementsPanel; @@ -23,14 +25,14 @@ public: void getModelInfo(); //获取模型信息 void updateModelList(); //更新工程模对象列表 signals: - void addEletricItem(modelStateInfo&); + void addEletricItem(ModelStateInfo&); public slots: - void onSignal_addEletricItem(modelStateInfo&); + void onSignal_addEletricItem(ModelStateInfo&); void onSignal_modelChanged(); private: ToolBox* m_pToolBox; QMap m_mapPanels; - QMap _modelInfo; //模型结构信息 + QMap _modelInfo; //模型结构信息 }; #endif diff --git a/include/electricElementsPanel.h b/include/electricElementsPanel.h index f69c070..0f8ce5c 100644 --- a/include/electricElementsPanel.h +++ b/include/electricElementsPanel.h @@ -2,7 +2,8 @@ #define ELETRICELEMENTSPANEL_H #include -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" class ElectricElementsListwidget; class QListWidgetItem; @@ -16,16 +17,16 @@ public: ~ElectricElementsPanel(); signals: - void addGraphicsItem(modelStateInfo&); + void addGraphicsItem(ModelStateInfo&); public: - void setData(QMap); + void setData(QMap); private: void initial(); public slots: void onItemClicked(QListWidgetItem*); private: ElectricElementsListwidget* m_pListWidget; - QMap m_mapEleData; + QMap m_mapEleData; }; #endif diff --git a/include/graphicElementsPanel.h b/include/graphicElementsPanel.h index 4b9e7a4..f90bea4 100644 --- a/include/graphicElementsPanel.h +++ b/include/graphicElementsPanel.h @@ -2,7 +2,8 @@ #define GRAPHICELEMENTSPANEL_H #include -#include "global.h" +//#include "global.h" +#include "common/core_model/types.h" QT_BEGIN_NAMESPACE namespace Ui { class graphicElementsPanel; } diff --git a/include/monitorItemsDlg.h b/include/monitorItemsDlg.h index dc0322f..ffee732 100644 --- a/include/monitorItemsDlg.h +++ b/include/monitorItemsDlg.h @@ -3,7 +3,9 @@ #include #include -#include "global.h" +#include +//#include "global.h" +#include "common/core_model/topology.h" QT_BEGIN_NAMESPACE namespace Ui { class monitorItemsDlg; } @@ -19,12 +21,12 @@ public: void initial(); signals: - void generateMonitor(QString,QList); //生成监控 + void generateMonitor(QString,QList); //生成监控 public slots: - void onUpdateItems(QList,bool refresh); //更新当前设备列表 - void onSelectItems(QList); //更新当前选中的设备 + void onUpdateItems(QList,bool refresh); //更新当前设备列表 + void onSelectItems(QList); //更新当前选中的设备 void onGenerateClicked(); - void onMonitorCreated(QList); //创建后的设备列表 + void onMonitorCreated(QList); //创建后的设备列表 void onItemChanged(QStandardItem *item); //item勾选事件 private: void resetSelect(); //重置选中 diff --git a/include/monitorPagesDlg.h b/include/monitorPagesDlg.h index a33d881..64c90c6 100644 --- a/include/monitorPagesDlg.h +++ b/include/monitorPagesDlg.h @@ -2,7 +2,9 @@ #define MONITORPAGESDLG_H #include -#include "global.h" +#include +//#include "global.h" +#include "common/core_model/diagram.h" QT_BEGIN_NAMESPACE namespace Ui { class monitorPagesDlg; } diff --git a/include/projectModelDlg.h b/include/projectModelDlg.h index 8ea83b0..e1ed94e 100644 --- a/include/projectModelDlg.h +++ b/include/projectModelDlg.h @@ -6,7 +6,9 @@ #include #include #include "tools.h" -#include "global.h" +//#include "global.h" +#include "common/backend/project_model.h" +#include "common/core_model/types.h" QT_BEGIN_NAMESPACE namespace Ui { class projectModelDlg; } @@ -47,7 +49,7 @@ private: void setupUI(); void initialTypeMap(); - projectState couldSave(); + ProjectState couldSave(); void setTableItemState(int row,TableItemState state); //设置状态 int getModelEditState(); //返回工程模编辑状态(选择、编辑、新建) diff --git a/include/selectorDialog.h b/include/selectorDialog.h index cc3a504..007743b 100644 --- a/include/selectorDialog.h +++ b/include/selectorDialog.h @@ -5,7 +5,8 @@ #include #include #include -#include "global.h" +#include "common/core_model/types.h" +#include "common/backend/meta_model.h" // 自定义元件选择对话框 class SelectorDialog : public QDialog { diff --git a/include/topologyView.h b/include/topologyView.h index 55e192a..27e396d 100644 --- a/include/topologyView.h +++ b/include/topologyView.h @@ -3,7 +3,8 @@ #include #include -#include "global.h" +//#include "global.h" +#include "common/core_model/topology.h" QT_BEGIN_NAMESPACE namespace Ui { class topologyView; } @@ -31,7 +32,7 @@ signals: public slots: void onItemChanged(QStandardItem *item); void onItemClicked(const QModelIndex &index); - void onUpdateTopology(QList lst,bool refresh,bool bFull); + void onUpdateTopology(QList lst,bool refresh,bool bFull); void onMonitorUpdate(QList); //更新运行时 private: void clearItems(); @@ -41,11 +42,11 @@ private: QString getNodeInfo(QStandardItem* node); QStandardItem* findBayItem(const QString& voltageLevel, const QString& bayName); QStandardItem* findOrCreateVoltageLevel(const QString& voltageLevel); // 查找或创建电压层级节点 - QStandardItem* createBayItem(const QString& cacheKey, const RelationSturctItem& bayInfo); - void createDeviceItem(QStandardItem* pParent, const RelationSturctItem& deviceInfo); // 创建设备节点 + QStandardItem* createBayItem(const QString& cacheKey, const HierarchyStructItem& bayInfo); + void createDeviceItem(QStandardItem* pParent, const HierarchyStructItem& deviceInfo); // 创建设备节点 - void onUpdateTopologyFull(QList lst, bool refresh); - void onUpdateTopologySimple(QList lst, bool refresh); + void onUpdateTopologyFull(QList lst, bool refresh); + void onUpdateTopologySimple(QList lst, bool refresh); QStandardItem* findOrCreateTopLevelItem(const QString& name, int level, QHash& cache); //// 查找或创建顶级节点(电网) QStandardItem* findOrCreateChildItem(QStandardItem* pParent, const QString& name, const QString& cacheKey, int level,QHash& cache);// 查找或创建子节点 diff --git a/source/diagramView.cpp b/source/diagramView.cpp index a19a183..b1d9833 100644 --- a/source/diagramView.cpp +++ b/source/diagramView.cpp @@ -44,7 +44,7 @@ void DiagramView::initial() _pModel->setColumnCount(1); //QList pageList; - QList lst = DataBase::GetInstance()->getAllPage(); + QList lst = DataBase::GetInstance()->getAllPage(); for(auto info:lst) { QStandardItem* pItem = new QStandardItem(info.name); diff --git a/source/electricElementsBox.cpp b/source/electricElementsBox.cpp index fb3d4ff..18f664a 100644 --- a/source/electricElementsBox.cpp +++ b/source/electricElementsBox.cpp @@ -72,7 +72,7 @@ void ElectricElementsBox::updateModelList() } } -void ElectricElementsBox::onSignal_addEletricItem(modelStateInfo& info) +void ElectricElementsBox::onSignal_addEletricItem(ModelStateInfo& info) { emit addEletricItem(info); } diff --git a/source/electricElementsPanel.cpp b/source/electricElementsPanel.cpp index 590665d..96391c5 100644 --- a/source/electricElementsPanel.cpp +++ b/source/electricElementsPanel.cpp @@ -37,7 +37,7 @@ void ElectricElementsPanel::initial() } } -void ElectricElementsPanel::setData(QMap map) +void ElectricElementsPanel::setData(QMap map) { if(m_pListWidget->count() != 0) m_pListWidget->clear(); diff --git a/source/main.cpp b/source/main.cpp index 756b60f..f1a0e13 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,12 +1,11 @@ #include #include -#include "global.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); CMainWindow w; w.show(); - qRegisterMetaType("propertyStateInfo"); + return a.exec(); } diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp index 4b2f480..0b7d0ca 100644 --- a/source/mainwindow.cpp +++ b/source/mainwindow.cpp @@ -49,9 +49,9 @@ CMainWindow::CMainWindow(QWidget *parent) m_pPropertiesEditorView = nullptr; _pActMonitor = nullptr; + qRegisterMetaType("PropertyStateInfo"); initializeDockUi(); initializeAction(); - } CMainWindow::~CMainWindow() diff --git a/source/monitorItemsDlg.cpp b/source/monitorItemsDlg.cpp index d6a8a16..3677a0d 100644 --- a/source/monitorItemsDlg.cpp +++ b/source/monitorItemsDlg.cpp @@ -33,7 +33,7 @@ void MonitorItemsDlg::initial() connect(_modelAll, &QStandardItemModel::itemChanged,this, &MonitorItemsDlg::onItemChanged); } -void MonitorItemsDlg::onUpdateItems(QList lst,bool refresh) +void MonitorItemsDlg::onUpdateItems(QList lst,bool refresh) { if(refresh){ QStandardItem *root = _modelAll->invisibleRootItem(); @@ -100,7 +100,7 @@ void MonitorItemsDlg::onUpdateItems(QList lst,bool refresh) ui->treeView_all->expandAll(); } -void MonitorItemsDlg::onSelectItems(QList lst) +void MonitorItemsDlg::onSelectItems(QList lst) { ui->stackedWidget->setCurrentIndex(0); resetSelect(); @@ -122,10 +122,10 @@ void MonitorItemsDlg::onGenerateClicked() ui->le_name->setFocus(); return; } - QList lst; + QList lst; QList lstItem = getTreeViewCheckedItems(ui->treeView_all); for(auto& pItem:lstItem){ - RelationItem info; + HierarchyItem info; auto pParent = pItem->parent(); if(pParent){ info.parent.nCategory = pParent->data(Qt::UserRole+1).toInt(); @@ -140,7 +140,7 @@ void MonitorItemsDlg::onGenerateClicked() auto lstChild = getAllChildren(pItem); for(auto &child:lstChild){ - RelationSturctItem stru; + HierarchyStructItem stru; stru.nCategory = child->data(Qt::UserRole+1).toInt(); stru.nEquipType = child->data(Qt::UserRole+2).toInt(); stru.uid = child->data(Qt::UserRole+3).toUuid(); @@ -153,7 +153,7 @@ void MonitorItemsDlg::onGenerateClicked() emit generateMonitor(sName,lst); } -void MonitorItemsDlg::onMonitorCreated(QList lst) +void MonitorItemsDlg::onMonitorCreated(QList lst) { /*ui->stackedWidget->setCurrentIndex(1); ui->listWidget_select->clear(); diff --git a/source/projectModelDlg.cpp b/source/projectModelDlg.cpp index ee38b01..0176bb6 100644 --- a/source/projectModelDlg.cpp +++ b/source/projectModelDlg.cpp @@ -5,7 +5,7 @@ #include "ui_projectModelDlg.h" #include "projectModelDlg.h" #include "dataBase.h" -#include "global.h" +//#include "global.h" #include "projectTableDelegate.h" #include "projectModelManager.h" @@ -64,7 +64,7 @@ void projectModelDlg::initialList() QTableWidgetItem* projectItem = new QTableWidgetItem(it.key()); //projectItem->setFlags(projectItem->flags() | Qt::ItemIsEditable); ui->tableWidget_model->setItem(row, 0, projectItem); - projectItem->setData(Qt::UserRole,TS_select); + projectItem->setData(Qt::UserRole,TS_Select); // 元模型列(初始化值) QTableWidgetItem* metaItem = new QTableWidgetItem(iter.key()); @@ -101,7 +101,7 @@ void projectModelDlg::onSaveClicked() QMessageBox::information(NULL, QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"请选择工程模类型")); return; } - projectState state = couldSave(); + ProjectState state = couldSave(); if(state == NotExist) //目前名称工程模不存在 { PropertyModel proModel = ProjectModelManager::instance().getData()[_curMeta][_curProject]; @@ -125,7 +125,7 @@ void projectModelDlg::onSaveClicked() if(val) { ProjectModelManager::instance().generate(_curMeta,_curProject); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); } break; } @@ -142,7 +142,7 @@ void projectModelDlg::onSaveClicked() if(val) { ProjectModelManager::instance().generate(_curMeta,_curProject); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); } } } @@ -167,7 +167,7 @@ void projectModelDlg::onSaveClicked() { ProjectModelManager::instance().renameProjectModel(_curProject,proModel.dataInfo); ProjectModelManager::instance().updateComponentModelName(proModel.formerProject.sName,_curProject); //修改component中的模型名 - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); } else //不同,先改工程模名称,后修改数据 { @@ -177,7 +177,7 @@ void projectModelDlg::onSaveClicked() if(!sRes.isEmpty()) { QMessageBox::information(NULL, QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"修改模型成功")); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); emit ProjectModelManager::instance().modelChange(); } else @@ -200,7 +200,7 @@ void projectModelDlg::onSaveClicked() if(val) //旧工程模和新工程模数据相同,改名 { ProjectModelManager::instance().renameProjectModel(_curProject,proModel.dataInfo); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); } else //不同,先改工程模名称,后修改数据 { @@ -209,7 +209,7 @@ void projectModelDlg::onSaveClicked() if(!sRes.isEmpty()) { QMessageBox::information(NULL, QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"修改模型成功")); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); emit ProjectModelManager::instance().modelChange(); } else @@ -223,7 +223,7 @@ void projectModelDlg::onSaveClicked() else //新建 { ProjectModelManager::instance().generate(_curMeta,_curProject); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); } } else if(state == Exist) @@ -247,7 +247,7 @@ void projectModelDlg::onSaveClicked() if(val) { ProjectModelManager::instance().generate(_curMeta,_curProject); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); } } else //元模未变直接修改 @@ -257,7 +257,7 @@ void projectModelDlg::onSaveClicked() if(!sRes.isEmpty()) { QMessageBox::information(NULL, QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"修改模型成功")); - setTableItemState(_curRow,TS_select); + setTableItemState(_curRow,TS_Select); } else { @@ -319,7 +319,7 @@ void projectModelDlg::onApplyClicked() //it->pBase->removeRow(selected.row()); - ProjectModelManager::instance().getData()[_curMeta][_curProject].mapProperty[strGroup].mCheckState[pItem->text()].checkState = true; //选择状态设为1 + ProjectModelManager::instance().getData()[_curMeta][_curProject].mapProperty[strGroup].checkState[pItem->text()].checkState = true; //选择状态设为1 } } } @@ -376,7 +376,7 @@ void projectModelDlg::onRevokeClicked() //it->pSelect->removeRow(selected.row()); - ProjectModelManager::instance().getData()[_curMeta][_curProject].mapProperty[strGroup].mCheckState[pItem->text()].checkState = false; //选择状态设为1 + ProjectModelManager::instance().getData()[_curMeta][_curProject].mapProperty[strGroup].checkState[pItem->text()].checkState = false; //选择状态设为1 } } } @@ -450,7 +450,7 @@ void projectModelDlg::onDeleteProjectClicked() case QMessageBox::Yes: { int role = index.data(Qt::UserRole).toInt(); - if(role != TS_create) //create状态的数据未创建数据库 + if(role != TS_Create) //create状态的数据未创建数据库 { bool val = DataBase::GetInstance()->deleteProjectModel(_curProject); } @@ -475,7 +475,7 @@ void projectModelDlg::onDeleteProjectClicked() void projectModelDlg::addPropertyGroup() { int state = getModelEditState(); - if(state & TS_create) + if(state & TS_Create) { QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"请先完成编辑")); return; @@ -487,7 +487,7 @@ void projectModelDlg::addPropertyGroup() QTableWidgetItem* projectItem = new QTableWidgetItem("未命名"); //projectItem->setFlags(projectItem->flags() | Qt::ItemIsEditable); ui->tableWidget_model->setItem(row, 0, projectItem); - projectItem->setData(Qt::UserRole,TS_create); + projectItem->setData(Qt::UserRole,TS_Create); // 元模型列(初始化值) QTableWidgetItem* metaItem = new QTableWidgetItem("未关联"); @@ -517,7 +517,7 @@ void projectModelDlg::onTableItemClicked(QTableWidgetItem *item) if(firstColumnItem) { TableItemState state = TableItemState(firstColumnItem->data(Qt::UserRole).toInt()); - if(state == TS_create) + if(state == TS_Create) { int col = item->column(); if(col == TD_ProjectModel) //工程模输入框,不做特殊处理 @@ -558,7 +558,7 @@ void projectModelDlg::onTableItemClicked(QTableWidgetItem *item) } } } - else if(state == TS_select) + else if(state == TS_Select) { /*if(_curProject == strProj) //点击当前的返回 { @@ -587,7 +587,7 @@ void projectModelDlg::onTableItemClicked(QTableWidgetItem *item) } } } - else if(state == TS_edit) + else if(state == TS_Edit) { /*if(_curProject == strProj) //点击当前的返回 { @@ -626,7 +626,7 @@ void projectModelDlg::onDelegateFinishEdit(const QModelIndex &index, const QStri if(firstColumnItem) { TableItemState state = TableItemState(firstColumnItem->data(Qt::UserRole).toInt()); - if(state == TS_create) + if(state == TS_Create) { int col = index.column(); if(col == TD_ProjectModel) @@ -716,10 +716,10 @@ void projectModelDlg::onDelegateFinishEdit(const QModelIndex &index, const QStri else if(col == TD_ComponentType) { ProjectModelManager::instance().getData()[_curMeta][_curProject].nType = _mapType.value(value); - firstColumnItem->setData(Qt::UserRole,TS_edit); + firstColumnItem->setData(Qt::UserRole,TS_Edit); } } - else if(state == TS_select || state == TS_edit) + else if(state == TS_Select || state == TS_Edit) { int col = index.column(); if(col == TD_ProjectModel) @@ -734,7 +734,7 @@ void projectModelDlg::onDelegateFinishEdit(const QModelIndex &index, const QStri proModel.formerProject.bChanged = true; ProjectModelManager::instance().getData()[_curMeta].insert(value,proModel); _curProject = value; - firstColumnItem->setData(Qt::UserRole,TS_edit); + firstColumnItem->setData(Qt::UserRole,TS_Edit); } } } @@ -761,14 +761,14 @@ void projectModelDlg::onDelegateFinishEdit(const QModelIndex &index, const QStri ui->treeView_base->expandAll(); ui->treeView_sub->expandAll(); _curMeta = value; - firstColumnItem->setData(Qt::UserRole,TS_edit); + firstColumnItem->setData(Qt::UserRole,TS_Edit); } } } else if(col == TD_ComponentType) { ProjectModelManager::instance().getData()[_curMeta][_curProject].nType = _mapType.value(value); - firstColumnItem->setData(Qt::UserRole,TS_edit); + firstColumnItem->setData(Qt::UserRole,TS_Edit); } } } @@ -788,7 +788,7 @@ QString projectModelDlg::getMetaName() const void projectModelDlg::removeProjectData(const QString& sMeta,const QString& sProject,int role) { - if(role == TS_create && !ProjectModelManager::instance().getData().contains(sMeta)){ //创建且未加入到管理 + if(role == TS_Create && !ProjectModelManager::instance().getData().contains(sMeta)){ //创建且未加入到管理 delete _curModel.pBase; delete _curModel.pSelect; } @@ -823,7 +823,7 @@ void projectModelDlg::initialTypeMap() } -projectState projectModelDlg::couldSave() +ProjectState projectModelDlg::couldSave() { QMap map = DataBase::GetInstance()->getCheckStateFromManager(_curProject); if(map.isEmpty()) diff --git a/source/projectTableDelegate.cpp b/source/projectTableDelegate.cpp index 04e464e..b848b56 100644 --- a/source/projectTableDelegate.cpp +++ b/source/projectTableDelegate.cpp @@ -4,7 +4,7 @@ #include "projectTableDelegate.h" #include "selectorDialog.h" -#include "global.h" +//#include "global.h" ProjectTableDelegate::ProjectTableDelegate(QObject *parent) : QStyledItemDelegate(parent) @@ -136,15 +136,15 @@ void ProjectTableDelegate::paint(QPainter* painter, const QStyleOptionViewItem& QStyledItemDelegate::paint(painter, opt, index);*/ - if(state == TS_create) + if(state == TS_Create) { opt.palette.setColor(QPalette::Text, Qt::red); } - else if(state == TS_select) + else if(state == TS_Select) { opt.palette.setColor(QPalette::Text, Qt::green); } - else if(state == TS_edit) + else if(state == TS_Edit) { opt.palette.setColor(QPalette::Text, Qt::yellow); } diff --git a/source/selectorDialog.cpp b/source/selectorDialog.cpp index b4af7aa..a5e82ab 100644 --- a/source/selectorDialog.cpp +++ b/source/selectorDialog.cpp @@ -1,6 +1,6 @@ #include #include "selectorDialog.h" -#include "global.h" +//#include "global.h" #include "dataBase.h" SelectorDialog::SelectorDialog(QWidget* parent) diff --git a/source/topologyTree.cpp b/source/topologyTree.cpp index ba5700b..a97ffb2 100644 --- a/source/topologyTree.cpp +++ b/source/topologyTree.cpp @@ -3,7 +3,7 @@ #include #include #include "topologyTree.h" -#include "global.h" +//#include "global.h" TopologyTree::TopologyTree(QWidget *parent) : QTreeView(parent) diff --git a/source/topologyView.cpp b/source/topologyView.cpp index 554e242..faf5846 100644 --- a/source/topologyView.cpp +++ b/source/topologyView.cpp @@ -105,7 +105,7 @@ void TopologyView::onItemClicked(const QModelIndex &index) } } -void TopologyView::onUpdateTopology(QList lst, bool refresh, bool bFull) +void TopologyView::onUpdateTopology(QList lst, bool refresh, bool bFull) { if(refresh){ QStandardItem *root = _treeModel->invisibleRootItem(); @@ -150,7 +150,7 @@ void TopologyView::onMonitorUpdate(QList lst) _treeView->expandAll(); } -void TopologyView::onUpdateTopologyFull(QList lst, bool refresh) +void TopologyView::onUpdateTopologyFull(QList lst, bool refresh) { // 第一阶段:处理间隔节点(nCategory == 1) for(auto &info:lst){ @@ -226,7 +226,7 @@ void TopologyView::onUpdateTopologyFull(QList lst, bool refresh) } } -void TopologyView::onUpdateTopologySimple(QList lst, bool refresh) +void TopologyView::onUpdateTopologySimple(QList lst, bool refresh) { // 现有逻辑,只显示 voltage -> bay -> device // 第一阶段:处理间隔节点(nCategory == 1) @@ -608,7 +608,7 @@ QStandardItem* TopologyView::findOrCreateVoltageLevel(const QString& voltageLeve } // 创建间隔节点 -QStandardItem* TopologyView::createBayItem(const QString& cacheKey, const RelationSturctItem& bayInfo) +QStandardItem* TopologyView::createBayItem(const QString& cacheKey, const HierarchyStructItem& bayInfo) { QStandardItem* pBayItem = new QStandardItem(bayInfo.sName); pBayItem->setData(bayInfo.nCategory, Qt::UserRole+1); @@ -647,7 +647,7 @@ QStandardItem* TopologyView::findBayItem(const QString& voltageLevel, const QStr } // 创建设备节点 -void TopologyView::createDeviceItem(QStandardItem* pParent, const RelationSturctItem& deviceInfo) +void TopologyView::createDeviceItem(QStandardItem* pParent, const HierarchyStructItem& deviceInfo) { QStandardItem* pItem = new QStandardItem(deviceInfo.sName); pItem->setData(deviceInfo.nCategory, Qt::UserRole+1);