Add initial project structure with essential files including .gitignore, application resources, and various model and view components for the application. Implemented asynchronous parsing support and database structure checks.

This commit is contained in:
2025-12-08 15:21:18 +03:00
parent 4f8c90c15b
commit 3467003721
110 changed files with 35406 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
#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