#ifndef COMPONENTMODEL_H #define COMPONENTMODEL_H #include #include #include class ComponentModel : public QObject { Q_OBJECT Q_PROPERTY(int id READ id WRITE setId NOTIFY idChanged FINAL) Q_PROPERTY(QString designator READ designator WRITE setDesignator NOTIFY designatorChanged FINAL) Q_PROPERTY(QString currentVariant READ currentVariant WRITE setCurrentVariant NOTIFY currentVariantChanged FINAL) Q_PROPERTY(QMap properties READ properties WRITE setProperties NOTIFY propertiesChanged FINAL) public: explicit ComponentModel(QObject *parent = nullptr); int id() const; void setId(int newId); QString designator() const; void setDesignator(const QString &newDesignator); QString currentVariant() const; void setCurrentVariant(const QString &newCurrentVariant); QMap properties() const; void setProperties(const QMap &newProperties); void setBaseProperties(const QMap &newBaseProperties); void setVariantProperties(const QString &variantName, const QMap &variantProps); signals: void idChanged(); void designatorChanged(); void currentVariantChanged(); void propertiesChanged(); private: int m_id; QString m_designator; QString m_currentVariant; QMap m_currentProperties; QMap m_baseProperties; QMap> m_variantProperties; void updateCurrentProperties(); }; #endif // COMPONENTMODEL_H