66 lines
2.7 KiB
C++
66 lines
2.7 KiB
C++
#ifndef SIMPLELISTTABLECONTROLLER_H
|
|
#define SIMPLELISTTABLECONTROLLER_H
|
|
|
|
#include <QObject>
|
|
#include <QList>
|
|
#include <QStringList>
|
|
#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<ComponentModel*> &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<QString, QString> splitDesignator(const QString &designator);
|
|
|
|
SimpleListTableModel *m_tableModel;
|
|
QList<ComponentModel*> m_components;
|
|
QStringList m_propertyNames;
|
|
QString m_nameField; // Поле для наименования компонента (по умолчанию "Name")
|
|
int m_techReservePercent; // Процент тех запаса (по умолчанию 10)
|
|
int m_boardsCount; // Кол-во плат (по умолчанию 1)
|
|
};
|
|
|
|
#endif // SIMPLELISTTABLECONTROLLER_H
|
|
|