diff options
author | John Layt <jlayt@kde.org> | 2013-12-18 21:51:12 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-17 13:45:44 +0100 |
commit | b0428926cece7bc362bc24c2eb1621b9fef737c7 (patch) | |
tree | e5497f1b5c2f7bdacb5e7e0ba9898f9423884e26 /src/plugins/printsupport/cups/qcupsprintersupport.cpp | |
parent | cf8b8340f3d283830a6aca2f708e839bb70d6d57 (diff) |
QPrinterInfo - Switch to QPlatformPrintDevice
Change the QPrinterInfo implementation to use QPlatformPrintDevice as
the backend. Remove all the old QPrinterInfo related code from the
QPA plugin. Add public api to QPrinterInfo to support some features
from QPlatformPrintDevice.
[ChangeLog][QtPrintSupport][QPrinterInfo] Added new public api for
isRemote(), state(), defaultPageSize(), supportedPageSizes(),
supportsCustomPageSizes(), minimumPhysicalPageSize(),
maximumPhysicalPageSize(), supportedResolutions(),
availablePrinterNames(), and defaultPrinterName(). The use of
availablePrinters() is discouraged due to performance concerns.
Task-number: QTBUG-35248
Change-Id: Ic38323a930549ad67bf04a1a6bb43d623dfe6a33
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/plugins/printsupport/cups/qcupsprintersupport.cpp')
-rw-r--r-- | src/plugins/printsupport/cups/qcupsprintersupport.cpp | 90 |
1 files changed, 2 insertions, 88 deletions
diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp index 0db448f4bf..b2abb07fc7 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp +++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp @@ -58,18 +58,13 @@ QT_BEGIN_NAMESPACE -QCupsPrinterSupport::QCupsPrinterSupport() : QPlatformPrinterSupport(), - m_cups(QLatin1String("cups"), 2), - m_cupsPrinters(0), - m_cupsPrintersCount(0) +QCupsPrinterSupport::QCupsPrinterSupport() + : QPlatformPrinterSupport() { - loadCups(); - loadCupsPrinters(); } QCupsPrinterSupport::~QCupsPrinterSupport() { - freeCupsPrinters(); } QPrintEngine *QCupsPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode) @@ -121,87 +116,6 @@ QString QCupsPrinterSupport::defaultPrintDeviceId() const return printerId; } -QList<QPrinter::PaperSize> QCupsPrinterSupport::supportedPaperSizes(const QPrinterInfo &printerInfo) const -{ - return QCUPSSupport::getCupsPrinterPaperSizes(printerIndex(printerInfo)); -} - -QList<QPair<QString, QSizeF> > QCupsPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const -{ - return QCUPSSupport::getCupsPrinterPaperSizesWithNames(printerIndex(printerInfo)); -} - -void QCupsPrinterSupport::loadCups() -{ - cupsGetDests = (CupsGetDests) m_cups.resolve("cupsGetDests"); - cupsFreeDests = (CupsFreeDests) m_cups.resolve("cupsFreeDests"); - cupsGetOption = (CupsGetOption) m_cups.resolve("cupsGetOption"); -} - -void QCupsPrinterSupport::freeCupsPrinters() -{ - if (cupsFreeDests && m_cupsPrintersCount) { - cupsFreeDests(m_cupsPrintersCount, m_cupsPrinters); - m_cupsPrintersCount = 0; - m_cupsPrinters = 0; - } -} - -void QCupsPrinterSupport::loadCupsPrinters() -{ - freeCupsPrinters(); - m_printers.clear(); - - if (cupsGetDests) - m_cupsPrintersCount = cupsGetDests(&m_cupsPrinters); - - for (int i = 0; i < m_cupsPrintersCount; ++i) { - QString printerName = QString::fromLocal8Bit(m_cupsPrinters[i].name); - if (m_cupsPrinters[i].instance) - printerName += QLatin1Char('/') + QString::fromLocal8Bit(m_cupsPrinters[i].instance); - QString description = cupsOption(i, "printer-info"); - QString location = cupsOption(i, "printer-location"); - QString makeAndModel = cupsOption(i, "printer-make-and-model"); - QPrinterInfo printer = createPrinterInfo(printerName, description, location, makeAndModel, - m_cupsPrinters[i].is_default, i); - m_printers.append(printer); - } -} - -QList<QPrinterInfo> QCupsPrinterSupport::availablePrinters() -{ - loadCupsPrinters(); - return QPlatformPrinterSupport::availablePrinters(); -} - -QString QCupsPrinterSupport::printerOption(const QPrinterInfo &printer, const QString &key) const -{ - return cupsOption(printerIndex(printer), key); -} - -QString QCupsPrinterSupport::cupsOption(int i, const QString &key) const -{ - QString value; - if (i > -1 && i < m_cupsPrintersCount && cupsGetOption) - value = cupsGetOption(key.toLocal8Bit(), m_cupsPrinters[i].num_options, m_cupsPrinters[i].options); - return value; -} - -PrinterOptions QCupsPrinterSupport::printerOptions(const QPrinterInfo &printer) const -{ - PrinterOptions options; - int p = printerIndex(printer); - if (p <= -1 || p >= m_cupsPrintersCount) - return options; - int numOptions = m_cupsPrinters[p].num_options; - for (int i = 0; i < numOptions; ++i) { - QString name = m_cupsPrinters[p].options[i].name; - QString value = m_cupsPrinters[p].options[i].value; - options.insert(name, value); - } - return options; -} - QT_END_NAMESPACE #endif // QT_NO_PRINTER |