119 lines
4.7 KiB
C++
119 lines
4.7 KiB
C++
// diagramcanvas_p.h - 私有头文件,不对外公开
|
|
#ifndef DIAGRAMCANVAS_P_H
|
|
#define DIAGRAMCANVAS_P_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 "common/frontend/monitor_item.h"
|
|
#include "monitorpanel.h"
|
|
#include <QMdiSubWindow>
|
|
|
|
class CornerMonitorLauncher;
|
|
class LoadMonitorPageDlg;
|
|
class DiagramConnectSetting;
|
|
class DataAccessor;
|
|
struct HttpRecommandInfo;
|
|
class StructDataPreviewDlg;
|
|
class ExtraPropertyManager;
|
|
class DataSourceDlg;
|
|
class CreateHMIdlg;
|
|
class PluginManager;
|
|
class PluginItemFactory;
|
|
class QDetailsView;
|
|
class PropertyDlg;
|
|
|
|
class DiagramCavasPrivate
|
|
{
|
|
public:
|
|
DiagramCavasPrivate(DiagramCavas* q);
|
|
~DiagramCavasPrivate();
|
|
|
|
// 原始私有成员
|
|
QMap<QString, QPair<MonitorPanel*, QMdiSubWindow*>> m_mapMonitorPanel;
|
|
int _pageIndex = 0;
|
|
QString _curPage;
|
|
CornerMonitorLauncher* _cornerButton = nullptr;
|
|
LoadMonitorPageDlg* _loadMonitorPageDlg = nullptr;
|
|
DiagramConnectSetting* _connectSetting = nullptr;
|
|
DataAccessor* _dataAccessor = nullptr;
|
|
StructDataPreviewDlg* _structDataPreviewDlg = nullptr;
|
|
ExtraPropertyManager* _extraPropertyManager = nullptr;
|
|
CreateHMIdlg* _createHMIDlg = nullptr;
|
|
QDetailsView* _pPropertyPage = nullptr;
|
|
PropertyDlg* _pPropertyDlg = nullptr;
|
|
PluginManager* m_pluginManager = nullptr;
|
|
PluginItemFactory* m_itemFactory = nullptr;
|
|
QMap<QString, PluginTypeInfo> m_pluginInfo;
|
|
int _curMode = 0;
|
|
|
|
// 私有方法
|
|
void initialImpl();
|
|
void removePanel(PowerEntity* p);
|
|
void calculateLauncherVisible();
|
|
bool loadPluginConfig(const QString& path);
|
|
bool parsePluginConfig(const QJsonObject& root);
|
|
void addShortcuts();
|
|
void updateCornerPos(); //更新右上角Button位置
|
|
void showNewSettingDlg(); //显示网络设置对话框
|
|
void showStructDataPreviewDlg(); //显示结构化数据预览
|
|
void processRecommandData(const HttpRecommandInfo&); //处理推荐数据
|
|
void onTargetSelected(QObject*); //对象选中事件(属性)
|
|
void onCreateHMI(); //创建HMI
|
|
void updateHMIFromDB(); //从数据库中更新HMI信息
|
|
|
|
//显示属性相关
|
|
void showPropertyDlgImpl(); // 显示属性页
|
|
void hidePropertyDlgImpl(); // 隐藏属性页
|
|
void initPropertyPage(); // 初始化属性页面
|
|
void centerPropertyDialogOnScreen(); // 居中属性对话框
|
|
|
|
//添加pannel相关
|
|
void addDrawingPanelImpl(PowerEntity* pItem, DiagramMode mode, const QString& parent);
|
|
void addMonitorPanel(PowerEntity* pItem, const QString& parent);
|
|
void addEditorPanel(PowerEntity* pItem, const QString& parent);
|
|
void connectMonitorPanelSignals(MonitorPanel* panel, FixedPortsModel* model);
|
|
void updateCurrentPage(const QString& pageName);
|
|
bool hasPanel(const QString& name) const;
|
|
MonitorPanel* getPanel(const QString& name) const;
|
|
QMdiSubWindow* getSubWindow(const QString& name) const;
|
|
|
|
//保存相关
|
|
void savePageImpl();
|
|
bool saveMonitorPanel(MonitorPanel* monitorPanel);
|
|
bool saveHMIImages(QMap<QByteArray, HMIImageInfo>& imageMap);
|
|
bool saveImageReferences(const QList<HMIImageRef>& imageRefs, const QUuid& hmiId);
|
|
bool saveCustomImageReferences(const QList<HMICustomImageRef>& customImageRefs, const QUuid& hmiId);
|
|
bool saveOrUpdateHMI(PowerEntity* entity, QJsonObject diagramInfo);
|
|
MonitorPanel* getCurrentMonitorPanel() const;
|
|
BaseDrawingPanel* getCurrentDrawingPanel() const;
|
|
// 批量保存
|
|
bool saveAllPages();
|
|
bool savePage(const QString& pageName);
|
|
int saveModifiedPages();
|
|
// 修改状态跟踪
|
|
void markPageModified(const QString& pageName, bool modified = true);
|
|
bool isPageModified(const QString& pageName) const;
|
|
QList<QString> getModifiedPages() const;
|
|
|
|
//加载相关
|
|
void loadMonitorImpl(PowerEntity* p);
|
|
bool createAndLoadMonitor(PowerEntity* p, const QJsonObject& context);
|
|
bool loadExistingMonitor(const QString& name);
|
|
QJsonObject loadHMIContext(const QString& hmiName);
|
|
void applyPageGeometry(MonitorPanel* panel, QMdiSubWindow* subWindow,const QJsonObject& pageAttr);
|
|
void activateAndSelectMonitor(const QString& name);
|
|
|
|
// 创建HMI面板相关
|
|
void createHMIClickedImpl(const QString& sHMI, const QString& sStructPage, int modelType);
|
|
bool createHMIDiagram(const QString& sHMI, int modelType, QUuid& outId, PowerEntity*& outEntity);
|
|
bool loadStructureToPanel(const QString& panelName, const QString& sStructPage);
|
|
private:
|
|
DiagramCavas* q_ptr; // 指向公共接口的指针
|
|
QSet<QString> m_modifiedPages; // 记录修改过的页面
|
|
Q_DECLARE_PUBLIC(DiagramCavas)
|
|
};
|
|
|
|
#endif // DIAGRAMCANVAS_P_H
|