diff options
author | Rohan McGovern <rohan.mcgovern@nokia.com> | 2012-05-08 12:56:45 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-08 06:58:27 +0200 |
commit | de11b9f5a7aaab79e816983a72b8e92ac84ce5d6 (patch) | |
tree | aafbf1b22400bbaf90046b415490667164a2d93a /src/printsupport/dialogs/qprintdialog_unix.cpp | |
parent | 80f7a388906f94f58bf765a32b9abbb16f967db2 (diff) |
Revert "QtPrintSupport: Remove remaining LPR specific code"
This doesn't compile with a typical cross-compilation setup, which
generally won't include cups headers. The commit should have been
rejected, but wasn't, due to a bug in the Qt Project CI.
Since it now causes all other modules depending on qtbase to fail their
CI, it must be reverted to minimize disruption while the commit can be
amended and/or the test toolchain updated to include cups headers.
This reverts commit 80f7a388906f94f58bf765a32b9abbb16f967db2.
Change-Id: I315ae275b37de358a74af28ab7bd691c9849acba
Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com>
Diffstat (limited to 'src/printsupport/dialogs/qprintdialog_unix.cpp')
-rw-r--r-- | src/printsupport/dialogs/qprintdialog_unix.cpp | 88 |
1 files changed, 82 insertions, 6 deletions
diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp index 4ba04be9ec..f7689c1620 100644 --- a/src/printsupport/dialogs/qprintdialog_unix.cpp +++ b/src/printsupport/dialogs/qprintdialog_unix.cpp @@ -60,8 +60,15 @@ #include "ui_qprintsettingsoutput.h" #include "ui_qprintwidget.h" -#include <private/qcups_p.h> -#include <private/qprintengine_pdf_p.h> +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) +# include <private/qcups_p.h> +# include <cups/cups.h> +# include <private/qprintengine_pdf_p.h> +#else +# include <QtCore/qlibrary.h> +#endif + +#include <private/qprinterinfo_unix_p.h> QT_BEGIN_NAMESPACE @@ -75,8 +82,10 @@ public: QPrintPropertiesDialog(QAbstractPrintDialog *parent = 0); ~QPrintPropertiesDialog(); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) void setCups(QCUPSSupport *cups) { m_cups = cups; } void addItemToOptions(QOptionTreeItem *parent, QList<const ppd_option_t*>& options, QList<const char*>& markedOptions) const; +#endif void selectPrinter(); void selectPdfPsPrinter(const QPrinter *p); @@ -91,8 +100,10 @@ protected: private: Ui::QPrintPropertiesWidget widget; QDialogButtonBox *m_buttons; +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) QCUPSSupport *m_cups; QPPDOptionsModel *m_cupsOptionsModel; +#endif }; class QPrintDialogPrivate : public QAbstractPrintDialogPrivate @@ -107,7 +118,9 @@ public: /// copy printer properties to the widget void applyPrinterProperties(QPrinter *p); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) void selectPrinter(QCUPSSupport *cups); +#endif void _q_chbPrintLastFirstToggled(bool); #ifndef QT_NO_MESSAGEBOX @@ -138,7 +151,9 @@ public: bool checkFields(); void setupPrinter(); void setOptionsPane(QPrintDialogPrivate *pane); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) void setCupsProperties(); +#endif // slots void _q_printerChanged(int index); @@ -150,17 +165,21 @@ public: Ui::QPrintWidget widget; QAbstractPrintDialog * q; QPrinter *printer; + QList<QPrinterDescription> lprPrinters; void updateWidget(); private: QPrintDialogPrivate *optionsPane; bool filePrintersAdded; +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) QCUPSSupport* cups; int cupsPrinterCount; const cups_dest_t* cupsPrinters; const ppd_file_t* cupsPPD; +#endif }; +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) class QOptionTreeItem { public: @@ -230,10 +249,15 @@ private slots: }; +#endif + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QPrintPropertiesDialog::QPrintPropertiesDialog(QAbstractPrintDialog *parent) - : QDialog(parent), m_cups(0), m_cupsOptionsModel(0) + : QDialog(parent) +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) + , m_cups(0), m_cupsOptionsModel(0) +#endif { QVBoxLayout *lay = new QVBoxLayout(this); this->setLayout(lay); @@ -249,7 +273,11 @@ QPrintPropertiesDialog::QPrintPropertiesDialog(QAbstractPrintDialog *parent) QPrintPropertiesDialog::~QPrintPropertiesDialog() { +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) delete m_cupsOptionsModel; +#else + delete widget.cupsPropertiesPage; +#endif } void QPrintPropertiesDialog::applyPrinterProperties(QPrinter *p) @@ -261,6 +289,7 @@ void QPrintPropertiesDialog::setupPrinter() const { widget.pageSetup->setupPrinter(); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) QPPDOptionsModel* model = static_cast<QPPDOptionsModel*>(widget.treeView->model()); if (model) { QOptionTreeItem* rootItem = model->rootItem; @@ -270,10 +299,12 @@ void QPrintPropertiesDialog::setupPrinter() const addItemToOptions(rootItem, options, markedOptions); model->cups->saveOptions(options, markedOptions); } +#endif } void QPrintPropertiesDialog::selectPrinter() { +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) widget.pageSetup->selectPrinter(m_cups); widget.treeView->setModel(0); if (m_cups && QCUPSSupport::isAvailable()) { @@ -298,7 +329,9 @@ void QPrintPropertiesDialog::selectPrinter() widget.tabs->setTabEnabled(1, false); } - } else { + } else +#endif + { widget.cupsPropertiesPage->setEnabled(false); widget.pageSetup->selectPrinter(0); } @@ -317,6 +350,7 @@ void QPrintPropertiesDialog::showEvent(QShowEvent* event) event->accept(); } +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) void QPrintPropertiesDialog::addItemToOptions(QOptionTreeItem *parent, QList<const ppd_option_t*>& options, QList<const char*>& markedOptions) const { for (int i = 0; i < parent->childItems.count(); ++i) { @@ -332,6 +366,7 @@ void QPrintPropertiesDialog::addItemToOptions(QOptionTreeItem *parent, QList<con } } } +#endif QPrintDialogPrivate::QPrintDialogPrivate() : top(0), bottom(0), buttons(0), collapseButton(0) @@ -538,10 +573,12 @@ void QPrintDialogPrivate::setTabs(const QList<QWidget*> &tabWidgets) } } +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups) { options.duplex->setEnabled(cups && cups->ppdOption("Duplex")); } +#endif //////////////////////////////////////////////////////////////////////////////// @@ -593,8 +630,10 @@ void QPrintDialog::accept() /*! \internal */ QUnixPrintWidgetPrivate::QUnixPrintWidgetPrivate(QUnixPrintWidget *p) - : parent(p), propertiesDialog(0), printer(0), optionsPane(0), filePrintersAdded(false), - cups(0), cupsPrinterCount(0), cupsPrinters(0), cupsPPD(0) + : parent(p), propertiesDialog(0), printer(0), optionsPane(0), filePrintersAdded(false) +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) + , cups(0), cupsPrinterCount(0), cupsPrinters(0), cupsPPD(0) +#endif { q = 0; if (parent) @@ -603,6 +642,7 @@ QUnixPrintWidgetPrivate::QUnixPrintWidgetPrivate(QUnixPrintWidget *p) widget.setupUi(parent); int currentPrinterIndex = 0; +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) cups = new QCUPSSupport; if (QCUPSSupport::isAvailable()) { cupsPPD = cups->currentPPD(); @@ -624,7 +664,16 @@ QUnixPrintWidgetPrivate::QUnixPrintWidgetPrivate(QUnixPrintWidget *p) widget.properties->setEnabled(true); } currentPrinterIndex = cups->currentPrinterIndex(); + } else { +#endif + currentPrinterIndex = qt_getLprPrinters(lprPrinters); + // populating printer combo + QList<QPrinterDescription>::const_iterator i = lprPrinters.constBegin(); + for(; i != lprPrinters.constEnd(); ++i) + widget.printers->addItem((*i).name); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) } +#endif #if !defined(QT_NO_FILESYSTEMMODEL) && !defined(QT_NO_COMPLETER) QFileSystemModel *fsm = new QFileSystemModel(widget.filename); @@ -676,7 +725,9 @@ void QUnixPrintWidgetPrivate::updateWidget() QUnixPrintWidgetPrivate::~QUnixPrintWidgetPrivate() { +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) delete cups; +#endif } void QUnixPrintWidgetPrivate::_q_printerChanged(int index) @@ -700,13 +751,16 @@ void QUnixPrintWidgetPrivate::_q_printerChanged(int index) widget.lOutput->setEnabled(true); if (propertiesDialog) propertiesDialog->selectPdfPsPrinter(printer); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) if (optionsPane) optionsPane->selectPrinter(0); +#endif return; } } widget.location->setText(QString()); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) if (QCUPSSupport::isAvailable()) { cups->setCurrentPrinter(index); @@ -726,7 +780,21 @@ void QUnixPrintWidgetPrivate::_q_printerChanged(int index) propertiesDialog->selectPrinter(); if (optionsPane) optionsPane->selectPrinter(cups); + } else { + if (optionsPane) + optionsPane->selectPrinter(0); +#endif + if (lprPrinters.count() > 0) { + QString type = lprPrinters.at(index).name + QLatin1Char('@') + lprPrinters.at(index).host; + if (!lprPrinters.at(index).comment.isEmpty()) + type += QLatin1String(", ") + lprPrinters.at(index).comment; + widget.type->setText(type); + if (propertiesDialog) + propertiesDialog->selectPrinter(); + } +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) } +#endif } void QUnixPrintWidgetPrivate::setOptionsPane(QPrintDialogPrivate *pane) @@ -840,7 +908,9 @@ void QUnixPrintWidgetPrivate::_q_btnPropertiesClicked() } if (propertiesDialog->result() == QDialog::Rejected) { +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) propertiesDialog->setCups(cups); +#endif propertiesDialog->applyPrinterProperties(q->printer()); if (q->isOptionEnabled(QPrintDialog::PrintToFile) @@ -852,6 +922,7 @@ void QUnixPrintWidgetPrivate::_q_btnPropertiesClicked() propertiesDialog->exec(); } +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) void QUnixPrintWidgetPrivate::setCupsProperties() { if (cups && QCUPSSupport::isAvailable() && cups->pageSizes()) { @@ -878,6 +949,7 @@ void QUnixPrintWidgetPrivate::setCupsProperties() } } } +#endif void QUnixPrintWidgetPrivate::setupPrinter() { @@ -900,8 +972,10 @@ void QUnixPrintWidgetPrivate::setupPrinter() if (propertiesDialog && propertiesDialog->result() == QDialog::Accepted) propertiesDialog->setupPrinter(); +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) if (!propertiesDialog) setCupsProperties(); +#endif } @@ -930,6 +1004,7 @@ void QUnixPrintWidget::updatePrinter() } //////////////////////////////////////////////////////////////////////////////// +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) QPPDOptionsModel::QPPDOptionsModel(QCUPSSupport *c, QObject *parent) : QAbstractItemModel(parent), rootItem(0), cups(c), ppd(c->currentPPD()) @@ -1169,6 +1244,7 @@ void QPPDOptionsEditor::cbChanged(int) */ } +#endif // !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) #endif // defined (Q_OS_UNIX) QT_END_NAMESPACE |