Search
j0ke.net Open Build Service
>
Projects
>
home:netmax
:
playground
>
opt-libqt4-47
> use-cups-default-print-settings-bnc552218.diff
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File use-cups-default-print-settings-bnc552218.diff of Package opt-libqt4-47
Subject: Makes the Qt print dialog use the default settings of the cups print queue From: Kevin Koffler Bug: bnc#552218, bko#180051 Patch-upstream: no --- src/gui/dialogs/qprintdialog_unix.cpp +++ src/gui/dialogs/qprintdialog_unix.cpp @@ -579,6 +579,32 @@ void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups) { options.duplex->setEnabled(cups && cups->ppdOption("Duplex")); + + if (cups) { + const ppd_option_t* duplex = cups->ppdOption("Duplex"); + if (duplex) { + // copy default ppd duplex to qt dialog + if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) + options.duplexShort->setChecked(true); + else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) + options.duplexLong->setChecked(true); + else + options.noDuplex->setChecked(true); + } + + if (cups->currentPPD()) { + // set default color + if (cups->currentPPD()->color_device) + options.color->setChecked(true); + else + options.grayscale->setChecked(true); + } + + // set collation + const ppd_option_t *collate = cups->ppdOption("Collate"); + if (collate) + options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0); + } } #endif --- src/gui/painting/qprinter.cpp +++ src/gui/painting/qprinter.cpp @@ -609,6 +609,44 @@ && d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) { setOutputFormat(QPrinter::PdfFormat); } + +#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) + // fill in defaults from ppd file + QCUPSSupport cups; + + int printernum = -1; + for (int i = 0; i < cups.availablePrintersCount(); i++) { + if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name) + printernum = i; + } + if (printernum >= 0) { + cups.setCurrentPrinter(printernum); + + const ppd_option_t* duplex = cups.ppdOption("Duplex"); + if (duplex) { + // copy default ppd duplex to qt dialog + if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) + setDuplex(DuplexShortSide); + else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) + setDuplex(DuplexLongSide); + else + setDuplex(DuplexNone); + } + + if (cups.currentPPD()) { + // set default color + if (cups.currentPPD()->color_device) + setColorMode(Color); + else + setColorMode(GrayScale); + } + + // set collation + const ppd_option_t *collate = cups.ppdOption("Collate"); + if (collate) + setCollateCopies(qstrcmp(collate->defchoice, "True")==0); + } +#endif } /*!