56 lines
1.9 KiB
C++
56 lines
1.9 KiB
C++
#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
|