96 lines
3.8 KiB
C++
96 lines
3.8 KiB
C++
#ifndef CSVEXPORTER_H
|
|
#define CSVEXPORTER_H
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QAbstractTableModel>
|
|
|
|
class SpecificationPCBTableModel;
|
|
class SpecificationTableModel;
|
|
class PerechenTableModel;
|
|
class VedomostTableModel;
|
|
|
|
/**
|
|
* @brief Класс для экспорта таблиц в формат CSV
|
|
*
|
|
* Поддерживает экспорт следующих типов таблиц:
|
|
* - SpecificationPCBTableModel (Спецификация PCB)
|
|
* - SpecificationTableModel (Спецификация материалов)
|
|
* - PerechenTableModel (Перечень элементов)
|
|
* - VedomostTableModel (Ведомость покупных изделий)
|
|
*/
|
|
class CSVExporter : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit CSVExporter(QObject *parent = nullptr);
|
|
|
|
/**
|
|
* @brief Экспортирует таблицу спецификации PCB в CSV
|
|
* @param filePath Путь к файлу для сохранения
|
|
* @param model Модель таблицы спецификации PCB
|
|
* @return true если экспорт успешен, false в противном случае
|
|
*/
|
|
bool exportSpecificationPCB(const QString &filePath, SpecificationPCBTableModel *model);
|
|
|
|
/**
|
|
* @brief Экспортирует таблицу спецификации материалов в CSV
|
|
* @param filePath Путь к файлу для сохранения
|
|
* @param model Модель таблицы спецификации материалов
|
|
* @return true если экспорт успешен, false в противном случае
|
|
*/
|
|
bool exportSpecification(const QString &filePath, SpecificationTableModel *model);
|
|
|
|
/**
|
|
* @brief Экспортирует таблицу перечня элементов в CSV
|
|
* @param filePath Путь к файлу для сохранения
|
|
* @param model Модель таблицы перечня элементов
|
|
* @return true если экспорт успешен, false в противном случае
|
|
*/
|
|
bool exportPerechen(const QString &filePath, PerechenTableModel *model);
|
|
|
|
/**
|
|
* @brief Экспортирует таблицу ведомости покупных изделий в CSV
|
|
* @param filePath Путь к файлу для сохранения
|
|
* @param model Модель таблицы ведомости покупных изделий
|
|
* @return true если экспорт успешен, false в противном случае
|
|
*/
|
|
bool exportVedomost(const QString &filePath, VedomostTableModel *model);
|
|
|
|
/**
|
|
* @brief Экспортирует любую модель таблицы в CSV
|
|
* @param filePath Путь к файлу для сохранения
|
|
* @param model Модель таблицы
|
|
* @param includeHeaders Включать ли заголовки колонок
|
|
* @return true если экспорт успешен, false в противном случае
|
|
*/
|
|
bool exportTableModel(const QString &filePath, QAbstractTableModel *model, bool includeHeaders = true);
|
|
|
|
/**
|
|
* @brief Возвращает последнюю ошибку
|
|
* @return Текст ошибки
|
|
*/
|
|
QString lastError() const;
|
|
|
|
private:
|
|
/**
|
|
* @brief Экранирует значение для CSV
|
|
* @param value Значение для экранирования
|
|
* @return Экранированное значение
|
|
*/
|
|
QString escapeCsvValue(const QString &value) const;
|
|
|
|
/**
|
|
* @brief Формирует строку CSV из списка значений
|
|
* @param values Список значений
|
|
* @return Строка CSV
|
|
*/
|
|
QString formatCsvRow(const QStringList &values) const;
|
|
|
|
QString m_lastError;
|
|
};
|
|
|
|
#endif // CSVEXPORTER_H
|
|
|