80 lines
5.4 KiB
C++
80 lines
5.4 KiB
C++
#pragma once
|
||
/**组态编辑时的数据模型*/
|
||
#include "graphicsDataModel/baseModel.h"
|
||
#include <QPointer>
|
||
|
||
class GraphicsBaseModelItem;
|
||
class DiagramEditorItemProperty;
|
||
class GraphicsBaseItem;
|
||
class EditBaseScene;
|
||
class ElectricBaseModelLineItem;
|
||
class DiagramEditorTransformerBlock;
|
||
class EditPanel;
|
||
class DiagramEditorWizard;
|
||
class DiagramCavas;
|
||
|
||
int const g_nHorizontalBlockSpacing = 100; //间隔横向间距
|
||
|
||
class DiagramEditorModel : public BaseModel
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
DiagramEditorModel();
|
||
~DiagramEditorModel();
|
||
|
||
bool addPreviewItem(QUuid uuid,GraphicsBaseModelItem*,int mode); //mode 0局部1整体
|
||
DiagramEditorItemProperty* addPreviewData(QUuid id,int type,QString name,QString metaName,QString sBlock,int mode = 0); //添加图元基模数据 mode:0局部1整体
|
||
void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建)
|
||
QRectF generateTempBay(); //通过设置生成间隔预览对象
|
||
void generateTempTrans(int nType,DiagramEditorTransformerBlock* block = nullptr); //0高压侧1中压侧2低压侧3整个变压器
|
||
void connectTransToNeutral(DiagramEditorTransformerBlock* block); //连接变压器与中性点设备
|
||
void linkTransItem(GraphicsBaseModelItem*,QStandardItemModel*); //连接中性点与设备点
|
||
GraphicsBaseModelItem* generateComponent(QUuid uid,QString sName,int nCategory,int nType,QPointF pos,int nRotate,int mode); //生成设备 uid,分类(设备、逻辑点),类型,旋转,模式(0局部1整体)
|
||
ElectricBaseModelLineItem* generateLine(QUuid uid,QString sName,int mode); //生成连线 mode 0局部1整体
|
||
void clearCurPreview();
|
||
void setPanel(EditPanel* p) {_pPanel = p;}
|
||
EditPanel* getPanel(){return _pPanel;}
|
||
void setWizard(QPointer<DiagramEditorWizard> p){_pWizard = p;}
|
||
void setCavas(QPointer<DiagramCavas> p){_pCavas = p;}
|
||
QPointer<DiagramCavas> getCavas(){return _pCavas;}
|
||
QMap<QUuid,GraphicsBaseModelItem*> getPreviewItem(){return _previewItem;};
|
||
|
||
void generatePreview(); //生成预览
|
||
void calculateBlockPos(); //重新计算block位置
|
||
void setItemInBlockPos(); //设置block中的item位置
|
||
void refreshConnection(); //刷新连接线
|
||
|
||
void setCurBayRouteModel(QStandardItemModel* p) {_pCurBayRoute = p;}
|
||
QStandardItemModel* getCurBayRouteModel() {return _pCurBayRoute;}
|
||
void setCurBayComponentModel(QStandardItemModel* p) {_pCurBayComponent = p;}
|
||
QStandardItemModel* getCurBayComponentModel() {return _pCurBayComponent;}
|
||
|
||
void setCurTransRouteModels(QMap<int,QStandardItemModel*> map) {_pCurTransLRoutes = map;}
|
||
QMap<int,QStandardItemModel*> getCurTransRouteModels() {return _pCurTransLRoutes;}
|
||
void setCurTransComponentModel(QStandardItemModel* p) {_pCurTransComponent = p;}
|
||
QStandardItemModel* setCurTransComponentModel() {return _pCurTransComponent;}
|
||
void setCurPreviewScene(EditBaseScene* p) {_pCurPreviewScene = p;}
|
||
QStandardItem* getNameItem(const QString&,int nFrom = 0); //获取返回当前设备模型中的name项 nFrom,0间隔1变压器
|
||
|
||
void generateItemByModel(QStandardItemModel* pModel,int nFrom = 0,QPoint delta = QPoint(0,0)); //0间隔1变压器
|
||
QList<DiagramEditorComponentInfo> generateItemByInfo(QMap<QString,DiagramEditorRouteInfo> mapRoute,QMap<QString,DiagramEditorComponentInfo> mapCompo,QPointF delta = QPointF(0,0)); //根据data生成item
|
||
void generateOutConnection(QList<DiagramEditorComponentInfo>,int nTypeTransCon,int nPos = 0); //生成外部连接(手动bind的连接) nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置
|
||
QRectF updateTarget(QMap<QString,DiagramEditorRouteInfo>&,QMap<QString,DiagramEditorComponentInfo>&,int nLayout,int nSource,bool regenerate = true,bool saveToModel = true); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器 regenerate重新生成标志 saveToModel:生成到模型或map
|
||
private:
|
||
void bulidAndLinkComponent(QList<DiagramEditorComponentInfo>,QMap<QString,DiagramEditorComponentInfo>); //生成并连接线路上的设备 lst,mapComponents(从map中获取正确数据)
|
||
//DiagramEditorComponentInfo getCompoDataFromName(const QString&,QMap<QString,DiagramEditorComponentInfo>); //根据名称获取数据
|
||
QList<DiagramEditorComponentInfo> getRouteItemInfoList(QMap<QString,DiagramEditorComponentInfo>,QMap<QString,DiagramEditorRouteInfo>); //返回线路中包含的设备信息列表
|
||
private:
|
||
QMap<QUuid,GraphicsBaseModelItem*> _tempItem; //临时预览对象
|
||
QMap<QUuid,GraphicsBaseModelItem*> _previewItem; //预览对象
|
||
QStandardItemModel* _pCurBayRoute; //当前使用的间隔路线
|
||
QStandardItemModel* _pCurBayComponent; //当前使用的间隔设备库
|
||
QMap<int,QStandardItemModel*> _pCurTransLRoutes; //变压器中性点路线
|
||
QStandardItemModel* _pCurTransComponent; //当前使用的变压器设备库
|
||
EditBaseScene* _pCurPreviewScene; //当前预览scene
|
||
EditPanel* _pPanel; //主界面
|
||
QPointer<DiagramEditorWizard> _pWizard; //向导界面数据
|
||
QPointer<DiagramCavas> _pCavas; //顶层界面容器
|
||
};
|
||
|