diff options
Diffstat (limited to 'src/plugins/printsupport/cups')
-rw-r--r-- | src/plugins/printsupport/cups/CMakeLists.txt | 9 | ||||
-rw-r--r-- | src/plugins/printsupport/cups/qcupsprintengine.cpp | 24 | ||||
-rw-r--r-- | src/plugins/printsupport/cups/qcupsprintersupport.cpp | 21 | ||||
-rw-r--r-- | src/plugins/printsupport/cups/qppdprintdevice.cpp | 4 |
4 files changed, 34 insertions, 24 deletions
diff --git a/src/plugins/printsupport/cups/CMakeLists.txt b/src/plugins/printsupport/cups/CMakeLists.txt index 1132ff0845..b6400d2d36 100644 --- a/src/plugins/printsupport/cups/CMakeLists.txt +++ b/src/plugins/printsupport/cups/CMakeLists.txt @@ -1,6 +1,7 @@ -# Generated from cups.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause -qt_find_package(Cups PROVIDED_TARGETS Cups::Cups) # special case +qt_find_package(Cups PROVIDED_TARGETS Cups::Cups) ##################################################################### ## QCupsPrinterSupportPlugin Plugin: @@ -25,7 +26,3 @@ qt_internal_add_plugin(QCupsPrinterSupportPlugin Qt::PrintSupport Qt::PrintSupportPrivate ) - -#### Keys ignored in scope 1:.:.:cups.pro:<TRUE>: -# MODULE = "cupsprintersupport" -# OTHER_FILES = "cups.json" diff --git a/src/plugins/printsupport/cups/qcupsprintengine.cpp b/src/plugins/printsupport/cups/qcupsprintengine.cpp index b69d36ab8c..6c50c11c0f 100644 --- a/src/plugins/printsupport/cups/qcupsprintengine.cpp +++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp @@ -144,7 +144,20 @@ bool QCupsPrintEnginePrivate::openPrintDevice() } cupsTempFile = QString::fromLocal8Bit(filename); outDevice = new QFile(); - static_cast<QFile *>(outDevice)->open(fd, QIODevice::WriteOnly); + if (!static_cast<QFile *>(outDevice)->open(fd, QIODevice::WriteOnly)) { + qWarning("QPdfPrinter: Could not open CUPS temporary file descriptor: %s", + qPrintable(outDevice->errorString())); + delete outDevice; + outDevice = nullptr; + +#if defined(Q_OS_WIN) && defined(Q_CC_MSVC) + ::_close(fd); +#else + ::close(fd); +#endif + fd = -1; + return false; + } } return true; @@ -249,9 +262,12 @@ void QCupsPrintEnginePrivate::changePrinter(const QString &newPrinter) duplex = m_printDevice.defaultDuplexMode(); duplexRequestedExplicitly = false; } - QPrint::ColorMode colorMode = grayscale ? QPrint::GrayScale : QPrint::Color; - if (!m_printDevice.supportedColorModes().contains(colorMode)) - grayscale = m_printDevice.defaultColorMode() == QPrint::GrayScale; + QPrint::ColorMode colorMode = static_cast<QPrint::ColorMode>(printerColorMode()); + if (!m_printDevice.supportedColorModes().contains(colorMode)) { + colorModel = (m_printDevice.defaultColorMode() == QPrint::GrayScale) + ? QPdfEngine::ColorModel::Grayscale + : QPdfEngine::ColorModel::RGB; + } // Get the equivalent page size for this printer as supported names may be different if (m_printDevice.supportedPageSize(m_pageLayout.pageSize()).isValid()) diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp index c8077bdbf1..6578d8a558 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp +++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp @@ -11,14 +11,14 @@ #include <QtPrintSupport/QPrinterInfo> -#if QT_CONFIG(dialogbuttonbox) +#if QT_CONFIG(cupspassworddialog) #include <QGuiApplication> #include <QDialog> #include <QDialogButtonBox> #include <QFormLayout> #include <QLabel> #include <QLineEdit> -#endif // QT_CONFIG(dialogbuttonbox) +#endif // QT_CONFIG(cupspassworddialog) #include <cups/ppd.h> #ifndef QT_LINUXBASE // LSB merges everything into cups.h @@ -27,7 +27,7 @@ QT_BEGIN_NAMESPACE -#if QT_CONFIG(dialogbuttonbox) +#if QT_CONFIG(cupspassworddialog) static const char *getPasswordCB(const char */*prompt*/, http_t *http, const char */*method*/, const char *resource, void */*user_data*/) { // cups doesn't free the const char * we return so keep around @@ -57,7 +57,7 @@ static const char *getPasswordCB(const char */*prompt*/, http_t *http, const cha QString resourceString = QString::fromLocal8Bit(resource); if (resourceString.startsWith(QStringLiteral("/printers/"))) - resourceString = resourceString.mid(QStringLiteral("/printers/").length()); + resourceString = resourceString.mid(QStringLiteral("/printers/").size()); QLabel *label = new QLabel(); if (hostname == QStringLiteral("localhost")) { @@ -89,16 +89,16 @@ static const char *getPasswordCB(const char */*prompt*/, http_t *http, const cha return password.constData(); } -#endif // QT_CONFIG(dialogbuttonbox) +#endif // QT_CONFIG(cupspassworddialog) QCupsPrinterSupport::QCupsPrinterSupport() : QPlatformPrinterSupport() { -#if QT_CONFIG(dialogbuttonbox) +#if QT_CONFIG(cupspassworddialog) // Only show password dialog if GUI application if (qobject_cast<QGuiApplication*>(QCoreApplication::instance())) cupsSetPasswordCB2(getPasswordCB, nullptr /* user_data */ ); -#endif // QT_CONFIG(dialogbuttonbox) +#endif // QT_CONFIG(cupspassworddialog) } QCupsPrinterSupport::~QCupsPrinterSupport() @@ -129,12 +129,9 @@ QStringList QCupsPrinterSupport::availablePrintDeviceIds() const list.reserve(count); for (int i = 0; i < count; ++i) { QString printerId = QString::fromLocal8Bit(dests[i].name); - if (dests[i].instance) { + if (dests[i].instance) printerId += u'/' + QString::fromLocal8Bit(dests[i].instance); - list.append(printerId); - } else if (cupsGetOption("printer-uri-supported", dests[i].num_options, dests[i].options)) { - list.append(printerId); - } + list.append(printerId); } cupsFreeDests(count, dests); return list; diff --git a/src/plugins/printsupport/cups/qppdprintdevice.cpp b/src/plugins/printsupport/cups/qppdprintdevice.cpp index 487b02784e..95813c90fa 100644 --- a/src/plugins/printsupport/cups/qppdprintdevice.cpp +++ b/src/plugins/printsupport/cups/qppdprintdevice.cpp @@ -428,7 +428,7 @@ bool QPpdPrintDevice::setProperty(QPrintDevice::PrintDevicePropertyKey key, cons { if (key == PDPK_PpdOption) { const QStringList values = value.toStringList(); - if (values.count() == 2) { + if (values.size() == 2) { ppdMarkOption(m_ppd, values[0].toLatin1(), values[1].toLatin1()); return true; } @@ -441,7 +441,7 @@ bool QPpdPrintDevice::isFeatureAvailable(QPrintDevice::PrintDevicePropertyKey ke { if (key == PDPK_PpdChoiceIsInstallableConflict) { const QStringList values = params.toStringList(); - if (values.count() == 2) + if (values.size() == 2) return ppdInstallableConflict(m_ppd, values[0].toLatin1(), values[1].toLatin1()); } |