Files
GostGenerator/controller/maincontroller.h
T

162 lines
6.6 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 MAINCONTROLLER_H
#define MAINCONTROLLER_H
#include <QObject>
#include <QString>
#include <QStringList>
#include <QList>
#include "databasecontroller.h"
#include "pdfcontroller.h"
#include "csvexporter.h"
class ComponentTableModel;
class ProjectParamTableModel;
class ProjectSettingsModel;
class DesignatorMappingModel;
class PerechenTableModel;
class PerechenTableController;
class SpecificationPCBTableModel;
class SpecificationPCBController;
class SpecificationTableModel;
class SpecificationController;
class VedomostTableModel;
class VedomostController;
class TitleInscriptionsModel;
class PCBMaterialModel;
class AltiumParser;
class MainController : public QObject
{
Q_OBJECT
public:
explicit MainController(QObject *parent = nullptr);
~MainController();
// Доступ к моделям
ComponentTableModel* componentTableModel() const;
ProjectParamTableModel* projectParamTableModel() const;
ProjectSettingsModel* projectSettingsModel() const;
DesignatorMappingModel* designatorMappingModel() const;
PerechenTableModel* perechenTableModel() const;
PerechenTableController* perechenTableController() const;
SpecificationPCBTableModel* specificationPCBTableModel() const;
SpecificationPCBController* specificationPCBController() const;
SpecificationTableModel* specificationTableModel() const;
SpecificationController* specificationController() const;
VedomostTableModel* vedomostTableModel() const;
VedomostController* vedomostController() const;
TitleInscriptionsModel* titleInscriptionsModel() const;
PCBMaterialModel* pcbMaterialModel() const;
// Работа с БД
bool initializeDatabase(const QString &dbPath = "components.db");
bool initializeGlobalDatabase();
bool isDatabaseOpen() const;
QString lastError() const;
// Работа с данными
void clearAllData();
bool setCurrentVariant(const QString &variant);
bool loadComponentsFromDatabase();
bool saveComponentsToDatabase();
bool loadProjectParamsFromDatabase();
bool saveProjectParamsToDatabase();
// Работа с материалами платы
bool loadPCBMaterialsFromDatabase();
// Работа с настройками проекта
bool loadProjectSettingsFromDatabase();
bool saveProjectSettingsToDatabase();
// Синхронизация настроек колонок с PerechenTableController
void syncColumnMappingsWithPerechenController();
void syncColumnMappingsWithSpecificationPCBController();
void syncColumnMappingsWithSpecificationController();
void syncColumnMappingsWithVedomostController();
// Работа с надписями титульного листа
bool saveTitleInscriptionsToDatabase(const QMap<int, QString> &inscriptions);
bool loadTitleInscriptionsFromDatabase(QMap<int, QString> &inscriptions);
// Работа с перечнем элементов
bool savePerechenTableToDatabase(const QByteArray &tableData, const QString &projectName = QString());
QByteArray loadPerechenTableFromDatabase(const QString &projectName = QString());
QString getPerechenTableInfo(const QString &projectName = QString());
// Работа со спецификацией платы
bool saveSpecificationPCBTableToDatabase(const QByteArray &tableData, const QString &projectName = QString());
QByteArray loadSpecificationPCBTableFromDatabase(const QString &projectName = QString());
QString getSpecificationPCBTableInfo(const QString &projectName = QString());
// Работа со спецификацией материалов
bool saveSpecificationTableToDatabase(const QByteArray &tableData, const QString &projectName = QString());
QByteArray loadSpecificationTableFromDatabase(const QString &projectName = QString());
QString getSpecificationTableInfo(const QString &projectName = QString());
// Работа с ведомостью покупных изделий
bool saveVedomostTableToDatabase(const QByteArray &tableData, const QString &projectName = QString());
QByteArray loadVedomostTableFromDatabase(const QString &projectName = QString());
QString getVedomostTableInfo(const QString &projectName = QString());
// Парсинг файлов
bool parseFile(const QString &filePath);
bool parseFileAsync(const QString &filePath);
bool isParsingAsync() const;
void cancelParsing();
bool exportPerechen();
// Метод для экспорта перечня элементов в PDF
bool exportPerechenToPdf(const QString &filePath);
// Метод для экспорта спецификации PCB в PDF
bool exportSpecificationPcbToPdf(const QString &filePath);
// Метод для экспорта спецификации материалов в PDF
bool exportSpecificationToPdf(const QString &filePath);
// Метод для экспорта ведомости покупных изделий в PDF
bool exportVedomostToPdf(const QString &filePath);
// Методы для экспорта в CSV
bool exportPerechenToCsv(const QString &filePath);
bool exportSpecificationPcbToCsv(const QString &filePath);
bool exportSpecificationToCsv(const QString &filePath);
bool exportVedomostToCsv(const QString &filePath);
// Метод для получения PDFController
PDFController* pdfController() const;
signals:
void parsingStarted();
void parsingProgress(int percentage);
void parsingFinished(bool success);
void error(const QString &error);
void databaseError(const QString &error);
private:
ComponentTableModel* m_componentTableModel;
ProjectParamTableModel* m_projectParamTableModel;
ProjectSettingsModel* m_projectSettingsModel;
DesignatorMappingModel* m_designatorMappingModel;
PerechenTableModel* m_perechenTableModel;
PerechenTableController* m_perechenTableController;
SpecificationPCBTableModel* m_specificationPCBTableModel;
SpecificationPCBController* m_specificationPCBController;
SpecificationTableModel* m_specificationTableModel;
SpecificationController* m_specificationController;
VedomostTableModel* m_vedomostTableModel;
VedomostController* m_vedomostController;
TitleInscriptionsModel* m_titleInscriptionsModel;
PCBMaterialModel* m_pcbMaterialModel;
DataBaseController* m_databaseController;
DataBaseController* m_globalDatabaseController;
AltiumParser* m_altiumParser;
QString m_currentVariant;
PDFController* m_pdfController;
CSVExporter* m_csvExporter;
};
#endif // MAINCONTROLLER_H