72 lines
3.0 KiB
C++
72 lines
3.0 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,bool bFull);
|
|
void onMonitorUpdate(QList<QUuid>); //更新运行时
|
|
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& cacheKey, const RelationSturctItem& bayInfo);
|
|
void createDeviceItem(QStandardItem* pParent, const RelationSturctItem& deviceInfo); // 创建设备节点
|
|
|
|
void onUpdateTopologyFull(QList<RelationItem> lst, bool refresh);
|
|
void onUpdateTopologySimple(QList<RelationItem> lst, bool refresh);
|
|
|
|
QStandardItem* findOrCreateTopLevelItem(const QString& name, int level, QHash<QString, QStandardItem*>& cache); //// 查找或创建顶级节点(电网)
|
|
QStandardItem* findOrCreateChildItem(QStandardItem* pParent, const QString& name, const QString& cacheKey, int level,QHash<QString, QStandardItem*>& cache);// 查找或创建子节点
|
|
QStandardItem* findBayItemInFullTree(const QString& grid, const QString& zone, const QString& station, const QString& voltageLevel, const QString& bayName);// 在完整树中查找间隔节点
|
|
private:
|
|
Ui::topologyView *ui;
|
|
QStandardItemModel* _treeModel;
|
|
ExtraPropertyManager* _pExtraProManager;
|
|
StructDataSource* m_dataSource;
|
|
TopologyTree* _treeView;
|
|
// 完整层级结构缓存
|
|
QHash<QString, QStandardItem*> m_mapGrids; // 电网节点
|
|
QHash<QString, QStandardItem*> m_mapZones; // 区域节点
|
|
QHash<QString, QStandardItem*> m_mapStations; // 变电站节点
|
|
QHash<QString, QStandardItem*> m_mapVoltageLevels; // 电压层级节点
|
|
QHash<QString, QStandardItem*> m_mapBayItems; // 间隔节点
|
|
|
|
// 原简化层级缓存
|
|
QHash<QString, QStandardItem*> m_simpleVoltageLevels; // 只用于简化模式
|
|
QHash<QString, QStandardItem*> m_simpleBayItems; // 只用于简化模式
|
|
};
|
|
|
|
#endif
|