Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:11.4
libqt4-sql-plugins
use-cups-default-print-settings-bnc552218.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File use-cups-default-print-settings-bnc552218.diff of Package libqt4-sql-plugins
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 } /*!
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor