diff options
author | John Layt <jlayt@kde.org> | 2013-12-12 18:44:27 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-17 13:45:37 +0100 |
commit | 6826912f605f31c8e13bfd84127fd6676602d5f1 (patch) | |
tree | 5d7fb3137f42ff664b4a9be42114b43f701d4434 /src/plugins/printsupport/cups/qcupsprintersupport.cpp | |
parent | 3588f05f1010c5ab9663682c71a3e6fe549603a9 (diff) |
QPlatformPrintDevice - Add CUPS implementation
Add support to the CUPS print plugin for the new QPlatformPrintDevice
class. Note this is called QPpdPrintDevicePrivate as it uses the CUPS
PPD support which is deprecated from CUPS 1.6 onwards. A different
plugin will be implemented for the CUPS 1.6 support.
Change-Id: I26d005f90842d9c6262341171ef157536d28cc5d
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 | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp index b9f0c394f8..0db448f4bf 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp +++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 John Layt <jlayt@kde.org> ** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. @@ -44,7 +45,9 @@ #ifndef QT_NO_PRINTER #include "qcupsprintengine_p.h" +#include "qppdprintdevice.h" #include <private/qprinterinfo_p.h> +#include <private/qprintdevice_p.h> #include <QtPrintSupport/QPrinterInfo> @@ -80,6 +83,44 @@ QPaintEngine *QCupsPrinterSupport::createPaintEngine(QPrintEngine *engine, QPrin return static_cast<QCupsPrintEngine *>(engine); } +QPrintDevice QCupsPrinterSupport::createPrintDevice(const QString &id) +{ + return QPlatformPrinterSupport::createPrintDevice(new QPpdPrintDevice(id)); +} + +QStringList QCupsPrinterSupport::availablePrintDeviceIds() const +{ + QStringList list; + cups_dest_t *dests; + int count = cupsGetDests(&dests); + for (int i = 0; i < count; ++i) { + QString printerId = QString::fromLocal8Bit(dests[i].name); + if (dests[i].instance) + printerId += QLatin1Char('/') + QString::fromLocal8Bit(dests[i].instance); + list.append(printerId); + } + cupsFreeDests(count, dests); + return list; +} + +QString QCupsPrinterSupport::defaultPrintDeviceId() const +{ + QString printerId; + cups_dest_t *dests; + int count = cupsGetDests(&dests); + for (int i = 0; i < count; ++i) { + if (dests[i].is_default) { + printerId = QString::fromLocal8Bit(dests[i].name); + if (dests[i].instance) { + printerId += QLatin1Char('/') + QString::fromLocal8Bit(dests[i].instance); + break; + } + } + } + cupsFreeDests(count, dests); + return printerId; +} + QList<QPrinter::PaperSize> QCupsPrinterSupport::supportedPaperSizes(const QPrinterInfo &printerInfo) const { return QCUPSSupport::getCupsPrinterPaperSizes(printerIndex(printerInfo)); |