Refactor specification handling in DocumentSettingsDialog and PDFController. Introduced primary application field for document types, updated export messages for consistency, and improved page number handling in specifications. Cleaned up unnecessary code in preview widgets.
This commit is contained in:
+12
-62
@@ -10,11 +10,10 @@
|
||||
#include <QApplication>
|
||||
#include <QScreen>
|
||||
#include <QDebug> // Added for qDebug
|
||||
#include <QTimer>
|
||||
|
||||
// Константы
|
||||
const int PreviewPdfWidget::ZOOM_LEVELS[] = {25, 50, 75, 100, 125, 150, 200};
|
||||
const QStringList PreviewPdfWidget::DOCUMENT_TYPES = {"Перечень элементов", "Спецификация PCB", "Спецификация материалов", "Ведомость покупных изделий"};
|
||||
const QStringList PreviewPdfWidget::DOCUMENT_TYPES = {"Перечень элементов", "Спецификация PCB", "Спецификация", "Ведомость покупных изделий"};
|
||||
|
||||
// Дополнительные константы для мелкого масштабирования
|
||||
const int PreviewPdfWidget::FINE_ZOOM_STEP = 5; // Шаг для Ctrl+колесико (5%)
|
||||
@@ -44,16 +43,10 @@ PreviewPdfWidget::PreviewPdfWidget(QWidget *parent)
|
||||
: QWidget{parent}
|
||||
, m_mainController(nullptr)
|
||||
, m_pdfController(nullptr)
|
||||
, m_updateTimer(new QTimer(this))
|
||||
, m_currentPage(0)
|
||||
, m_currentZoom(100)
|
||||
, m_currentDocumentType("Перечень элементов")
|
||||
{
|
||||
// Настраиваем таймер для отложенного обновления (500 мс задержка)
|
||||
m_updateTimer->setSingleShot(true);
|
||||
m_updateTimer->setInterval(500);
|
||||
connect(m_updateTimer, &QTimer::timeout, this, &PreviewPdfWidget::updatePreview);
|
||||
|
||||
setUp();
|
||||
}
|
||||
|
||||
@@ -78,6 +71,7 @@ void PreviewPdfWidget::setWidgets(){
|
||||
|
||||
m_prevPageBtn = new QPushButton("←", this);
|
||||
m_nextPageBtn = new QPushButton("→", this);
|
||||
m_refreshBtn = new QPushButton("Обновить", this);
|
||||
m_pageInfoLabel = new QLabel("Страница 1 из 1", this);
|
||||
|
||||
// Создаем область прокрутки для страниц
|
||||
@@ -119,6 +113,9 @@ void PreviewPdfWidget::setUpLayout(){
|
||||
m_controlsLayout->addWidget(m_nextPageBtn);
|
||||
m_controlsLayout->addWidget(m_pageInfoLabel);
|
||||
|
||||
m_controlsLayout->addSpacing(20);
|
||||
m_controlsLayout->addWidget(m_refreshBtn);
|
||||
|
||||
m_controlsLayout->addStretch();
|
||||
|
||||
// Добавляем все в основной layout
|
||||
@@ -154,6 +151,7 @@ void PreviewPdfWidget::setUpConnections(){
|
||||
renderPage(m_currentPage);
|
||||
}
|
||||
});
|
||||
connect(m_refreshBtn, &QPushButton::clicked, this, &PreviewPdfWidget::updatePreview);
|
||||
|
||||
// Подключаем сигнал масштабирования от ZoomableScrollArea
|
||||
connect(m_scrollArea, &ZoomableScrollArea::zoomRequested,
|
||||
@@ -180,59 +178,11 @@ void PreviewPdfWidget::setMainController(MainController *mainController)
|
||||
if (m_mainController) {
|
||||
m_pdfController = m_mainController->pdfController();
|
||||
qDebug() << "PreviewPdfWidget::setMainController: PDFController получен из MainController:" << m_pdfController;
|
||||
|
||||
// Подключаемся к сигналам изменения данных (используем отложенное обновление)
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->perechenTableModel()), &QAbstractItemModel::dataChanged,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->perechenTableModel()), &QAbstractItemModel::modelReset,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->perechenTableModel()), &QAbstractItemModel::rowsInserted,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->perechenTableModel()), &QAbstractItemModel::rowsRemoved,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationPCBTableModel()), &QAbstractItemModel::dataChanged,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationPCBTableModel()), &QAbstractItemModel::modelReset,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationPCBTableModel()), &QAbstractItemModel::rowsInserted,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationPCBTableModel()), &QAbstractItemModel::rowsRemoved,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationTableModel()), &QAbstractItemModel::dataChanged,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationTableModel()), &QAbstractItemModel::modelReset,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationTableModel()), &QAbstractItemModel::rowsInserted,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->specificationTableModel()), &QAbstractItemModel::rowsRemoved,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->vedomostTableModel()), &QAbstractItemModel::dataChanged,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->vedomostTableModel()), &QAbstractItemModel::modelReset,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->vedomostTableModel()), &QAbstractItemModel::rowsInserted,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->vedomostTableModel()), &QAbstractItemModel::rowsRemoved,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
|
||||
// Подключаемся к сигналам изменения данных TitleInscriptionsModel
|
||||
connect(m_mainController->titleInscriptionsModel(), &TitleInscriptionsModel::dataChanged,
|
||||
this, [this]() {
|
||||
qDebug() << "PreviewPdfWidget: Получен сигнал dataChanged от TitleInscriptionsModel";
|
||||
m_updateTimer->start();
|
||||
});
|
||||
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->projectParamTableModel()), &QAbstractItemModel::dataChanged,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
connect(reinterpret_cast<QAbstractItemModel*>(m_mainController->projectParamTableModel()), &QAbstractItemModel::modelReset,
|
||||
this, [this]() { m_updateTimer->start(); });
|
||||
} else {
|
||||
m_pdfController = nullptr;
|
||||
}
|
||||
|
||||
// Обновляем превью при первой установке контроллера
|
||||
updatePreview();
|
||||
}
|
||||
|
||||
@@ -261,7 +211,7 @@ void PreviewPdfWidget::updatePreview()
|
||||
qDebug() << "PreviewPdfWidget::updatePreview: Количество строк в спецификации PCB:" << m_mainController->specificationPCBTableModel()->rowCount();
|
||||
}
|
||||
if (m_mainController->specificationTableModel()) {
|
||||
qDebug() << "PreviewPdfWidget::updatePreview: Количество строк в спецификации материалов:" << m_mainController->specificationTableModel()->rowCount();
|
||||
qDebug() << "PreviewPdfWidget::updatePreview: Количество строк в спецификации:" << m_mainController->specificationTableModel()->rowCount();
|
||||
}
|
||||
if (m_mainController->vedomostTableModel()) {
|
||||
qDebug() << "PreviewPdfWidget::updatePreview: Количество строк в ведомости покупных изделий:" << m_mainController->vedomostTableModel()->rowCount();
|
||||
@@ -320,10 +270,10 @@ void PreviewPdfWidget::generatePages()
|
||||
qDebug() << "PreviewPdfWidget::generatePages: Вызываем getSpecificationPcbPagesInfo";
|
||||
m_pagesInfo = m_pdfController->getSpecificationPcbPagesInfo(m_mainController);
|
||||
qDebug() << "PreviewPdfWidget::generatePages: Получено страниц спецификации PCB:" << m_pagesInfo.size();
|
||||
} else if (m_currentDocumentType == "Спецификация материалов") {
|
||||
} else if (m_currentDocumentType == "Спецификация") {
|
||||
qDebug() << "PreviewPdfWidget::generatePages: Вызываем getSpecificationPagesInfo";
|
||||
m_pagesInfo = m_pdfController->getSpecificationPagesInfo(m_mainController);
|
||||
qDebug() << "PreviewPdfWidget::generatePages: Получено страниц спецификации материалов:" << m_pagesInfo.size();
|
||||
qDebug() << "PreviewPdfWidget::generatePages: Получено страниц спецификации:" << m_pagesInfo.size();
|
||||
} else if (m_currentDocumentType == "Ведомость покупных изделий") {
|
||||
qDebug() << "PreviewPdfWidget::generatePages: Вызываем getVedomostPagesInfo";
|
||||
m_pagesInfo = m_pdfController->getVedomostPagesInfo(m_mainController);
|
||||
@@ -384,9 +334,9 @@ QPixmap PreviewPdfWidget::createPagePixmap(const PageInfo &pageInfo)
|
||||
} else if (m_currentDocumentType == "Спецификация PCB") {
|
||||
success = m_pdfController->drawSpecificationPcbPage(painter, pageInfo, m_mainController);
|
||||
qDebug() << "PreviewPdfWidget::createPagePixmap: Результат рисования спецификации PCB:" << success;
|
||||
} else if (m_currentDocumentType == "Спецификация материалов") {
|
||||
} else if (m_currentDocumentType == "Спецификация") {
|
||||
success = m_pdfController->drawSpecificationPage(painter, pageInfo, m_mainController);
|
||||
qDebug() << "PreviewPdfWidget::createPagePixmap: Результат рисования спецификации материалов:" << success;
|
||||
qDebug() << "PreviewPdfWidget::createPagePixmap: Результат рисования спецификации:" << success;
|
||||
} else if (m_currentDocumentType == "Ведомость покупных изделий") {
|
||||
success = m_pdfController->drawVedomostPage(painter, pageInfo, m_mainController);
|
||||
qDebug() << "PreviewPdfWidget::createPagePixmap: Результат рисования ведомости:" << success;
|
||||
|
||||
Reference in New Issue
Block a user