summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorJohn Layt <jlayt@kde.org>2013-12-18 21:51:12 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-17 13:45:44 +0100
commitb0428926cece7bc362bc24c2eb1621b9fef737c7 (patch)
treee5497f1b5c2f7bdacb5e7e0ba9898f9423884e26 /src/plugins/platforms
parentcf8b8340f3d283830a6aca2f708e839bb70d6d57 (diff)
QPrinterInfo - Switch to QPlatformPrintDevice
Change the QPrinterInfo implementation to use QPlatformPrintDevice as the backend. Remove all the old QPrinterInfo related code from the QPA plugin. Add public api to QPrinterInfo to support some features from QPlatformPrintDevice. [ChangeLog][QtPrintSupport][QPrinterInfo] Added new public api for isRemote(), state(), defaultPageSize(), supportedPageSizes(), supportsCustomPageSizes(), minimumPhysicalPageSize(), maximumPhysicalPageSize(), supportedResolutions(), availablePrinterNames(), and defaultPrinterName(). The use of availablePrinters() is discouraged due to performance concerns. Task-number: QTBUG-35248 Change-Id: Ic38323a930549ad67bf04a1a6bb43d623dfe6a33 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/cocoa/qcocoaprintersupport.h8
-rw-r--r--src/plugins/platforms/cocoa/qcocoaprintersupport.mm107
-rw-r--r--src/plugins/platforms/cocoa/qprintengine_mac.mm5
3 files changed, 4 insertions, 116 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.h b/src/plugins/platforms/cocoa/qcocoaprintersupport.h
index 4c6a99ec9d..61c1bfd3ec 100644
--- a/src/plugins/platforms/cocoa/qcocoaprintersupport.h
+++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.h
@@ -55,18 +55,10 @@ public:
QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE;
QPaintEngine *createPaintEngine(QPrintEngine *, QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE;
- QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const Q_DECL_OVERRIDE;
- QList<QPair<QString, QSizeF> > supportedSizesWithNames(const QPrinterInfo &) const Q_DECL_OVERRIDE;
QPrintDevice createPrintDevice(const QString &id) Q_DECL_OVERRIDE;
QStringList availablePrintDeviceIds() const Q_DECL_OVERRIDE;
QString defaultPrintDeviceId() 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 // QT_NO_PRINTER
diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm
index 70c83498e1..5853135dfb 100644
--- a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm
+++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm
@@ -42,13 +42,11 @@
#include "qcocoaprintersupport.h"
#ifndef QT_NO_PRINTER
+
#include "qcocoaprintdevice.h"
#include "qprintengine_mac_p.h"
-#include <QtPrintSupport/QPrinter>
-#include <QtPrintSupport/QPrinterInfo>
#include <private/qprinterinfo_p.h>
-#include <private/qprintdevice_p.h>
QCocoaPrinterSupport::QCocoaPrinterSupport()
{ }
@@ -104,107 +102,4 @@ QString QCocoaPrinterSupport::defaultPrintDeviceId() const
return QString();
}
-QList<QPrinter::PaperSize> QCocoaPrinterSupport::supportedPaperSizes(const QPrinterInfo &printerInfo) const
-{
- QList<QPrinter::PaperSize> returnValue;
- if (printerInfo.isNull())
- return returnValue;
-
- PMPrinter printer = PMPrinterCreateFromPrinterID(QCFString::toCFStringRef(printerInfo.printerName()));
- if (!printer)
- return returnValue;
-
- CFArrayRef array;
- if (PMPrinterGetPaperList(printer, &array) != noErr) {
- PMRelease(printer);
- return returnValue;
- }
-
- CFIndex count = CFArrayGetCount(array);
- for (CFIndex i = 0; i < count; ++i) {
- PMPaper paper = static_cast<PMPaper>(const_cast<void *>(CFArrayGetValueAtIndex(array, i)));
- double width, height;
- if (PMPaperGetWidth(paper, &width) == noErr
- && PMPaperGetHeight(paper, &height) == noErr) {
- // width and height are in points, convertQSizeFToPaperSize() expects millimeters
- static const double OnePointInMillimeters = 1.0 / 72.0 * 25.4;
- QSizeF size(width * OnePointInMillimeters, height * OnePointInMillimeters);
- returnValue += QPlatformPrinterSupport::convertQSizeFToPaperSize(size);
- }
- }
-
- PMRelease(printer);
-
- return returnValue;
-}
-
-QList<QPrinterInfo> QCocoaPrinterSupport::availablePrinters()
-{
- QList<QPrinterInfo> returnValue;
- QCFType<CFArrayRef> printerList;
- if (PMServerCreatePrinterList(kPMServerLocal, &printerList) == noErr) {
- CFIndex count = CFArrayGetCount(printerList);
- for (CFIndex i = 0; i < count; ++i) {
- PMPrinter printer = static_cast<PMPrinter>(const_cast<void *>(CFArrayGetValueAtIndex(printerList, i)));
- 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();
-
- QString name = QCFString::toQString(PMPrinterGetID(printer));
- QString description = QCFString::toQString(PMPrinterGetName(printer));
- QString location = QCFString::toQString(PMPrinterGetLocation(printer));
- CFStringRef cfMakeAndModel;
- PMPrinterGetMakeAndModelName(printer, &cfMakeAndModel);
- QString makeAndModel = QCFString::toQString(cfMakeAndModel);
- bool isDefault = PMPrinterIsDefault(printer);
-
- return createPrinterInfo(name, description, location, makeAndModel, isDefault, 0);
-}
-
-QList<QPair<QString, QSizeF> > QCocoaPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const
-{
- QList<QPair<QString, QSizeF> > returnValue;
- if (printerInfo.isNull())
- return returnValue;
-
- PMPrinter printer = PMPrinterCreateFromPrinterID(QCFString::toCFStringRef(printerInfo.printerName()));
- if (!printer)
- return returnValue;
-
- CFArrayRef array;
- if (PMPrinterGetPaperList(printer, &array) != noErr) {
- PMRelease(printer);
- return returnValue;
- }
-
- int count = CFArrayGetCount(array);
- for (int i = 0; i < count; ++i) {
- PMPaper paper = static_cast<PMPaper>(const_cast<void *>(CFArrayGetValueAtIndex(array, i)));
- double width, height;
- if (PMPaperGetWidth(paper, &width) == noErr && PMPaperGetHeight(paper, &height) == noErr) {
- static const double OnePointInMillimeters = 1.0 / 72.0 * 25.4;
- QCFString paperName;
- if (PMPaperCreateLocalizedName(paper, printer, &paperName) == noErr)
- returnValue.append(qMakePair(QString(paperName), QSizeF(width * OnePointInMillimeters, height * OnePointInMillimeters)));
- }
- }
- PMRelease(printer);
- return returnValue;
-}
-
#endif //QT_NO_PRINTER
diff --git a/src/plugins/platforms/cocoa/qprintengine_mac.mm b/src/plugins/platforms/cocoa/qprintengine_mac.mm
index 3e92a45a62..f34fadd8a1 100644
--- a/src/plugins/platforms/cocoa/qprintengine_mac.mm
+++ b/src/plugins/platforms/cocoa/qprintengine_mac.mm
@@ -41,6 +41,7 @@
#include "qprintengine_mac_p.h"
#include <quuid.h>
+#include <QtGui/qpagesize.h>
#include <QtCore/qcoreapplication.h>
#include <qpa/qplatformprintersupport.h>
@@ -148,7 +149,7 @@ void QMacPrintEnginePrivate::setPaperSize(QPrinter::PaperSize ps)
PMPrinter printer;
if (PMSessionGetCurrentPrinter(session(), &printer) == noErr) {
if (ps != QPrinter::Custom) {
- QSizeF newSize = QPlatformPrinterSupport::convertPaperSizeToQSizeF(ps);
+ QSizeF newSize = QPageSize(QPageSize::PageSizeId(ps)).size(QPageSize::Millimeter);
QCFType<CFArrayRef> formats;
if (PMSessionCreatePageFormatList(session(), printer, &formats) == noErr) {
CFIndex total = CFArrayGetCount(formats);
@@ -197,7 +198,7 @@ QPrinter::PaperSize QMacPrintEnginePrivate::paperSize() const
PMRect paper;
PMGetUnadjustedPaperRect(format(), &paper);
QSizeF sizef((paper.right - paper.left) / 72.0 * 25.4, (paper.bottom - paper.top) / 72.0 * 25.4);
- return QPlatformPrinterSupport::convertQSizeFToPaperSize(sizef);
+ return QPrinter::PaperSize(QPageSize(sizef, QPageSize::Millimeter).id());
}
void QMacPrintEnginePrivate::setPaperName(const QString &name)