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);
}
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
virtual QList<QPrinterInfo> availablePrinters();
private:
- static int printerInfoCupsPrinterIndex(const QPrinterInfo &p);
- static void setPrinterInfoCupsPrinterIndex(QPrinterInfo *p, int index);
};
QT_END_NAMESPACE
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);
}
}
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
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;
}
/*
private:
friend class QPlatformPrinterSupport;
- friend class QWindowsPrinterSupport;
- friend class QCocoaPrinterSupport;
- friend class QCupsPrinterSupport;
Q_DECLARE_PRIVATE(QPrinterInfo)
QScopedPointer<QPrinterInfoPrivate, QPrinterInfoPrivateDeleter> d_ptr;
};
{
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()
{}
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;
};