summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoaprintersupport.h6
-rw-r--r--src/plugins/platforms/cocoa/qcocoaprintersupport.mm23
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;
+}