#ifndef MAINCONTROLLER_H #define MAINCONTROLLER_H #include #include #include #include #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 SimpleListTableModel; class SimpleListTableController; 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; SimpleListTableModel* simpleListTableModel() const; SimpleListTableController* simpleListTableController() 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 &inscriptions); bool loadTitleInscriptionsFromDatabase(QMap &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 saveSimpleListTableToDatabase(const QByteArray &tableData, const QString &projectName = QString()); QByteArray loadSimpleListTableFromDatabase(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); bool exportSimpleListToCsv(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; SimpleListTableModel* m_simpleListTableModel; SimpleListTableController* m_simpleListTableController; 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