diff options
author | John Layt <jlayt@kde.org> | 2012-05-14 20:17:16 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-24 09:48:27 +0200 |
commit | 36f469bdb1c705f0082610a4fe9fd88b90accd24 (patch) | |
tree | fa96b0b3091d1730966a20d142add5d12d87d400 /src/plugins/platforms/cocoa | |
parent | ce5c1db2d3db7d7c7af28e9053ca591f76c6101c (diff) |
QtPrintSupport - Modify Platform Plugin QPrinterInfo api
Change the way the printsupport plugin creates QPrinterInfo
objects, provide platform api to return a named printer, and
expose this as static public api in QPrinterInfo.
Only the Mac plugin used the old api, the other plugins will
have direct support added in separate commits, but will use
the default implementation for now.
Change-Id: I7d6b6556eb39919cfb15bc0e814afbaf13c5712c
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaprintersupport.h | 6 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaprintersupport.mm | 23 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.h b/src/plugins/platforms/cocoa/qcocoaprintersupport.h index 88a83a4f4e..c6790c3e15 100644 --- a/src/plugins/platforms/cocoa/qcocoaprintersupport.h +++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.h @@ -44,6 +44,8 @@ #include <qpa/qplatformprintersupport.h> +#include "qt_mac_p.h" + class QCocoaPrinterSupport : public QPlatformPrinterSupport { public: @@ -55,6 +57,10 @@ public: QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const Q_DECL_OVERRIDE; QList<QPrinterInfo> availablePrinters() Q_DECL_OVERRIDE; + QPrinterInfo printerInfo(const QString &printerName) Q_DECL_OVERRIDE; + +private: + QPrinterInfo printerInfoFromPMPrinter(const PMPrinter &printer); }; #endif // QCOCOAPRINTERSUPPORT_H diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm index a6eb5ddeb8..2ded23ac05 100644 --- a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm +++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm @@ -44,6 +44,7 @@ #include <QtPrintSupport/QPrinter> #include <QtPrintSupport/QPrinterInfo> +#include <private/qprinterinfo_p.h> QCocoaPrinterSupport::QCocoaPrinterSupport() { } @@ -108,9 +109,27 @@ QList<QPrinterInfo> QCocoaPrinterSupport::availablePrinters() CFIndex count = CFArrayGetCount(printerList); for (CFIndex i = 0; i < count; ++i) { PMPrinter printer = static_cast<PMPrinter>(const_cast<void *>(CFArrayGetValueAtIndex(printerList, i))); - QString printerName = QCFString::toQString(PMPrinterGetID(printer)); - returnValue += QPlatformPrinterSupport::printerInfo(printerName, PMPrinterIsDefault(printer)); + returnValue += printerInfoFromPMPrinter(printer); } } return returnValue; } + +QPrinterInfo QCocoaPrinterSupport::printerInfo(const QString &printerName) +{ + PMPrinter printer = PMPrinterCreateFromPrinterID(QCFString::toCFStringRef(printerName)); + QPrinterInfo pi = printerInfoFromPMPrinter(printer); + PMRelease(printer); + return pi; +} + +QPrinterInfo QCocoaPrinterSupport::printerInfoFromPMPrinter(const PMPrinter &printer) +{ + if (!printer) + return QPrinterInfo(); + + QPrinterInfo pi = QPrinterInfo(QCFString::toQString(PMPrinterGetID(printer))); + pi.d_func()->isDefault = PMPrinterIsDefault(printer); + + return pi; +} |