#ifndef SIMPLELISTTABLECONTROLLER_H #define SIMPLELISTTABLECONTROLLER_H #include #include #include #include "../model/simplelisttablemodel.h" class ComponentModel; class SimpleListTableController : public QObject { Q_OBJECT public: explicit SimpleListTableController(QObject *parent = nullptr); ~SimpleListTableController(); // Получение модели для отображения в UI SimpleListTableModel* getTableModel() const { return m_tableModel; } SimpleListTableModel* getModel() const { return m_tableModel; } // Алиас для совместимости // Методы для работы с компонентами void setComponents(const QList &components); void generateTableFromComponents(); void generateTableFromSpecificationPCB(class SpecificationPCBTableModel *specPCBModel); // Генерация из SpecificationPCB void updateTableFromComponents(); // Метод для обновления таблицы по кнопке // Новые методы для управления строками void addEmptyRow(); void addEmptyRowAt(int position); void insertEmptyRowAt(int position); // Вставка строки в определенную позицию void removeRow(int row); void clearTable(); // Метод для установки модели таблицы (для интеграции) void setModel(SimpleListTableModel *model); // Методы для работы с настройками void setNameField(const QString &fieldName); QString getNameField() const; void setTechReservePercent(int percent); int getTechReservePercent() const; void setBoardsCount(int count); int getBoardsCount() const; QStringList getAvailableProperties() const; private: QString getComponentValue(ComponentModel *component, const QString &propertyName); QString parseExpression(ComponentModel *component, const QString &expression); QStringList collectPropertyNames(); // Метод для разделения десигнатора на буквенную и цифровую части static QPair splitDesignator(const QString &designator); SimpleListTableModel *m_tableModel; QList m_components; QStringList m_propertyNames; QString m_nameField; // Поле для наименования компонента (по умолчанию "Name") int m_techReservePercent; // Процент тех запаса (по умолчанию 10) int m_boardsCount; // Кол-во плат (по умолчанию 1) }; #endif // SIMPLELISTTABLECONTROLLER_H