diff options
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; +} |