1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
// Copyright (C) 2014 John Layt <jlayt@kde.org>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include <qpa/qplatformprintplugin.h>
#include <qpa/qplatformprintersupport.h>
#include <private/qprintdevice_p.h>
#include <QApplication>
#include <QMimeType>
#include <QDebug>
/*
This test is designed to dump the current printer configuration details
to output, to assist in debugging of print device problems.
*/
static QString stateToString(QPrint::DeviceState state)
{
switch (state) {
case QPrint::Idle:
return QStringLiteral("Idle");
case QPrint::Active:
return QStringLiteral("Active");
case QPrint::Aborted:
return QStringLiteral("Aborted");
case QPrint::Error:
return QStringLiteral("Error");
}
return QStringLiteral("Invalid DeviceState");
}
static QString duplexToString(QPrint::DuplexMode duplex)
{
switch (duplex) {
case QPrint::DuplexNone:
return QStringLiteral("DuplexNone");
case QPrint::DuplexAuto:
return QStringLiteral("DuplexAuto");
case QPrint::DuplexLongSide:
return QStringLiteral("DuplexLongSide");
case QPrint::DuplexShortSide:
return QStringLiteral("DuplexShortSide");
}
return QStringLiteral("Invalid DuplexMode");
}
static QString colorToString(QPrint::ColorMode color)
{
switch (color) {
case QPrint::GrayScale:
return QStringLiteral("GrayScale");
case QPrint::Color:
return QStringLiteral("Color");
}
return QStringLiteral("Invalid ColorMode");
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug() << "\n********************************";
qDebug() << "***** QPrintDevice Details *****";
qDebug() << "********************************\n";
QPlatformPrinterSupport *ps = QPlatformPrinterSupportPlugin::get();
if (!ps) {
qDebug() << "Could not load platform plugin!";
return -1;
}
QString defaultId = ps->defaultPrintDeviceId();
if (defaultId.isEmpty())
qDebug() << "No default printer found";
else
qDebug() << "Default Printer ID :" << defaultId;
qDebug() << "Available Printer IDs :" << ps->availablePrintDeviceIds() << "\n";
foreach (const QString id, ps->availablePrintDeviceIds()) {
QPrintDevice printDevice = ps->createPrintDevice(id);
if (printDevice.isValid()) {
qDebug() << "===" << printDevice.id() << "===\n";
qDebug() << "Device ID :" << printDevice.id();
qDebug() << "Device Name :" << printDevice.name();
qDebug() << "Device Location :" << printDevice.location();
qDebug() << "Device Make :" << printDevice.makeAndModel();
qDebug() << "";
qDebug() << "isValid :" << printDevice.isValid();
qDebug() << "isDefault :" << printDevice.isDefault();
qDebug() << "isRemote :" << printDevice.isRemote();
qDebug() << "";
qDebug() << "state :" << stateToString(printDevice.state());
qDebug() << "";
qDebug() << "supportsMultipleCopies :" << printDevice.supportsMultipleCopies();
qDebug() << "supportsCollateCopies :" << printDevice.supportsCollateCopies();
qDebug() << "";
qDebug() << "defaultPageSize :" << printDevice.defaultPageSize();
qDebug() << "supportedPageSizes :";
foreach (const QPageSize &page, printDevice.supportedPageSizes())
qDebug() << " " << page << printDevice.printableMargins(page, QPageLayout::Portrait, 300);
qDebug() << "";
qDebug() << "supportsCustomPageSizes :" << printDevice.supportsCustomPageSizes();
qDebug() << "";
qDebug() << "minimumPhysicalPageSize :" << printDevice.minimumPhysicalPageSize();
qDebug() << "maximumPhysicalPageSize :" << printDevice.maximumPhysicalPageSize();
qDebug() << "";
qDebug() << "defaultResolution :" << printDevice.defaultResolution();
qDebug() << "supportedResolutions :" << printDevice.supportedResolutions();
qDebug() << "";
qDebug() << "defaultInputSlot :" << printDevice.defaultInputSlot().key
<< printDevice.defaultInputSlot().name
<< printDevice.defaultInputSlot().id;
qDebug() << "supportedInputSlots :";
foreach (const QPrint::InputSlot &slot, printDevice.supportedInputSlots())
qDebug() << " " << slot.key << slot.name << slot.id;
qDebug() << "";
qDebug() << "defaultOutputBin :" << printDevice.defaultOutputBin().key
<< printDevice.defaultOutputBin().name
<< printDevice.defaultOutputBin().id;
qDebug() << "supportedOutputBins :";
foreach (const QPrint::OutputBin &bin, printDevice.supportedOutputBins())
qDebug() << " " << bin.key << bin.name << bin.id;
qDebug() << "";
qDebug() << "defaultDuplexMode :" << duplexToString(printDevice.defaultDuplexMode());
qDebug() << "supportedDuplexModes :";
foreach (QPrint::DuplexMode mode, printDevice.supportedDuplexModes())
qDebug() << " " << duplexToString(mode);
qDebug() << "";
qDebug() << "defaultColorMode :" << colorToString(printDevice.defaultColorMode());
qDebug() << "supportedColorModes :";
foreach (QPrint::ColorMode mode, printDevice.supportedColorModes())
qDebug() << " " << colorToString(mode);
qDebug() << "";
qDebug() << "supportedMimeTypes :";
foreach (const QMimeType &type, printDevice.supportedMimeTypes())
qDebug() << " " << type.name();
} else {
qDebug() << "Create printer failed" << id;
}
qDebug() << "\n";
}
}
|