#pragma once #include "graphicsDataModel/baseModel.h" #include "serializable.h" #include "powerEntity.h" #include #include #include class DrawingPanel; class GraphicsBaseItem; class BaseProperty; class DesignerScene; class HttpInterface; struct Connection; class PowerEntity; class ElectricConnectLineItem; class FixedPortsModel : public BaseModel, public Serializable { Q_OBJECT public: FixedPortsModel(PowerEntity*); ~FixedPortsModel(); public: QMap allNodePos() const; QVector allConnections(); QMap& allItems(); bool addNodeItem(QUuid uuid,GraphicsBaseItem*); void addNodeItem(QUuid id,/*int type,*/QPointF pos); QVariant nodeData(QUuid nodeId, NodeRole role) const; BaseProperty* addNodeData(QUuid id,int type,QString name,QString modelName); //对应component数据,一个data可对应多个item void loadNodeDataFromDataBase(); //从数据库加载数据 void addConnectLline(QUuid srcId,QUuid destId,int srcPort,int destPort); void deleteNodeItem(GraphicsBaseItem*); QJsonObject saveNode(QUuid const) const; void saveNode(int nPageId); void setScene(DesignerScene* p){_scene = p;} void setTopWidget(DrawingPanel* p) {_widget = p;} QWidget* getTopWidget(); QPointF getTerminalPos(const QString& sTerminalId); //获取拓扑接线点在当前diagram中的位置 ElectricConnectLineItem* getLineItemById(const QString& terminalId); void showModelDlg(const QString&,QUuid,GraphicsBaseItem*); //点击时显示指定模型的dlg、指定item的数据(模型名,对象Uuid,触发事件的item) void initialPropertyDlg(); //初始化属性设置dlg,每个模型拥各自的dlg void generatePropertyDlg(const QString&); ConfigurationDiagram* getTopologyDiagram(); //返回当前组态图的拓扑实体 void createTopoTerminals(GraphicsBaseItem*); bool isItemValid(GraphicsBaseItem*); //判断item是否可以连接 Q_SIGNALS: void activatePage(const QString&); //激活当前model所在page public: void setPageName(QString s) {_pageName = s;} //设置表名称 QString pageName() const {return _pageName;} void activateModel() {Q_EMIT activatePage(_pageName);} //发送激活信号(点击) void startHttpRequest(); //开始请求数据(运行时) public Q_SLOTS: void onSignal_ifExits(QUuid id,const QString&,int type,GraphicsBaseItem*); //判断用户输入的名称是否已存在 void onTimeOut(); void onSignal_GetPointData(QString type,QMap map); private: QMap _nodeItem; QString _pageName; DesignerScene* _scene; DrawingPanel* _widget; //顶层widget HttpInterface* _Interface; QTimer* _timer; PowerEntity* _pEntity; //拓扑实体 QMap _modelStateInfo; //模型结构信息 QMap _modelDataInfo; //模型数据信息 public: static bool _dataInitialised; };