summaryrefslogtreecommitdiffstats
path: root/src/plugins/printsupport/cups/qcupsprintersupport.cpp
diff options
context:
space:
mode:
authorJohn Layt <jlayt@kde.org>2013-12-12 18:44:27 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-17 13:45:37 +0100
commit6826912f605f31c8e13bfd84127fd6676602d5f1 (patch)
tree5d7fb3137f42ff664b4a9be42114b43f701d4434 /src/plugins/printsupport/cups/qcupsprintersupport.cpp
parent3588f05f1010c5ab9663682c71a3e6fe549603a9 (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.cpp41
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));