Files
GostGenerator/controller/perechentablecontroller.h
T

91 lines
4.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef PERECHENTABLECONTROLLER_H
#define PERECHENTABLECONTROLLER_H
#include <QObject>
#include <QList>
#include <QStringList>
#include "../model/perechentablemodel.h"
#include "../model/designatormappingmodel.h"
#include "../model/projectsettingsmodel.h"
class ComponentModel;
class PerechenTableController : public QObject
{
Q_OBJECT
public:
explicit PerechenTableController(QObject *parent = nullptr);
~PerechenTableController();
// Получение модели для отображения в UI
PerechenTableModel* getTableModel() const { return m_tableModel; }
PerechenTableModel* getModel() const { return m_tableModel; } // Алиас для совместимости
// Методы для работы с компонентами
void setComponents(const QList<ComponentModel*> &components);
void generateTableFromComponents();
void updateTableFromComponents(); // Метод для обновления таблицы по кнопке
// Новые методы для управления строками
void addEmptyRow();
void addEmptyRowAt(int position);
void insertEmptyRowAt(int position); // Вставка строки в определенную позицию
void removeRow(int row);
void clearTable();
// Методы для работы с настройками
void setColumnMappings(const QStringList &mappings);
QStringList getColumnMappings() const;
QStringList getAvailableProperties() const;
// Метод для установки модели маппинга дезигнаторов
void setDesignatorMappingModel(DesignatorMappingModel *mappingModel);
// Метод для установки модели таблицы (для интеграции с PerechenProcessor)
void setModel(PerechenTableModel *model);
// Метод для установки модели настроек проекта
void setProjectSettingsModel(ProjectSettingsModel *model);
// Метод для оптимизации разрывов страниц
void optimizePageBreaks();
// Методы для работы с размером шрифта
int getFontSize() const;
void setFontSize(int fontSize);
int getFontStretch() const;
void setFontStretch(int stretch);
private:
QString getComponentValue(ComponentModel *component, const QString &propertyName);
QString parseExpression(ComponentModel *component, const QString &expression);
QStringList collectPropertyNames();
// Методы для группировки
QString getComponentType(ComponentModel *component);
// Метод для разделения десигнатора на буквенную и цифровую части
QPair<QString, QString> splitDesignator(const QString &designator);
// Метод для разделения длинных наименований на несколько строк
QList<QString> splitLongDesignation(const QString &designation, const QString originalString="",ComponentModel *component = nullptr , int maxLength = 60);
// Вспомогательный метод для разделения текста по пробелам
QList<QString> splitBySpaces(const QString &text, int maxLength);
// Вспомогательный метод для разделения комплексной строки (с запятыми) по середине
QList<QString> splitComplexStringByMiddle(const QString &text, int maxLength);
PerechenTableModel *m_tableModel;
DesignatorMappingModel *m_designatorMappingModel;
ProjectSettingsModel *m_projectSettingsModel;
QList<ComponentModel*> m_components;
QStringList m_columnMappings;
QStringList m_propertyNames;
};
#endif // PERECHENTABLECONTROLLER_H