DiagramDesigner/include/topologyView.h

56 lines
1.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef TOPOLOGYVIEW_H
#define TOPOLOGYVIEW_H
#include <QDialog>
#include <QStandardItemModel>
#include "global.h"
QT_BEGIN_NAMESPACE
namespace Ui { class topologyView; }
QT_END_NAMESPACE
class TopologyTree;
class ExtraPropertyManager;
class StructDataSource;
class TopologyView : public QDialog
{
Q_OBJECT
public:
TopologyView(QWidget *parent = nullptr);
~TopologyView();
void initial();
void loadTopologyFromDB(); //加载拓扑关系
signals:
void entityCreate(EntityInfo);
void entityChange(EntityInfo);
void entityDelete(EntityInfo);
void entitySelected(EntityInfo);
public slots:
void onItemChanged(QStandardItem *item);
void onItemClicked(const QModelIndex &index);
void onUpdateTopology(QList<RelationItem> lst,bool refresh);
private:
void clearItems();
QString getLevelType(int index);
void buildTreeStructure(QStandardItemModel* model, const QVector<ExtraProperty>& properties);
QVector<ExtraProperty> getPropertiesForNode(QStandardItem* node);
QString getNodeInfo(QStandardItem* node);
QStandardItem* findBayItem(const QString& voltageLevel, const QString& bayName);
QStandardItem* findOrCreateVoltageLevel(const QString& voltageLevel); // 查找或创建电压层级节点
QStandardItem* createBayItem(const QString& voltageLevel, const RelationSturctItem& bayInfo);
void createDeviceItem(QStandardItem* pParent, const RelationSturctItem& deviceInfo); // 创建设备节点
private:
Ui::topologyView *ui;
QStandardItemModel* _treeModel;
ExtraPropertyManager* _pExtraProManager;
StructDataSource* m_dataSource;
TopologyTree* _treeView;
QHash<QString, QStandardItem*> m_mapVoltageLevels; // 存储电压层级名称到树节点的映射
QHash<QString, QStandardItem*> m_mapBayItems; // 存储间隔节点key格式为"电压层级|间隔名称"
};
#endif