#ifndef PCBMATERIALMODEL_H #define PCBMATERIALMODEL_H #include #include #include #include #include #include "../controller/databasecontroller.h" // Структура для хранения данных о материалах платы struct PCBMaterialData { int id; QString name; QString value; double height; int dielType; int layerNumber; PCBMaterialData() : id(-1), height(0.0), dielType(0), layerNumber(0) {} PCBMaterialData(int _id, const QString &_name, const QString &_value, double _height, int _dielType, int _layerNumber) : id(_id), name(_name), value(_value), height(_height), dielType(_dielType), layerNumber(_layerNumber) {} }; class PCBMaterialModel : public QAbstractTableModel { Q_OBJECT public: explicit PCBMaterialModel(QObject *parent = nullptr); // Методы QAbstractTableModel 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; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; // Методы для работы с данными void setDatabase(DataBaseController *database); void loadMaterials(); void clearMaterials(); // Геттеры int getLayerCount() const { return m_layerCount; } int getMaterialCount() const { return m_materials.size(); } const QList& getMaterials() const { return m_materials; } // Методы для получения данных по индексу PCBMaterialData getMaterial(int row) const; QString getMaterialName(int row) const; QString getMaterialValue(int row) const; double getMaterialHeight(int row) const; int getMaterialDielType(int row) const; int getMaterialLayerNumber(int row) const; // Методы для форматирования данных QString formatHeight(double height) const; QString formatDielType(int dielType) const; private: QList m_materials; DataBaseController *m_database; int m_layerCount; // Константы для колонок enum Columns { ColumnLayerNumber = 0, ColumnName, ColumnValue, ColumnHeight, ColumnDielType, ColumnCount }; }; #endif // PCBMATERIALMODEL_H