85 lines
2.3 KiB
C++
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
|