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 | 14 | ||||
-rw-r--r-- | src/printsupport/dialogs/qprintpreviewdialog.cpp | 16 | ||||
-rw-r--r-- | src/printsupport/doc/src/dontdocument.qdoc | 30 | ||||
-rw-r--r-- | src/printsupport/kernel/kernel.pri | 5 | ||||
-rw-r--r-- | src/printsupport/kernel/qcups.cpp | 4 | ||||
-rw-r--r-- | src/printsupport/kernel/qplatformprintdevice.cpp | 26 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintdevice_p.h | 2 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 2 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinterinfo.cpp | 29 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinterinfo.h | 3 | ||||
-rw-r--r-- | src/printsupport/widgets/qcupsjobwidget_p.h | 2 |
13 files changed, 114 insertions, 51 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 5390a8b2f2..5136ba13e5 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[] = { @@ -734,11 +734,11 @@ 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(','); - for (const QString item : items) { + for (const QString &item : items) { if (item.isEmpty()) return {}; @@ -788,7 +788,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; @@ -805,7 +805,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; @@ -1082,7 +1082,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 418bc47a59..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; @@ -331,7 +332,7 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer) QVBoxLayout *topLayout = new QVBoxLayout; topLayout->addWidget(mw); - topLayout->setMargin(0); + topLayout->setContentsMargins(0, 0, 0, 0); q->setLayout(topLayout); QString caption = QCoreApplication::translate("QPrintPreviewDialog", "Print Preview"); @@ -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/doc/src/dontdocument.qdoc b/src/printsupport/doc/src/dontdocument.qdoc new file mode 100644 index 0000000000..74552b4e99 --- /dev/null +++ b/src/printsupport/doc/src/dontdocument.qdoc @@ -0,0 +1,30 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \dontdocument (QMetaTypeId QPlatformPrintDevice QPlatformPrinterSupportPlugin) +*/ 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..5236b8c8fa 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)); } diff --git a/src/printsupport/kernel/qplatformprintdevice.cpp b/src/printsupport/kernel/qplatformprintdevice.cpp index 69d984cb0c..3d76cad688 100644 --- a/src/printsupport/kernel/qplatformprintdevice.cpp +++ b/src/printsupport/kernel/qplatformprintdevice.cpp @@ -40,10 +40,8 @@ #include "qplatformprintdevice.h" #include "qprintdevice_p.h" -#if QT_CONFIG(printdialog) -#include "qprintdialog.h" -#endif +#include <QtCore/qcoreapplication.h> #include <QtGui/qpagelayout.h> QT_BEGIN_NAMESPACE @@ -165,7 +163,7 @@ QPageSize QPlatformPrintDevice::supportedPageSize(const QPageSize &pageSize) con // e.g. Windows defines DMPAPER_11X17 and DMPAPER_TABLOID with names "11x17" and "Tabloid", but both // map to QPageSize::Tabloid / PPD Key "Tabloid" / ANSI B Tabloid if (pageSize.id() != QPageSize::Custom) { - for (const QPageSize &ps : m_pageSizes) { + for (const QPageSize &ps : qAsConst(m_pageSizes)) { if (ps.id() == pageSize.id() && ps.name() == pageSize.name()) return ps; } @@ -173,7 +171,7 @@ QPageSize QPlatformPrintDevice::supportedPageSize(const QPageSize &pageSize) con // Next try match on id only if not custom if (pageSize.id() != QPageSize::Custom) { - for (const QPageSize &ps : m_pageSizes) { + for (const QPageSize &ps : qAsConst(m_pageSizes)) { if (ps.id() == pageSize.id()) return ps; } @@ -188,7 +186,7 @@ QPageSize QPlatformPrintDevice::supportedPageSize(QPageSize::PageSizeId pageSize if (!m_havePageSizes) loadPageSizes(); - for (const QPageSize &ps : m_pageSizes) { + for (const QPageSize &ps : qAsConst(m_pageSizes)) { if (ps.id() == pageSizeId) return ps; } @@ -202,7 +200,7 @@ QPageSize QPlatformPrintDevice::supportedPageSize(const QString &pageName) const if (!m_havePageSizes) loadPageSizes(); - for (const QPageSize &ps : m_pageSizes) { + for (const QPageSize &ps : qAsConst(m_pageSizes)) { if (ps.name() == pageName) return ps; } @@ -235,7 +233,7 @@ QPageSize QPlatformPrintDevice::supportedPageSizeMatch(const QPageSize &pageSize return pageSize; // Try to find a supported page size based on point size - for (const QPageSize &ps : m_pageSizes) { + for (const QPageSize &ps : qAsConst(m_pageSizes)) { if (ps.sizePoints() == pageSize.sizePoints()) return ps; } @@ -291,11 +289,7 @@ QPrint::InputSlot QPlatformPrintDevice::defaultInputSlot() const { QPrint::InputSlot input; input.key = QByteArrayLiteral("Auto"); -#if QT_CONFIG(printdialog) - input.name = QPrintDialog::tr("Automatic"); -#else - input.name = QString::fromLatin1("Automatic"); -#endif + input.name = QCoreApplication::translate("Print Device Input Slot", "Automatic"); input.id = QPrint::Auto; return input; } @@ -315,11 +309,7 @@ QPrint::OutputBin QPlatformPrintDevice::defaultOutputBin() const { QPrint::OutputBin output; output.key = QByteArrayLiteral("Auto"); -#if QT_CONFIG(printdialog) - output.name = QPrintDialog::tr("Automatic"); -#else - output.name = QString::fromLatin1("Automatic"); -#endif + output.name = QCoreApplication::translate("Print Device Output Bin", "Automatic"); output.id = QPrint::AutoOutputBin; return output; } 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); } diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index 829a13863b..ddcd8c4702 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -1848,7 +1848,7 @@ QList<int> QPrinter::supportedResolutions() const = d->printEngine->property(QPrintEngine::PPK_SupportedResolutions).toList(); QList<int> intlist; intlist.reserve(varlist.size()); - for (auto var : varlist) + for (const auto &var : varlist) intlist << var.toInt(); return intlist; } diff --git a/src/printsupport/kernel/qprinterinfo.cpp b/src/printsupport/kernel/qprinterinfo.cpp index 4b092dee64..167b2361ef 100644 --- a/src/printsupport/kernel/qprinterinfo.cpp +++ b/src/printsupport/kernel/qprinterinfo.cpp @@ -400,6 +400,35 @@ QList<QPrinter::DuplexMode> QPrinterInfo::supportedDuplexModes() const } /*! + Returns the default color mode of this printer. + + \since 5.13 +*/ + +QPrinter::ColorMode QPrinterInfo::defaultColorMode() const +{ + Q_D(const QPrinterInfo); + return QPrinter::ColorMode(d->m_printDevice.defaultColorMode()); +} + +/*! + Returns the supported color modes of this printer. + + \since 5.13 +*/ + +QList<QPrinter::ColorMode> QPrinterInfo::supportedColorModes() const +{ + Q_D(const QPrinterInfo); + QList<QPrinter::ColorMode> list; + const auto supportedColorModes = d->m_printDevice.supportedColorModes(); + list.reserve(supportedColorModes.size()); + for (QPrint::ColorMode mode : supportedColorModes) + list << QPrinter::ColorMode(mode); + return list; +} + +/*! Returns a list of all the available Printer Names on this system. It is recommended to use this instead of availablePrinters() as diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h index 8bac395ab3..7195cb76b5 100644 --- a/src/printsupport/kernel/qprinterinfo.h +++ b/src/printsupport/kernel/qprinterinfo.h @@ -93,6 +93,9 @@ public: QPrinter::DuplexMode defaultDuplexMode() const; QList<QPrinter::DuplexMode> supportedDuplexModes() const; + QPrinter::ColorMode defaultColorMode() const; + QList<QPrinter::ColorMode> supportedColorModes() const; + static QStringList availablePrinterNames(); static QList<QPrinterInfo> availablePrinters(); diff --git a/src/printsupport/widgets/qcupsjobwidget_p.h b/src/printsupport/widgets/qcupsjobwidget_p.h index 4b6b047e26..42da9c7580 100644 --- a/src/printsupport/widgets/qcupsjobwidget_p.h +++ b/src/printsupport/widgets/qcupsjobwidget_p.h @@ -113,7 +113,7 @@ private: int m_savedPriority; QCUPSSupport::JobSheets m_savedJobSheets; - Q_DISABLE_COPY(QCupsJobWidget) + Q_DISABLE_COPY_MOVE(QCupsJobWidget) }; QT_END_NAMESPACE |