diff options
8 files changed, 31 insertions, 47 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm index b77d5a20ea..ed436844cb 100644 --- a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm +++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm @@ -128,14 +128,13 @@ QPrinterInfo QCocoaPrinterSupport::printerInfoFromPMPrinter(const PMPrinter &pri if (!printer) 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; + 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); } diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp index 279c26ad72..83d4068d16 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp +++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp @@ -71,29 +71,17 @@ QPaintEngine *QCupsPrinterSupport::createPaintEngine(QPrintEngine *engine, QPrin QList<QPrinter::PaperSize> QCupsPrinterSupport::supportedPaperSizes(const QPrinterInfo &printerInfo) const { - return QCUPSSupport::getCupsPrinterPaperSizes(printerInfoCupsPrinterIndex(printerInfo)); + return QCUPSSupport::getCupsPrinterPaperSizes(printerIndex(printerInfo)); } QList<QPrinterInfo> QCupsPrinterSupport::availablePrinters() { QList<QPrinterInfo> printers; foreach (const QCUPSSupport::Printer &p, QCUPSSupport::availableUnixPrinters()) { - QPrinterInfo printer(p.name); - printer.d_func()->isDefault = p.isDefault; - setPrinterInfoCupsPrinterIndex(&printer, p.cupsPrinterIndex); + QPrinterInfo printer = createPrinterInfo(p.name, QString(), QString(), QString(), p.isDefault, p.cupsPrinterIndex); printers.append(printer); } return printers; } -int QCupsPrinterSupport::printerInfoCupsPrinterIndex(const QPrinterInfo &p) -{ - return p.isNull() ? -1 : p.d_func()->cupsPrinterIndex; -} - -void QCupsPrinterSupport::setPrinterInfoCupsPrinterIndex(QPrinterInfo *p, int index) -{ - p->d_func()->cupsPrinterIndex = index; -} - QT_END_NAMESPACE diff --git a/src/plugins/printsupport/cups/qcupsprintersupport_p.h b/src/plugins/printsupport/cups/qcupsprintersupport_p.h index 81887e3dd8..13b65a5cb5 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport_p.h +++ b/src/plugins/printsupport/cups/qcupsprintersupport_p.h @@ -60,8 +60,6 @@ public: virtual QList<QPrinterInfo> availablePrinters(); private: - static int printerInfoCupsPrinterIndex(const QPrinterInfo &p); - static void setPrinterInfoCupsPrinterIndex(QPrinterInfo *p, int index); }; QT_END_NAMESPACE diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp index 476889890d..3715aa1da9 100644 --- a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp +++ b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp @@ -64,10 +64,8 @@ QWindowsPrinterSupport::QWindowsPrinterSupport() QWin32PrintEngine::queryDefaultPrinter(defaultPrinterName, program, port); for (uint i = 0; i < returned; ++i) { QString printerName(QString::fromWCharArray(infoList[i].pPrinterName)); - - QPrinterInfo printerInfo(printerName); - if (printerInfo.printerName() == defaultPrinterName) - printerInfo.d_ptr->isDefault = true; + bool isDefault = (printerName == defaultPrinterName); + QPrinterInfo printerInfo = createPrinterInfo(printerName, QString(), QString(), QString(), isDefault, i); mPrinterList.append(printerInfo); } } diff --git a/src/printsupport/kernel/qplatformprintersupport.h b/src/printsupport/kernel/qplatformprintersupport.h index 910eafacb6..074405f0cd 100644 --- a/src/printsupport/kernel/qplatformprintersupport.h +++ b/src/printsupport/kernel/qplatformprintersupport.h @@ -79,8 +79,10 @@ public: static QSizeF convertPaperSizeToQSizeF(QPrinter::PaperSize paperSize); protected: - static void setPrinterInfoDefault(QPrinterInfo *p, bool isDefault); - static bool printerInfoIsDefault(const QPrinterInfo &p); + static int printerIndex(const QPrinterInfo &printer); + static QPrinterInfo createPrinterInfo(const QString &name, const QString &description, + const QString &location, const QString &makeAndModel, + bool isDefault, int index); }; #endif // QT_NO_PRINTER diff --git a/src/printsupport/kernel/qplatformprintersupport_qpa.cpp b/src/printsupport/kernel/qplatformprintersupport_qpa.cpp index 7bf2b291d0..d6ffd9b7fc 100644 --- a/src/printsupport/kernel/qplatformprintersupport_qpa.cpp +++ b/src/printsupport/kernel/qplatformprintersupport_qpa.cpp @@ -107,14 +107,22 @@ QPrinterInfo QPlatformPrinterSupport::printerInfo(const QString &printerName) return QPrinterInfo(); } -void QPlatformPrinterSupport::setPrinterInfoDefault(QPrinterInfo *p, bool isDefault) +int QPlatformPrinterSupport::printerIndex(const QPrinterInfo &printer) { - p->d_func()->isDefault = isDefault; + return printer.d_func()->index; } -bool QPlatformPrinterSupport::printerInfoIsDefault(const QPrinterInfo &p) +QPrinterInfo QPlatformPrinterSupport::createPrinterInfo(const QString &name, const QString &description, + const QString &location, const QString &makeAndModel, + bool isDefault, int index) { - return p.d_func()->isDefault; + QPrinterInfo printer(name); + printer.d_func()->description = description; + printer.d_func()->location = location; + printer.d_func()->makeAndModel = makeAndModel; + printer.d_func()->isDefault = isDefault; + printer.d_func()->index = index; + return printer; } /* diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h index 9370890639..44ca1fcae2 100644 --- a/src/printsupport/kernel/qprinterinfo.h +++ b/src/printsupport/kernel/qprinterinfo.h @@ -83,9 +83,6 @@ private: private: friend class QPlatformPrinterSupport; - friend class QWindowsPrinterSupport; - friend class QCocoaPrinterSupport; - friend class QCupsPrinterSupport; Q_DECLARE_PRIVATE(QPrinterInfo) QScopedPointer<QPrinterInfoPrivate, QPrinterInfoPrivateDeleter> d_ptr; }; diff --git a/src/printsupport/kernel/qprinterinfo_p.h b/src/printsupport/kernel/qprinterinfo_p.h index 6e1c088f79..97f0986b66 100644 --- a/src/printsupport/kernel/qprinterinfo_p.h +++ b/src/printsupport/kernel/qprinterinfo_p.h @@ -65,11 +65,7 @@ class QPrinterInfoPrivate { public: QPrinterInfoPrivate(const QString& name = QString()) : - name(name), isDefault(false) -#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) - , cupsPrinterIndex(0) -#endif - , hasPaperSizes(false) + name(name), isDefault(false), index(-1), hasPaperSizes(false) {} ~QPrinterInfoPrivate() {} @@ -81,10 +77,8 @@ public: QString location; QString makeAndModel; bool isDefault; + int index; // Internal printer plugin use only -#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) - int cupsPrinterIndex; -#endif mutable bool hasPaperSizes; mutable QList<QPrinter::PaperSize> paperSizes; }; |