diff options
Diffstat (limited to 'src/plugins')
7 files changed, 12 insertions, 289 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) diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp index 0db448f4bf..b2abb07fc7 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp +++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp @@ -58,18 +58,13 @@ QT_BEGIN_NAMESPACE -QCupsPrinterSupport::QCupsPrinterSupport() : QPlatformPrinterSupport(), - m_cups(QLatin1String("cups"), 2), - m_cupsPrinters(0), - m_cupsPrintersCount(0) +QCupsPrinterSupport::QCupsPrinterSupport() + : QPlatformPrinterSupport() { - loadCups(); - loadCupsPrinters(); } QCupsPrinterSupport::~QCupsPrinterSupport() { - freeCupsPrinters(); } QPrintEngine *QCupsPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode) @@ -121,87 +116,6 @@ QString QCupsPrinterSupport::defaultPrintDeviceId() const return printerId; } -QList<QPrinter::PaperSize> QCupsPrinterSupport::supportedPaperSizes(const QPrinterInfo &printerInfo) const -{ - return QCUPSSupport::getCupsPrinterPaperSizes(printerIndex(printerInfo)); -} - -QList<QPair<QString, QSizeF> > QCupsPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const -{ - return QCUPSSupport::getCupsPrinterPaperSizesWithNames(printerIndex(printerInfo)); -} - -void QCupsPrinterSupport::loadCups() -{ - cupsGetDests = (CupsGetDests) m_cups.resolve("cupsGetDests"); - cupsFreeDests = (CupsFreeDests) m_cups.resolve("cupsFreeDests"); - cupsGetOption = (CupsGetOption) m_cups.resolve("cupsGetOption"); -} - -void QCupsPrinterSupport::freeCupsPrinters() -{ - if (cupsFreeDests && m_cupsPrintersCount) { - cupsFreeDests(m_cupsPrintersCount, m_cupsPrinters); - m_cupsPrintersCount = 0; - m_cupsPrinters = 0; - } -} - -void QCupsPrinterSupport::loadCupsPrinters() -{ - freeCupsPrinters(); - m_printers.clear(); - - if (cupsGetDests) - m_cupsPrintersCount = cupsGetDests(&m_cupsPrinters); - - for (int i = 0; i < m_cupsPrintersCount; ++i) { - QString printerName = QString::fromLocal8Bit(m_cupsPrinters[i].name); - if (m_cupsPrinters[i].instance) - printerName += QLatin1Char('/') + QString::fromLocal8Bit(m_cupsPrinters[i].instance); - QString description = cupsOption(i, "printer-info"); - QString location = cupsOption(i, "printer-location"); - QString makeAndModel = cupsOption(i, "printer-make-and-model"); - QPrinterInfo printer = createPrinterInfo(printerName, description, location, makeAndModel, - m_cupsPrinters[i].is_default, i); - m_printers.append(printer); - } -} - -QList<QPrinterInfo> QCupsPrinterSupport::availablePrinters() -{ - loadCupsPrinters(); - return QPlatformPrinterSupport::availablePrinters(); -} - -QString QCupsPrinterSupport::printerOption(const QPrinterInfo &printer, const QString &key) const -{ - return cupsOption(printerIndex(printer), key); -} - -QString QCupsPrinterSupport::cupsOption(int i, const QString &key) const -{ - QString value; - if (i > -1 && i < m_cupsPrintersCount && cupsGetOption) - value = cupsGetOption(key.toLocal8Bit(), m_cupsPrinters[i].num_options, m_cupsPrinters[i].options); - return value; -} - -PrinterOptions QCupsPrinterSupport::printerOptions(const QPrinterInfo &printer) const -{ - PrinterOptions options; - int p = printerIndex(printer); - if (p <= -1 || p >= m_cupsPrintersCount) - return options; - int numOptions = m_cupsPrinters[p].num_options; - for (int i = 0; i < numOptions; ++i) { - QString name = m_cupsPrinters[p].options[i].name; - QString value = m_cupsPrinters[p].options[i].value; - options.insert(name, value); - } - return options; -} - QT_END_NAMESPACE #endif // QT_NO_PRINTER diff --git a/src/plugins/printsupport/cups/qcupsprintersupport_p.h b/src/plugins/printsupport/cups/qcupsprintersupport_p.h index 9ae4a2cd58..27741a52fe 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport_p.h +++ b/src/plugins/printsupport/cups/qcupsprintersupport_p.h @@ -48,50 +48,25 @@ #include <qpa/qplatformprintersupport.h> -#include <QtCore/qlibrary.h> -#include <QtCore/qlist.h> - -#include <cups/cups.h> +#include <QtCore/qstringlist.h> QT_BEGIN_NAMESPACE -typedef int (*CupsGetDests)(cups_dest_t **dests); -typedef void (*CupsFreeDests)(int num_dests, cups_dest_t *dests); -typedef const char* (*CupsGetOption)(const char *name, int num_options, cups_option_t *options); - class QCupsPrinterSupport : public QPlatformPrinterSupport { public: QCupsPrinterSupport(); ~QCupsPrinterSupport(); - virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode); - virtual QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode); + QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE; + QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode) Q_DECL_OVERRIDE; QPrintDevice createPrintDevice(const QString &id) Q_DECL_OVERRIDE; QStringList availablePrintDeviceIds() const Q_DECL_OVERRIDE; QString defaultPrintDeviceId() const Q_DECL_OVERRIDE; - virtual QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const; - virtual QList<QPair<QString, QSizeF> > supportedSizesWithNames(const QPrinterInfo &) const; - - virtual QList<QPrinterInfo> availablePrinters(); - virtual QString printerOption(const QPrinterInfo &printer, const QString &key) const; - virtual PrinterOptions printerOptions(const QPrinterInfo &printer) const; - private: - void loadCups(); - void loadCupsPrinters(); - void freeCupsPrinters(); QString cupsOption(int i, const QString &key) const; - - QLibrary m_cups; - cups_dest_t *m_cupsPrinters; - int m_cupsPrintersCount; - - CupsGetDests cupsGetDests; - CupsFreeDests cupsFreeDests; - CupsGetOption cupsGetOption; }; QT_END_NAMESPACE diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp index 2da10fc5d0..997082a367 100644 --- a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp +++ b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp @@ -42,12 +42,8 @@ #include "qwindowsprintersupport.h" #include "qwindowsprintdevice.h" -#include <QtCore/QList> -#include <QtCore/QScopedArrayPointer> -#include <QtPrintSupport/QPrinterInfo> +#include <QtCore/QStringList> #include <qprintengine_win_p.h> -#include <private/qpaintengine_alpha_p.h> -#include <private/qprinterinfo_p.h> #include <private/qprintdevice_p.h> QT_BEGIN_NAMESPACE @@ -55,7 +51,6 @@ QT_BEGIN_NAMESPACE QWindowsPrinterSupport::QWindowsPrinterSupport() : QPlatformPrinterSupport() { - m_printers = QWindowsPrinterSupport::queryPrinters(); } QWindowsPrinterSupport::~QWindowsPrinterSupport() @@ -88,43 +83,4 @@ QString QWindowsPrinterSupport::defaultPrintDeviceId() const return QWindowsPrintDevice::defaultPrintDeviceId(); } -QList<QPrinter::PaperSize> QWindowsPrinterSupport::supportedPaperSizes(const QPrinterInfo &printerInfo) const -{ - return QWin32PrintEngine::supportedPaperSizes(printerInfo); -} - -QList<QPair<QString, QSizeF> >QWindowsPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const -{ - return QWin32PrintEngine::supportedSizesWithNames(printerInfo); -} - -QList<QPrinterInfo> QWindowsPrinterSupport::availablePrinters() -{ - m_printers = QWindowsPrinterSupport::queryPrinters(); - return QPlatformPrinterSupport::availablePrinters(); -} - -QList<QPrinterInfo> QWindowsPrinterSupport::queryPrinters() -{ - QList<QPrinterInfo> result; - DWORD needed = 0; - DWORD returned = 0; - if ((!EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 4, 0, 0, &needed, &returned) && GetLastError() != ERROR_INSUFFICIENT_BUFFER) - || !needed) { - return result; - } - QScopedArrayPointer<BYTE> buffer(new BYTE[needed]); - if (!EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 4, buffer.data(), needed, &needed, &returned)) - return result; - PPRINTER_INFO_4 infoList = reinterpret_cast<PPRINTER_INFO_4>(buffer.data()); - QString defaultPrinterName; - QWin32PrintEngine::queryDefaultPrinter(defaultPrinterName); - for (uint i = 0; i < returned; ++i) { - const QString printerName(QString::fromWCharArray(infoList[i].pPrinterName)); - const bool isDefault = (printerName == defaultPrinterName); - result.append(QPlatformPrinterSupport::createPrinterInfo(printerName, QString(), QString(), QString(), isDefault, i)); - } - return result; -} - QT_END_NAMESPACE diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.h b/src/plugins/printsupport/windows/qwindowsprintersupport.h index 7b82d214ff..6a84b667dd 100644 --- a/src/plugins/printsupport/windows/qwindowsprintersupport.h +++ b/src/plugins/printsupport/windows/qwindowsprintersupport.h @@ -46,28 +46,18 @@ QT_BEGIN_NAMESPACE -class QWin32PrintEngine; - class QWindowsPrinterSupport : public QPlatformPrinterSupport { public: QWindowsPrinterSupport(); ~QWindowsPrinterSupport(); - virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode); - virtual QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode); + QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE; + QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode) Q_DECL_OVERRIDE; QPrintDevice createPrintDevice(const QString &id) Q_DECL_OVERRIDE; QStringList availablePrintDeviceIds() const Q_DECL_OVERRIDE; QString defaultPrintDeviceId() const Q_DECL_OVERRIDE; - - virtual QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const; - virtual QList<QPair<QString, QSizeF> >supportedSizesWithNames(const QPrinterInfo &printerInfo) const; - - virtual QList<QPrinterInfo> availablePrinters(); - -private: - static QList<QPrinterInfo> queryPrinters(); }; QT_END_NAMESPACE |