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:
@@ -1018,10 +1018,14 @@ void SpecificationPCBTableModel::updatePageNumbers()
|
||||
int currentRow = 0;
|
||||
int currentPage = 1;
|
||||
int rowsOnCurrentPage = 0;
|
||||
bool pageNumbersChanged = false;
|
||||
|
||||
for (int i = 0; i < m_rows.size(); ++i) {
|
||||
SpecificationPCBRowData &row = m_rows[i];
|
||||
|
||||
// Сохраняем старый номер страницы для проверки изменений
|
||||
int oldPageNumber = row.pageNumber;
|
||||
|
||||
// Определяем, сколько строк помещается на текущей странице
|
||||
int maxRowsOnPage = (currentPage == 1) ? ROWS_PER_FIRST_PAGE : ROWS_PER_OTHER_PAGE;
|
||||
|
||||
@@ -1032,6 +1036,11 @@ void SpecificationPCBTableModel::updatePageNumbers()
|
||||
maxRowsOnPage = ROWS_PER_OTHER_PAGE; // Начиная со второй страницы
|
||||
}
|
||||
|
||||
// Проверяем, изменился ли номер страницы
|
||||
if (oldPageNumber != currentPage) {
|
||||
pageNumbersChanged = true;
|
||||
}
|
||||
|
||||
// Устанавливаем номер страницы для строки
|
||||
row.pageNumber = currentPage;
|
||||
row.format.pageNumber = currentPage;
|
||||
@@ -1052,8 +1061,9 @@ void SpecificationPCBTableModel::updatePageNumbers()
|
||||
|
||||
qDebug() << "SpecificationPCBTableModel::updatePageNumbers: Обновление завершено, всего страниц:" << currentPage;
|
||||
|
||||
// Уведомляем UI об изменении данных для обновления отображения страниц
|
||||
if (!m_rows.isEmpty()) {
|
||||
// Уведомляем UI об изменении данных ТОЛЬКО если номера страниц действительно изменились
|
||||
// Это критично для производительности при редактировании больших таблиц
|
||||
if (pageNumbersChanged && !m_rows.isEmpty()) {
|
||||
emit dataChanged(index(0, 0), index(m_rows.size() - 1, COLUMN_COUNT - 1),
|
||||
QVector<int>() << Qt::BackgroundRole);
|
||||
emit headerDataChanged(Qt::Vertical, 0, m_rows.size() - 1);
|
||||
@@ -1264,11 +1274,27 @@ void SpecificationPCBTableModel::updatePageDisplay()
|
||||
{
|
||||
qDebug() << "SpecificationPCBTableModel::updatePageDisplay: Обновляем отображение страниц в UI";
|
||||
|
||||
// Сохраняем старые номера страниц для проверки изменений
|
||||
QList<int> oldPageNumbers;
|
||||
for (const SpecificationPCBRowData &row : m_rows) {
|
||||
oldPageNumbers.append(row.pageNumber);
|
||||
}
|
||||
|
||||
// Обновляем номера страниц
|
||||
updatePageNumbers();
|
||||
|
||||
// Уведомляем UI об изменении всех данных для обновления отображения
|
||||
if (!m_rows.isEmpty()) {
|
||||
// Проверяем, изменились ли номера страниц
|
||||
bool pageNumbersChanged = false;
|
||||
for (int i = 0; i < m_rows.size() && i < oldPageNumbers.size(); ++i) {
|
||||
if (m_rows[i].pageNumber != oldPageNumbers[i]) {
|
||||
pageNumbersChanged = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Уведомляем UI об изменении данных ТОЛЬКО если номера страниц действительно изменились
|
||||
// Это критично для производительности при редактировании больших таблиц
|
||||
if (pageNumbersChanged && !m_rows.isEmpty()) {
|
||||
emit dataChanged(index(0, 0), index(m_rows.size() - 1, COLUMN_COUNT - 1),
|
||||
QVector<int>() << Qt::BackgroundRole);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user