DiagramDesigner/diagramCavas/include/graphicsDataModel/fixedPortsModel.h

83 lines
3.3 KiB
C
Raw Normal View History

2025-02-06 16:36:50 +08:00
#pragma once
#include "graphicsDataModel/baseModel.h"
#include "serializable.h"
2025-04-30 16:29:17 +08:00
#include "powerEntity.h"
2025-02-06 16:36:50 +08:00
#include <QSharedPointer>
#include <QJsonObject>
#include <QTimer>
class DrawingPanel;
class GraphicsBaseItem;
class BaseProperty;
class DesignerScene;
class HttpInterface;
struct Connection;
2025-04-30 16:29:17 +08:00
class PowerEntity;
class ElectricConnectLineItem;
2025-02-06 16:36:50 +08:00
class FixedPortsModel : public BaseModel, public Serializable
{
Q_OBJECT
public:
2025-04-30 16:29:17 +08:00
FixedPortsModel(PowerEntity*);
2025-02-06 16:36:50 +08:00
~FixedPortsModel();
public:
QMap<QUuid,QPointF> allNodePos() const;
QVector<Connection> allConnections();
QMap<QUuid,GraphicsBaseItem*>& allItems();
bool addNodeItem(QUuid uuid,GraphicsBaseItem*);
void addNodeItem(QUuid id,/*int type,*/QPointF pos);
QVariant nodeData(QUuid nodeId, NodeRole role) const;
2025-03-28 18:08:21 +08:00
BaseProperty* addNodeData(QUuid id,int type,QString name,QString modelName); //对应component数据一个data可对应多个item
2025-02-06 16:36:50 +08:00
void loadNodeDataFromDataBase(); //从数据库加载数据
2025-05-16 19:20:46 +08:00
void addConnectLline(QUuid srcId,QUuid destId,QUuid srcPort,QUuid destPort);
2025-02-06 16:36:50 +08:00
void deleteNodeItem(GraphicsBaseItem*);
2025-05-16 19:20:46 +08:00
//QJsonObject saveNode(QUuid const) const;
2025-02-06 16:36:50 +08:00
void saveNode(int nPageId);
void setScene(DesignerScene* p){_scene = p;}
void setTopWidget(DrawingPanel* p) {_widget = p;}
QWidget* getTopWidget();
2025-04-30 16:29:17 +08:00
QPointF getTerminalPos(const QString& sTerminalId); //获取拓扑接线点在当前diagram中的位置
ElectricConnectLineItem* getLineItemById(const QString& terminalId);
2025-04-09 16:20:34 +08:00
void showModelDlg(const QString&,QUuid,GraphicsBaseItem*); //点击时显示指定模型的dlg、指定item的数据(模型名对象Uuid,触发事件的item)
void initialPropertyDlg(); //初始化属性设置dlg每个模型拥各自的dlg
void generatePropertyDlg(const QString&);
2025-04-30 16:29:17 +08:00
ConfigurationDiagram* getTopologyDiagram(); //返回当前组态图的拓扑实体
2025-05-16 19:20:46 +08:00
void createTopoTerminalsByItem(GraphicsBaseItem*); //通过图形对象创建port接线点(新建)
void createTopoTerminalsByData(PowerEntity* pParent,QJsonObject componentCon); //通过componet数据创建port接线点(加载)
2025-05-09 19:36:32 +08:00
bool isItemValid(GraphicsBaseItem*); //判断item是否可以连接
2025-02-06 16:36:50 +08:00
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<qint64,double> map);
private:
QMap<QUuid,GraphicsBaseItem*> _nodeItem;
QString _pageName;
DesignerScene* _scene;
DrawingPanel* _widget; //顶层widget
HttpInterface* _Interface;
QTimer* _timer;
2025-04-30 16:29:17 +08:00
PowerEntity* _pEntity; //拓扑实体
QMap<QString,modelStateInfo> _modelStateInfo; //模型结构信息
2025-04-09 16:20:34 +08:00
QMap<QString,modelDataInfo> _modelDataInfo; //模型数据信息
2025-02-06 16:36:50 +08:00
public:
static bool _dataInitialised;
};