diff options
author | John Layt <jlayt@kde.org> | 2012-05-14 21:02:13 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-29 23:48:15 +0200 |
commit | 44f7df439f729aff50f9d1b9dbba06391f151604 (patch) | |
tree | fbe08fcf66c619b0677d6be33b8b6fbc10d4002b | |
parent | b7104d6645e25892d85e6e0aad6ddebbd2babdc0 (diff) |
QtPrintSupport - Add QPrinterInfo api for more printer details
A previous commit changed the Mac behaviour for printerName()
from returning the CUPS Description to returning the CUPS Name.
In case anyone was relying on this for a human-readable name
add new api to return the CUPS Description. Also add the
Location and Make and Model which will be used in the Unix
print dialog instead of directly calling CUPS.
Change-Id: I9901bf8d6368466adf111580f5db5a3f01ca9170
Reviewed-by: Teemu Katajisto <teemu.katajisto@digia.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: John Layt <jlayt@kde.org>
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaprintersupport.mm | 6 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinterinfo.cpp | 41 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinterinfo.h | 5 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinterinfo_p.h | 3 | ||||
-rw-r--r-- | tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp | 9 |
5 files changed, 63 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm index 2ded23ac05..b77d5a20ea 100644 --- a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm +++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm @@ -129,6 +129,12 @@ QPrinterInfo QCocoaPrinterSupport::printerInfoFromPMPrinter(const PMPrinter &pri return QPrinterInfo(); QPrinterInfo pi = QPrinterInfo(QCFString::toQString(PMPrinterGetID(printer))); + + pi.d_func()->description = QCFString::toQString(PMPrinterGetName(printer)); + pi.d_func()->location = QCFString::toQString(PMPrinterGetLocation(printer)); + CFStringRef makeAndModel; + PMPrinterGetMakeAndModelName(printer, &makeAndModel); + pi.d_func()->makeAndModel = QCFString::toQString(makeAndModel); pi.d_func()->isDefault = PMPrinterIsDefault(printer); return pi; diff --git a/src/printsupport/kernel/qprinterinfo.cpp b/src/printsupport/kernel/qprinterinfo.cpp index dc60d7a50f..5ce0165a15 100644 --- a/src/printsupport/kernel/qprinterinfo.cpp +++ b/src/printsupport/kernel/qprinterinfo.cpp @@ -137,6 +137,9 @@ QPrinterInfo &QPrinterInfo::operator=(const QPrinterInfo &other) /*! Returns the name of the printer. + This is a unique id to identify the printer and may not be human-readable. + + \sa QPrinterInfo::description() \sa QPrinter::setPrinterName() */ QString QPrinterInfo::printerName() const @@ -146,6 +149,44 @@ QString QPrinterInfo::printerName() const } /*! + \fn QString QPrinterInfo::description() + \since 5.0 + + Returns the human-readable description of the printer. + + \sa QPrinterInfo::printerName() +*/ +QString QPrinterInfo::description() const +{ + const Q_D(QPrinterInfo); + return d->description; +} + +/*! + \fn QString QPrinterInfo::location() + \since 5.0 + + Returns the human-readable location of the printer. +*/ +QString QPrinterInfo::location() const +{ + const Q_D(QPrinterInfo); + return d->location; +} + +/*! + \fn QString QPrinterInfo::makeAndModel() + \since 5.0 + + Returns the human-readable make and model of the printer. +*/ +QString QPrinterInfo::makeAndModel() const +{ + const Q_D(QPrinterInfo); + return d->makeAndModel; +} + +/*! Returns whether this QPrinterInfo object holds a printer definition. An empty QPrinterInfo object could result for example from calling diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h index 8b3ab448c8..634b68ceb0 100644 --- a/src/printsupport/kernel/qprinterinfo.h +++ b/src/printsupport/kernel/qprinterinfo.h @@ -65,8 +65,13 @@ public: QPrinterInfo &operator=(const QPrinterInfo &other); QString printerName() const; + QString description() const; + QString location() const; + QString makeAndModel() const; + bool isNull() const; bool isDefault() const; + QList<QPrinter::PaperSize> supportedPaperSizes() const; static QList<QPrinterInfo> availablePrinters(); diff --git a/src/printsupport/kernel/qprinterinfo_p.h b/src/printsupport/kernel/qprinterinfo_p.h index ee139762c4..6e1c088f79 100644 --- a/src/printsupport/kernel/qprinterinfo_p.h +++ b/src/printsupport/kernel/qprinterinfo_p.h @@ -77,6 +77,9 @@ public: static QPrinterInfoPrivate shared_null; QString name; + QString description; + QString location; + QString makeAndModel; bool isDefault; #if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) diff --git a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp index 826cc73fc3..3427a122ee 100644 --- a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp +++ b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp @@ -296,6 +296,9 @@ void tst_QPrinterInfo::testAssignment() QCOMPARE(copy.printerName(), printers.at(i).printerName()); QCOMPARE(copy.isNull(), printers.at(i).isNull()); QCOMPARE(copy.isDefault(), printers.at(i).isDefault()); + QCOMPARE(copy.description(), printers.at(i).description()); + QCOMPARE(copy.location(), printers.at(i).location()); + QCOMPARE(copy.makeAndModel(), printers.at(i).makeAndModel()); QCOMPARE(copy.supportedPaperSizes(), printers.at(i).supportedPaperSizes()); } } @@ -308,9 +311,13 @@ void tst_QPrinterInfo::namedPrinter() foreach (const QPrinterInfo &pi, printers) { QPrinterInfo pi2 = QPrinterInfo::printerInfo(pi.printerName()); - qDebug() << "Printer: " << pi2.printerName() << " : " + qDebug() << "Printer: " << pi2.printerName() << " : " << pi2.description() << " : " + << pi2.location() << " : " << pi2.makeAndModel() << " : " << pi2.isNull() << " : " << pi2.isDefault(); QCOMPARE(pi2.printerName(), pi.printerName()); + QCOMPARE(pi2.description(), pi.description()); + QCOMPARE(pi2.location(), pi.location()); + QCOMPARE(pi2.makeAndModel(), pi.makeAndModel()); QCOMPARE(pi2.supportedPaperSizes(), pi.supportedPaperSizes()); QCOMPARE(pi2.isNull(), pi.isNull()); QCOMPARE(pi2.isDefault(), pi.isDefault()); |