diff options
Diffstat (limited to 'src/printsupport')
-rw-r--r-- | src/printsupport/dialogs/qabstractprintdialog.h | 6 | ||||
-rw-r--r-- | src/printsupport/dialogs/qpagesetupdialog_unix.cpp | 26 | ||||
-rw-r--r-- | src/printsupport/dialogs/qprintdialog_unix.cpp | 12 | ||||
-rw-r--r-- | src/printsupport/dialogs/qprintpreviewdialog.cpp | 14 | ||||
-rw-r--r-- | src/printsupport/kernel/kernel.pri | 5 | ||||
-rw-r--r-- | src/printsupport/kernel/qcups.cpp | 6 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintdevice_p.h | 2 |
7 files changed, 41 insertions, 30 deletions
diff --git a/src/printsupport/dialogs/qabstractprintdialog.h b/src/printsupport/dialogs/qabstractprintdialog.h index 3cc89890fc..372716adfc 100644 --- a/src/printsupport/dialogs/qabstractprintdialog.h +++ b/src/printsupport/dialogs/qabstractprintdialog.h @@ -73,7 +73,9 @@ public: PrintPageRange = 0x0004, PrintShowPageSize = 0x0008, PrintCollateCopies = 0x0010, - DontUseSheet = 0x0020, +#if QT_DEPRECATED_SINCE(5, 14) + DontUseSheet Q_DECL_ENUMERATOR_DEPRECATED = 0x0020, +#endif PrintCurrentPage = 0x0040 }; Q_ENUM(PrintDialogOption) @@ -84,8 +86,6 @@ public: explicit QAbstractPrintDialog(QPrinter *printer, QWidget *parent = nullptr); ~QAbstractPrintDialog(); - int exec() override = 0; - // obsolete void addEnabledOption(PrintDialogOption option); void setEnabledOptions(PrintDialogOptions options); diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp index d9b4a84aa9..1d8af9dbf0 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp +++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp @@ -361,13 +361,21 @@ void QPageSetupWidget::initPageSizes() QPlatformPrinterSupport *ps = QPlatformPrinterSupportPlugin::get(); if (ps) { QPrintDevice printDevice = ps->createPrintDevice(m_printerName); + const QPageSize defaultSize = printDevice.defaultPageSize(); const auto pageSizes = printDevice.supportedPageSizes(); for (const QPageSize &pageSize : pageSizes) m_ui.pageSizeCombo->addItem(pageSize.name(), QVariant::fromValue(pageSize)); - if (m_ui.pageSizeCombo->count() > 0 && printDevice.supportsCustomPageSizes()) { - m_ui.pageSizeCombo->addItem(tr("Custom")); - m_realCustomPageSizeIndex = m_ui.pageSizeCombo->count() - 1; + if (m_ui.pageSizeCombo->count() > 0) { + if (printDevice.supportsCustomPageSizes()) { + m_ui.pageSizeCombo->addItem(tr("Custom")); + m_realCustomPageSizeIndex = m_ui.pageSizeCombo->count() - 1; + } m_blockSignals = false; + + // If the defaultSize is index 0, setCurrentIndex won't emit the currentIndexChanged + // signal; workaround the issue by initially setting the currentIndex to -1 + m_ui.pageSizeCombo->setCurrentIndex(-1); + m_ui.pageSizeCombo->setCurrentIndex(m_ui.pageSizeCombo->findData(QVariant::fromValue(defaultSize))); return; } } @@ -403,12 +411,6 @@ void QPageSetupWidget::setPrinter(QPrinter *printer, QPrintDevice *printDevice, // Initialize the layout to the current QPrinter layout m_pageLayout = m_printer->pageLayout(); - if (printDevice) { - const QPageSize pageSize = printDevice->defaultPageSize(); - const QMarginsF printable = printDevice->printableMargins(pageSize, m_pageLayout.orientation(), m_printer->resolution()); - m_pageLayout.setPageSize(pageSize, qt_convertMargins(printable, QPageLayout::Point, m_pageLayout.units())); - } - // Assume if margins are Points then is by default, so set to locale default units if (m_pageLayout.units() == QPageLayout::Point) { if (QLocale().measurementSystem() == QLocale::MetricSystem) @@ -735,8 +737,12 @@ int QPageSetupDialog::exec() Q_D(QPageSetupDialog); int ret = QDialog::exec(); - if (ret == Accepted) + if (ret == Accepted) { static_cast <QUnixPageSetupDialogPrivate*>(d)->widget->setupPrinter(); + static_cast <QUnixPageSetupDialogPrivate*>(d)->widget->updateSavedValues(); + } else { + static_cast <QUnixPageSetupDialogPrivate*>(d)->widget->revertToSavedValues(); + } return ret; } diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp index d2937e7547..c7328d9732 100644 --- a/src/printsupport/dialogs/qprintdialog_unix.cpp +++ b/src/printsupport/dialogs/qprintdialog_unix.cpp @@ -398,12 +398,12 @@ static const char *ppdOriginallySelectedChoiceProperty = "_q_ppd_originally_sele // Used to store the warning label pointer for each QComboBox that represents an advanced option static const char *warningLabelProperty = "_q_warning_label"; -static bool isBlacklistedGroup(const ppd_group_t *group) Q_DECL_NOTHROW +static bool isBlacklistedGroup(const ppd_group_t *group) noexcept { return qstrcmp(group->name, "InstallableOptions") == 0; }; -static bool isBlacklistedOption(const char *keyword) Q_DECL_NOTHROW +static bool isBlacklistedOption(const char *keyword) noexcept { // We already let the user set these options elsewhere const char *cupsOptionBlacklist[] = { @@ -739,7 +739,7 @@ void QPrintDialogPrivate::selectPrinter(const QPrinter::OutputFormat outputForma } #if QT_CONFIG(cups) -static std::vector<std::pair<int, int>> pageRangesFromString(const QString &pagesString) Q_DECL_NOTHROW +static std::vector<std::pair<int, int>> pageRangesFromString(const QString &pagesString) noexcept { std::vector<std::pair<int, int>> result; const QStringList items = pagesString.split(','); @@ -793,7 +793,7 @@ static std::vector<std::pair<int, int>> pageRangesFromString(const QString &page return result; } -static QString stringFromPageRanges(const std::vector<std::pair<int, int>> &pageRanges) Q_DECL_NOTHROW +static QString stringFromPageRanges(const std::vector<std::pair<int, int>> &pageRanges) noexcept { QString result; @@ -810,7 +810,7 @@ static QString stringFromPageRanges(const std::vector<std::pair<int, int>> &page return result; } -static bool isValidPagesString(const QString &pagesString) Q_DECL_NOTHROW +static bool isValidPagesString(const QString &pagesString) noexcept { if (pagesString.isEmpty()) return false; @@ -1087,7 +1087,7 @@ void QPrintDialog::setVisible(bool visible) int QPrintDialog::exec() { - return QDialog::exec(); + return QAbstractPrintDialog::exec(); } void QPrintDialog::accept() diff --git a/src/printsupport/dialogs/qprintpreviewdialog.cpp b/src/printsupport/dialogs/qprintpreviewdialog.cpp index e6b665f82c..39575d5f57 100644 --- a/src/printsupport/dialogs/qprintpreviewdialog.cpp +++ b/src/printsupport/dialogs/qprintpreviewdialog.cpp @@ -152,8 +152,8 @@ class QPrintPreviewDialogPrivate : public QDialogPrivate Q_DECLARE_PUBLIC(QPrintPreviewDialog) public: QPrintPreviewDialogPrivate() - : printDialog(nullptr), ownPrinter(false), - initialized(false) {} + : printDialog(nullptr), pageSetupDialog(nullptr), + ownPrinter(false), initialized(false) {} // private slots void _q_fit(QAction *action); @@ -178,6 +178,7 @@ public: void updateZoomFactor(); QPrintDialog *printDialog; + QPageSetupDialog *pageSetupDialog; QPrintPreviewWidget *preview; QPrinter *printer; bool ownPrinter; @@ -494,7 +495,7 @@ void QPrintPreviewDialogPrivate::updatePageNumLabel() void QPrintPreviewDialogPrivate::updateZoomFactor() { - zoomFactor->lineEdit()->setText(QString().sprintf("%.1f%%", preview->zoomFactor()*100)); + zoomFactor->lineEdit()->setText(QString::asprintf("%.1f%%", preview->zoomFactor()*100)); } void QPrintPreviewDialogPrivate::_q_fit(QAction* action) @@ -602,8 +603,10 @@ void QPrintPreviewDialogPrivate::_q_pageSetup() { Q_Q(QPrintPreviewDialog); - QPageSetupDialog pageSetup(printer, q); - if (pageSetup.exec() == QDialog::Accepted) { + if (!pageSetupDialog) + pageSetupDialog = new QPageSetupDialog(printer, q); + + if (pageSetupDialog->exec() == QDialog::Accepted) { // update possible orientation changes if (preview->orientation() == QPrinter::Portrait) { portraitAction->setChecked(true); @@ -713,6 +716,7 @@ QPrintPreviewDialog::~QPrintPreviewDialog() if (d->ownPrinter) delete d->printer; delete d->printDialog; + delete d->pageSetupDialog; } /*! diff --git a/src/printsupport/kernel/kernel.pri b/src/printsupport/kernel/kernel.pri index ea7b4b9780..2ceaf152eb 100644 --- a/src/printsupport/kernel/kernel.pri +++ b/src/printsupport/kernel/kernel.pri @@ -33,7 +33,10 @@ win32 { $$PWD/qprintengine_win_p.h SOURCES += \ $$PWD/qprintengine_win.cpp - !winrt: LIBS_PRIVATE += -lwinspool -lcomdlg32 -lgdi32 -luser32 + !winrt { + LIBS_PRIVATE += -lwinspool -lcomdlg32 + QMAKE_USE_PRIVATE += user32 gdi32 + } } unix:!darwin:qtConfig(cups) { diff --git a/src/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp index 8505e8356c..2fc4621960 100644 --- a/src/printsupport/kernel/qcups.cpp +++ b/src/printsupport/kernel/qcups.cpp @@ -44,12 +44,12 @@ QT_BEGIN_NAMESPACE -static QStringList cupsOptionsList(QPrinter *printer) Q_DECL_NOTHROW +static QStringList cupsOptionsList(QPrinter *printer) noexcept { return printer->printEngine()->property(PPK_CupsOptions).toStringList(); } -void setCupsOptions(QPrinter *printer, const QStringList &cupsOptions) Q_DECL_NOTHROW +void setCupsOptions(QPrinter *printer, const QStringList &cupsOptions) noexcept { printer->printEngine()->setProperty(PPK_CupsOptions, QVariant(cupsOptions)); } @@ -106,7 +106,7 @@ static inline QString jobHoldToString(const QCUPSSupport::JobHoldUntil jobHold, if (holdUntilTime < localDateTime.time()) localDateTime = localDateTime.addDays(1); localDateTime.setTime(holdUntilTime); - return localDateTime.toUTC().time().toString(QStringViewLiteral("HH:mm")); + return localDateTime.toUTC().time().toString(u"HH:mm"); } // else fall through: Q_FALLTHROUGH(); diff --git a/src/printsupport/kernel/qprintdevice_p.h b/src/printsupport/kernel/qprintdevice_p.h index a2b18f08cf..9e76c37617 100644 --- a/src/printsupport/kernel/qprintdevice_p.h +++ b/src/printsupport/kernel/qprintdevice_p.h @@ -76,9 +76,7 @@ public: ~QPrintDevice(); QPrintDevice &operator=(const QPrintDevice &other); - #ifdef Q_COMPILER_RVALUE_REFS QPrintDevice &operator=(QPrintDevice &&other) { swap(other); return *this; } -#endif void swap(QPrintDevice &other) { d.swap(other.d); } |