DiagramDesigner/diagramCavas/include/structDataMeasurementModel.h

82 lines
2.4 KiB
C++

#ifndef STRUCTDATAMEASUREMENTMODEL_H
#define STRUCTDATAMEASUREMENTMODEL_H
/**
* 结构预览ui的量测类型model
* */
#include <QAbstractTableModel>
class StructDataSource;
struct MeasurementInfo;
struct ExtraProperty;
class StructDataMeasurementModel : public QAbstractTableModel
{
Q_OBJECT
public:
enum Columns {
ColName = 0,
ColTag = 1,
ColCode = 2,
ColSourceType = 3,
ColConnectPara = 4,
ColType = 5,
ColSize = 6,
ColSource = 7,
ColStation = 8,
ColEquipment = 9,
ColChannel = 10,
ColPacket = 11,
ColOffset = 12,
ColEnable = 13, //事件
ColCause = 14, //原因
ColCommand = 15, //动作
ColParameters = 16, //参数
ColumnCount
};
StructDataMeasurementModel(StructDataSource* dataManager, QObject* parent = nullptr);
void setPropertyCodes(const QStringList& codes);
void setProperties(const QVector<ExtraProperty>& properties);
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
Qt::ItemFlags flags(const QModelIndex& index) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
QVector<ExtraProperty> getDisplayedProperties() const;
QStringList getDisplayedCodes() const;
int findRowByCode(const QString& code) const;
void refreshRow(const QString& code);
private slots:
void onPropertyUpdated(const ExtraProperty& updatedProp, bool isNew);
signals:
void propertiesLoaded(int count);
void propertyModified(int row, const ExtraProperty& prop);
private:
ExtraProperty* getProperty(int displayRow) const;
QVariant getMeasurementData(const ExtraProperty& prop, int col, int role) const;
bool updateMeasurementData(MeasurementInfo* data, int col, const QVariant& value,int role);
QString getTypeText(int type) const;
QString getSourceText(int source) const;
int getSourceInt(QString) const;
private:
StructDataSource* m_dataManager = nullptr;
QStringList m_propertyCodes;
};
#endif