2025-04-30 16:29:17 +08:00
|
|
|
|
#ifndef TOPOLOGYVIEW_H
|
|
|
|
|
|
#define TOPOLOGYVIEW_H
|
|
|
|
|
|
|
|
|
|
|
|
#include <QDialog>
|
|
|
|
|
|
#include <QStandardItemModel>
|
|
|
|
|
|
#include "global.h"
|
|
|
|
|
|
|
|
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
namespace Ui { class topologyView; }
|
|
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
|
|
|
2025-05-09 19:36:32 +08:00
|
|
|
|
class TopologyTree;
|
2026-03-02 20:15:22 +08:00
|
|
|
|
class ExtraPropertyManager;
|
|
|
|
|
|
class StructDataSource;
|
2025-04-30 16:29:17 +08:00
|
|
|
|
|
|
|
|
|
|
class TopologyView : public QDialog
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
TopologyView(QWidget *parent = nullptr);
|
|
|
|
|
|
~TopologyView();
|
|
|
|
|
|
|
|
|
|
|
|
void initial();
|
2025-05-09 19:36:32 +08:00
|
|
|
|
void loadTopologyFromDB(); //加载拓扑关系
|
2025-04-30 16:29:17 +08:00
|
|
|
|
signals:
|
|
|
|
|
|
void entityCreate(EntityInfo);
|
|
|
|
|
|
void entityChange(EntityInfo);
|
|
|
|
|
|
void entityDelete(EntityInfo);
|
|
|
|
|
|
void entitySelected(EntityInfo);
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
void onItemChanged(QStandardItem *item);
|
|
|
|
|
|
void onItemClicked(const QModelIndex &index);
|
2026-03-02 20:15:22 +08:00
|
|
|
|
void onUpdateTopology(QList<RelationItem> lst,bool refresh);
|
2025-05-23 10:30:52 +08:00
|
|
|
|
private:
|
2026-03-02 20:15:22 +08:00
|
|
|
|
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); // 创建设备节点
|
2025-04-30 16:29:17 +08:00
|
|
|
|
private:
|
|
|
|
|
|
Ui::topologyView *ui;
|
2026-03-02 20:15:22 +08:00
|
|
|
|
QStandardItemModel* _treeModel;
|
|
|
|
|
|
ExtraPropertyManager* _pExtraProManager;
|
|
|
|
|
|
StructDataSource* m_dataSource;
|
2025-05-09 19:36:32 +08:00
|
|
|
|
TopologyTree* _treeView;
|
2026-03-02 20:15:22 +08:00
|
|
|
|
QHash<QString, QStandardItem*> m_mapVoltageLevels; // 存储电压层级名称到树节点的映射
|
|
|
|
|
|
QHash<QString, QStandardItem*> m_mapBayItems; // 存储间隔节点,key格式为"电压层级|间隔名称"
|
2025-04-30 16:29:17 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|