diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/cocoa/qprintengine_mac.mm | 16 | ||||
-rw-r--r-- | src/plugins/printsupport/cups/qcupsprintengine.cpp | 2 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintengine_pdf.cpp | 2 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintengine_win.cpp | 9 |
4 files changed, 16 insertions, 13 deletions
diff --git a/src/plugins/platforms/cocoa/qprintengine_mac.mm b/src/plugins/platforms/cocoa/qprintengine_mac.mm index 170eccdd1b..b11afc745e 100644 --- a/src/plugins/platforms/cocoa/qprintengine_mac.mm +++ b/src/plugins/platforms/cocoa/qprintengine_mac.mm @@ -607,9 +607,6 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va // The following keys are settings that are unsupported by the Mac PrintEngine case PPK_ColorMode: break; - case PPK_CollateCopies: - // TODO Add support using PMSetCollate / PMGetCollate - break; case PPK_Creator: // TODO Add value preservation support by using local variable break; @@ -662,6 +659,9 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va PMSessionValidatePageFormat(d->session(), d->format(), kPMDontWantBoolean); break; } + case PPK_CollateCopies: + PMSetCollate(d->settings(), value.toBool()); + break; case PPK_DocumentName: PMPrintSettingsSetJobName(d->settings(), QCFString(value.toString())); break; @@ -756,10 +756,6 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const // The following keys are settings that are unsupported by the Mac PrintEngine // Return sensible default values to ensure consistent behavior across platforms - case PPK_CollateCopies: - // TODO Add support using PMSetCollate / PMGetCollate - ret = false; - break; case PPK_ColorMode: ret = QPrinter::Color; break; @@ -802,6 +798,12 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const break; // The following keys are properties and settings that are supported by the Mac PrintEngine + case PPK_CollateCopies: { + Boolean status; + PMGetCollate(d->settings(), &status); + ret = bool(status); + break; + } case PPK_DocumentName: { CFStringRef name; PMPrintSettingsGetJobName(d->settings(), &name); diff --git a/src/plugins/printsupport/cups/qcupsprintengine.cpp b/src/plugins/printsupport/cups/qcupsprintengine.cpp index 1c86420cb2..2fecdc00e9 100644 --- a/src/plugins/printsupport/cups/qcupsprintengine.cpp +++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp @@ -221,7 +221,7 @@ void QCupsPrintEnginePrivate::closePrintDevice() if (copies > 1) options.append(QPair<QByteArray, QByteArray>("copies", QString::number(copies).toLocal8Bit())); - if (collate) + if (copies > 1 && collate) options.append(QPair<QByteArray, QByteArray>("Collate", "True")); switch (duplex) { diff --git a/src/printsupport/kernel/qprintengine_pdf.cpp b/src/printsupport/kernel/qprintengine_pdf.cpp index f5c80b4cae..6c65300462 100644 --- a/src/printsupport/kernel/qprintengine_pdf.cpp +++ b/src/printsupport/kernel/qprintengine_pdf.cpp @@ -386,7 +386,7 @@ void QPdfPrintEnginePrivate::closePrintDevice() QPdfPrintEnginePrivate::QPdfPrintEnginePrivate(QPrinter::PrinterMode m) : QPdfEnginePrivate(), duplex(QPrinter::DuplexNone), - collate(false), + collate(true), copies(1), pageOrder(QPrinter::FirstPageFirst), paperSource(QPrinter::Auto), diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 34f3106313..d48c1a730d 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -1098,6 +1098,7 @@ void QWin32PrintEnginePrivate::initialize() if (devMode) { num_copies = devMode->dmCopies; + devMode->dmCollate = DMCOLLATE_TRUE; } initHDC(); @@ -1504,10 +1505,6 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const // The following keys are settings that are unsupported by the Windows PrintEngine // Return sensible default values to ensure consistent behavior across platforms - case PPK_CollateCopies: - // TODO Add support using DEVMODE.dmCollate to match setting - value = false; - break; case PPK_Creator: value = QString(); break; @@ -1529,6 +1526,10 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const break; // The following keys are properties and settings that are supported by the Windows PrintEngine + case PPK_CollateCopies: + value = d->devMode->dmCollate == DMCOLLATE_TRUE; + break; + case PPK_ColorMode: { if (!d->devMode) { |