DiagramDesigner/diagramCavas/include/structDataSource.h

85 lines
2.3 KiB
C++

#ifndef STRUCTDATASOURCE_H
#define STRUCTDATASOURCE_H
/**
* *******结构化数据源接口******
**/
#include <QVariant>
struct ExtraProperty;
struct propertyStateInfo;
struct MeasurementInfo;
struct modelDataInfo;
class StructDataSource : public QObject
{
Q_OBJECT
public:
StructDataSource(QObject* parent = nullptr);
// 根据code获取属性
ExtraProperty* getPropertyByCode(const QString& code);
// 根据tag获取属性
ExtraProperty* getPropertyByTag(const QString& tag);
// 根据group获取属性列表
QVector<ExtraProperty> getPropertiesByGroup(const QString& groupTag, const QString& modelName = "");
// 根据sourceType获取属性列表
QVector<ExtraProperty> getPropertiesBySourceType(const QString& sourceType);
// 添加或更新属性
bool addOrUpdateProperty(const ExtraProperty& prop);
// 更新单个属性
bool updateProperty(const ExtraProperty& updatedProp);
// 更新connect_para
bool updateConnectPara(const QString& code, const QString& newConnectPara);
// 批量更新
void updateProperties(const QVector<ExtraProperty>& updatedProps);
// 删除属性
bool removeProperty(const QString& code);
// 批量删除
int removeProperties(const QVector<QString>& codes);
// 保存到文件
void saveAll();
// 加载数据
void loadExtrapro(QMap<QString, ExtraProperty> vec);
void loadPropertyData(QMap<QString, modelDataInfo> map);
void loadMeasurementData(QMap<QString, MeasurementInfo> map);
// 获取所有属性的code列表
QStringList getAllCodes() const;
// 获取所有属性
QVector<ExtraProperty> getAllProperties() const;
// 获取property数据
propertyStateInfo* getPropertyData(const ExtraProperty& prop);
// 获取measurement数据
MeasurementInfo* getMeasurementData(const ExtraProperty& prop);
// 验证数据
bool validateProperty(const ExtraProperty& prop);
signals:
void propertyUpdated(const ExtraProperty& prop, bool isNew);
void propertyRemoved(const ExtraProperty& prop);
void dataChanged();
public:
QMap<QString, ExtraProperty> allProperties;
private:
QMap<QString, modelDataInfo> m_propertyData; //参量
QMap<QString, MeasurementInfo> m_measurementData; //量测
};
#endif