From 319f3c89b15aa3978877df976aa2bd740082ff50 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 21 Apr 2015 15:00:13 +0200 Subject: Add debug operator for QPrinterInfo. Add formatting helper to private class QPrintDevice and use that to implement debug operators for QPrintDevice and QPrinterInfo. Sample output: (QPrinterInfo(id="HP_Color_LaserJet_CM6030_MFP", state=0, name="HP Color LaserJet CM6030 MFP", makeAndModel="HP Color LaserJet CM6030 MFP Postscript (recommended)", default, defaultPageSize=QPageSize("Letter", "Letter", 612x792pt, 2), supportsCustomPageSizes, physicalPageSize=(278, 396)..(907, 1296), defaultResolution=600, defaultDuplexMode=0, defaultColorMode=1, supportedMimeTypes=( "application/pdf" "application/postscript" "image/gif" "image/png" "image/jpeg" "image/tiff" "text/html" "text/plain"))) Task-number: QTBUG-44991 Change-Id: I187414d2f68871e38ace0bd66661d2e37712f662 Reviewed-by: Andy Shaw --- src/printsupport/kernel/qprintdevice.cpp | 55 ++++++++++++++++++++++++++++++++ src/printsupport/kernel/qprintdevice_p.h | 8 +++++ src/printsupport/kernel/qprinterinfo.cpp | 17 ++++++++++ src/printsupport/kernel/qprinterinfo.h | 4 +++ 4 files changed, 84 insertions(+) (limited to 'src/printsupport') diff --git a/src/printsupport/kernel/qprintdevice.cpp b/src/printsupport/kernel/qprintdevice.cpp index e645442be2..7c18b53e09 100644 --- a/src/printsupport/kernel/qprintdevice.cpp +++ b/src/printsupport/kernel/qprintdevice.cpp @@ -34,6 +34,8 @@ #include "qprintdevice_p.h" #include "qplatformprintdevice.h" +#include + QT_BEGIN_NAMESPACE #ifndef QT_NO_PRINTER @@ -244,6 +246,59 @@ QList QPrintDevice::supportedMimeTypes() const } #endif // QT_NO_MIMETYPE +# ifndef QT_NO_DEBUG_STREAM +void QPrintDevice::format(QDebug debug) const +{ + QDebugStateSaver saver(debug); + debug.noquote(); + debug.nospace(); + if (isValid()) { + const QString deviceId = id(); + const QString deviceName = name(); + debug << "id=\"" << deviceId << "\", state=" << state(); + if (!deviceName.isEmpty() && deviceName != deviceId) + debug << ", name=\"" << deviceName << '"'; + if (!location().isEmpty()) + debug << ", location=\"" << location() << '"'; + debug << ", makeAndModel=\"" << makeAndModel() << '"'; + if (isDefault()) + debug << ", default"; + if (isRemote()) + debug << ", remote"; + debug << ", defaultPageSize=" << defaultPageSize(); + if (supportsCustomPageSizes()) + debug << ", supportsCustomPageSizes"; + debug << ", physicalPageSize=("; + QtDebugUtils::formatQSize(debug, minimumPhysicalPageSize()); + debug << ")..("; + QtDebugUtils::formatQSize(debug, maximumPhysicalPageSize()); + debug << "), defaultResolution=" << defaultResolution() + << ", defaultDuplexMode=" << defaultDuplexMode() + << ", defaultColorMode="<< defaultColorMode(); +# ifndef QT_NO_MIMETYPE + const QList mimeTypes = supportedMimeTypes(); + if (const int mimeTypeCount = mimeTypes.size()) { + debug << ", supportedMimeTypes=("; + for (int i = 0; i < mimeTypeCount; ++i) + debug << " \"" << mimeTypes.at(i).name() << '"'; + debug << ')'; + } +# endif // !QT_NO_MIMETYPE + } else { + debug << "null"; + } +} + +QDebug operator<<(QDebug debug, const QPrintDevice &p) +{ + QDebugStateSaver saver(debug); + debug.nospace(); + debug << "QPrintDevice("; + p.format(debug); + debug << ')'; + return debug; +} +# endif // QT_NO_DEBUG_STREAM #endif // QT_NO_PRINTER QT_END_NAMESPACE diff --git a/src/printsupport/kernel/qprintdevice_p.h b/src/printsupport/kernel/qprintdevice_p.h index 6117239ac7..ad55cded0e 100644 --- a/src/printsupport/kernel/qprintdevice_p.h +++ b/src/printsupport/kernel/qprintdevice_p.h @@ -57,6 +57,7 @@ QT_BEGIN_NAMESPACE class QPlatformPrintDevice; class QMarginsF; class QMimeType; +class QDebug; class Q_PRINTSUPPORT_EXPORT QPrintDevice { @@ -127,6 +128,10 @@ public: QList supportedMimeTypes() const; #endif +# ifndef QT_NO_DEBUG_STREAM + void format(QDebug debug) const; +# endif + private: friend class QPlatformPrinterSupport; friend class QPlatformPrintDevice; @@ -136,6 +141,9 @@ private: Q_DECLARE_SHARED(QPrintDevice) +# ifndef QT_NO_DEBUG_STREAM +Q_PRINTSUPPORT_EXPORT QDebug operator<<(QDebug debug, const QPrintDevice &); +# endif #endif // QT_NO_PRINTER QT_END_NAMESPACE diff --git a/src/printsupport/kernel/qprinterinfo.cpp b/src/printsupport/kernel/qprinterinfo.cpp index 33d67e3a55..ad488a10ed 100644 --- a/src/printsupport/kernel/qprinterinfo.cpp +++ b/src/printsupport/kernel/qprinterinfo.cpp @@ -31,6 +31,8 @@ #ifndef QT_NO_PRINTER +#include + #include #include @@ -469,6 +471,21 @@ QPrinterInfo QPrinterInfo::printerInfo(const QString &printerName) return QPrinterInfo(printerName); } +# ifndef QT_NO_DEBUG_STREAM +QDebug operator<<(QDebug debug, const QPrinterInfo &p) +{ + QDebugStateSaver saver(debug); + debug.nospace(); + debug << "QPrinterInfo("; + if (p.isNull()) + debug << "null"; + else + p.d_ptr->m_printDevice.format(debug); + debug << ')'; + return debug; +} +# endif // !QT_NO_DEBUG_STREAM + QT_END_NAMESPACE #endif // QT_NO_PRINTER diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h index f13dbc5cd6..39e44d4a0c 100644 --- a/src/printsupport/kernel/qprinterinfo.h +++ b/src/printsupport/kernel/qprinterinfo.h @@ -46,6 +46,7 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_PRINTER class QPrinterInfoPrivate; class QPrinterInfoPrivateDeleter; +class QDebug; class Q_PRINTSUPPORT_EXPORT QPrinterInfo { public: @@ -98,6 +99,9 @@ private: private: friend class QPlatformPrinterSupport; +# ifndef QT_NO_DEBUG_STREAM + friend Q_PRINTSUPPORT_EXPORT QDebug operator<<(QDebug debug, const QPrinterInfo &); +# endif Q_DECLARE_PRIVATE(QPrinterInfo) QScopedPointer d_ptr; }; -- cgit v1.2.3