summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/cocoa/qcocoaprintersupport.mm19
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport.cpp16
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport_p.h2
-rw-r--r--src/plugins/printsupport/windows/qwindowsprintersupport.cpp6
-rw-r--r--src/printsupport/kernel/qplatformprintersupport.h6
-rw-r--r--src/printsupport/kernel/qplatformprintersupport_qpa.cpp16
-rw-r--r--src/printsupport/kernel/qprinterinfo.h3
-rw-r--r--src/printsupport/kernel/qprinterinfo_p.h10
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;
};