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:
@@ -0,0 +1,107 @@
|
||||
#ifndef PDFCONTROLLER_H
|
||||
#define PDFCONTROLLER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QPainter>
|
||||
#include <QString>
|
||||
#include <QFont>
|
||||
#include <QList>
|
||||
#include <QModelIndex>
|
||||
#include "../model/pageinfo.h"
|
||||
#include "../model/perechentablemodel.h"
|
||||
|
||||
class MainController;
|
||||
class PerechenTableModel;
|
||||
class TitleInscriptionsModel;
|
||||
class ProjectParamTableModel;
|
||||
class SpecificationPCBTableModel;
|
||||
class SpecificationTableModel;
|
||||
class VedomostTableModel;
|
||||
|
||||
class PDFController : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PDFController(QObject *parent = nullptr);
|
||||
|
||||
// Метод для экспорта перечня элементов в PDF
|
||||
bool exportPerechenToPdf(const QString &filePath, MainController *mainController);
|
||||
|
||||
// Метод для экспорта спецификации PCB в PDF
|
||||
bool exportSpecificationPcbToPdf(const QString &filePath, MainController *mainController);
|
||||
|
||||
// Метод для экспорта спецификации материалов в PDF
|
||||
bool exportSpecificationToPdf(const QString &filePath, MainController *mainController);
|
||||
|
||||
// Метод для экспорта ведомости покупных изделий в PDF
|
||||
bool exportVedomostToPdf(const QString &filePath, MainController *mainController);
|
||||
|
||||
// Новые методы для предварительного просмотра
|
||||
QList<PageInfo> getPerechenPagesInfo(MainController *mainController);
|
||||
QList<PageInfo> getSpecificationPcbPagesInfo(MainController *mainController);
|
||||
QList<PageInfo> getSpecificationPagesInfo(MainController *mainController);
|
||||
QList<PageInfo> getVedomostPagesInfo(MainController *mainController);
|
||||
|
||||
// Методы для рисования страниц на painter
|
||||
bool drawPerechenPage(QPainter &painter, const PageInfo &pageInfo, MainController *mainController);
|
||||
bool drawSpecificationPcbPage(QPainter &painter, const PageInfo &pageInfo, MainController *mainController);
|
||||
bool drawSpecificationPage(QPainter &painter, const PageInfo &pageInfo, MainController *mainController);
|
||||
bool drawVedomostPage(QPainter &painter, const PageInfo &pageInfo, MainController *mainController);
|
||||
|
||||
// Методы для генерации таблиц
|
||||
bool generateTableA4(const QString &filePath, MainController *mainController);
|
||||
bool generateTableA5(const QString &filePath, MainController *mainController);
|
||||
|
||||
// Методы для генерации штампов ГОСТ
|
||||
bool generateGostStampA4(const QString &filePath, MainController *mainController);
|
||||
|
||||
bool generateGostStampA5(const QString &filePath, MainController *mainController);
|
||||
|
||||
// Утилитарные функции для работы с шрифтом ГОСТ
|
||||
static QFont createGostFont(int pointSize, bool bold = false, bool italic = false, int stretch = 100);
|
||||
static void drawTextWithGostFont(QPainter &painter, const QRectF &rect,
|
||||
const QString &text, int pointSize,
|
||||
Qt::Alignment alignment = Qt::AlignLeft);
|
||||
static void drawTextWithAutoSize(QPainter &painter, const QRectF &rect,
|
||||
const QString &text, int maxPointSize = 20);
|
||||
static void drawTextMultiline(QPainter &painter, const QRectF &rect,
|
||||
const QString &text, const QFont &font,
|
||||
int maxLines = 3);
|
||||
|
||||
// Метод для получения значения надписи с учетом параметров проекта
|
||||
static QString getInscriptionValueWithProjectParams(const TitleInscriptionsModel* titleModel,
|
||||
const ProjectParamTableModel* projectParamModel,
|
||||
int inscriptionIndex);
|
||||
|
||||
private:
|
||||
// Вспомогательные методы для создания PDF
|
||||
bool createPdfDocument(const QString &filePath, const QString &title);
|
||||
bool addGostFrameA4FirstPage(QPainter &painter, const QRectF &pageRect, const TitleInscriptionsModel* model, const ProjectParamTableModel* projectParamModel, int currentPage, int totalPages , int docType);
|
||||
bool addGostFrameA4(QPainter &painter, const QRectF &pageRect, const TitleInscriptionsModel* model, const ProjectParamTableModel* projectParamModel, int currentPage, int totalPages, int docType);
|
||||
bool addGostFrameA3(QPainter &painter, const QRectF &pageRect, const TitleInscriptionsModel* model, const ProjectParamTableModel* projectParamModel, int currentPage, int totalPages);
|
||||
bool addTitleInscriptions(QPainter &painter, TitleInscriptionsModel *titleModel, const QRectF &stampRect);
|
||||
bool addPerechenTable(QPainter &painter, PerechenTableModel *perechenModel, const QRectF &tableRect, MainController *mainController = nullptr);
|
||||
bool addPerechenTableRange(QPainter &painter, PerechenTableModel *perechenModel, const QRectF &tableRect, int startRow, int rowCount, MainController *mainController = nullptr);
|
||||
bool addSpecificationPcbTableRange(QPainter &painter, SpecificationPCBTableModel *specificationModel, const QRectF &tableRect, int startRow, int rowCount, MainController *mainController = nullptr);
|
||||
bool addSpecificationTableRange(QPainter &painter, SpecificationTableModel *specificationModel, const QRectF &tableRect, int startRow, int rowCount, MainController *mainController = nullptr);
|
||||
bool addVedomostTableRange(QPainter &painter, VedomostTableModel *vedomostModel, const QRectF &tableRect, int startRow, int rowCount, MainController *mainController = nullptr);
|
||||
|
||||
bool addGostFrameA3FirstPage(QPainter &painter, const QRectF &pageRect, const TitleInscriptionsModel *model, const ProjectParamTableModel *projectParamModel, int currentPage, int totalPages);
|
||||
bool addListRegistrationTable(QPainter &painter,const QRectF &pageRect);
|
||||
|
||||
// Вспомогательная функция для получения поджима ячейки
|
||||
static int getCellStretch(const QModelIndex &index, int defaultStretch);
|
||||
|
||||
// Вспомогательная функция для получения флага подчеркивания ячейки
|
||||
static bool getCellUnderline(const QModelIndex &index, bool defaultUnderline = true);
|
||||
|
||||
// Вспомогательная функция для рисования ячейки с учетом поджима
|
||||
void drawCellWithStretch(QPainter &painter, const QModelIndex &index, const QRectF &rect,
|
||||
const QString &text, int fontSize, int defaultStretch,
|
||||
const QFont &baseFont, Qt::Alignment alignment, MainController *mainController = nullptr);
|
||||
signals:
|
||||
// Сигнал о переполнении ячейки при отрисовке в PDF
|
||||
void cellOverflowDetected(const QModelIndex &index, bool isOverflow);
|
||||
};
|
||||
|
||||
#endif // PDFCONTROLLER_H
|
||||
Reference in New Issue
Block a user