diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/cocoa/qprintengine_mac.mm | 88 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintengine_pdf.cpp | 42 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintengine_win.cpp | 83 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 1 |
4 files changed, 180 insertions, 34 deletions
diff --git a/src/plugins/platforms/cocoa/qprintengine_mac.mm b/src/plugins/platforms/cocoa/qprintengine_mac.mm index f363b1772f..dd2bd718f6 100644 --- a/src/plugins/platforms/cocoa/qprintengine_mac.mm +++ b/src/plugins/platforms/cocoa/qprintengine_mac.mm @@ -591,20 +591,52 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va return; switch (key) { - case PPK_CollateCopies: + + // The following keys are properties or derived values and so cannot be set + case PPK_PageRect: + break; + case PPK_PaperRect: + break; + case PPK_PaperSources: + break; + case PPK_SupportsMultipleCopies: break; + case PPK_SupportedResolutions: + break; + + // 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; + case PPK_CustomBase: break; case PPK_DocumentName: + // TODO Add support using PMPrintSettingsSetJobName / PMPrintSettingsGetJobName + break; + case PPK_Duplex: + // TODO Add support using PMSetDuplex / PMGetDuplex + break; + case PPK_FontEmbedding: break; case PPK_PageOrder: + // TODO Check if can be supported via Cups Options break; case PPK_PaperSource: + // TODO Check if can be supported via Cups Options + break; + case PPK_PrinterProgram: break; case PPK_SelectionOption: break; + case PPK_WindowsPageSize: + break; + + // The following keys are properties and settings that are supported by the Mac PrintEngine case PPK_Resolution: { PMPrinter printer; UInt32 count; @@ -709,9 +741,7 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va d->hasCustomPageMargins = true; break; } - - default: - break; + // No default so that compiler will complain if new keys added and not handled in this engine } } @@ -724,16 +754,59 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const return *d->valueCache.find(key); switch (key) { + + // 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; case PPK_Creator: + ret = QString(); + break; + case PPK_CustomBase: + // Special case, leave null break; case PPK_DocumentName: + // TODO Add support using PMPrintSettingsSetJobName / PMPrintSettingsGetJobName + ret = QString(); + break; + case PPK_Duplex: + // TODO Add support using PMSetDuplex / PMGetDuplex + ret = QPrinter::DuplexNone; + break; + case PPK_FontEmbedding: + ret = false; + break; + case PPK_PageOrder: + // TODO Check if can be supported via Cups Options + ret = QPrinter::FirstPageFirst; + break; + case PPK_PaperSource: + // TODO Check if can be supported via Cups Options + ret = QPrinter::Auto; + break; + case PPK_PaperSources: { + // TODO Check if can be supported via Cups Options + QList<QVariant> out; + out << int(QPrinter::Auto); + ret = out; + break; + } + case PPK_PrinterProgram: + ret = QString(); break; + case PPK_SelectionOption: + ret = QString(); + break; + case PPK_WindowsPageSize: + // Special case, leave null + break; + + // The following keys are properties and settings that are supported by the Mac PrintEngine case PPK_FullPage: ret = d->fullPage; break; @@ -757,10 +830,6 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const case PPK_OutputFileName: ret = d->outputFilename; break; - case PPK_PageOrder: - break; - case PPK_PaperSource: - break; case PPK_PageRect: { // PageRect is returned in device pixels QRect r; @@ -855,8 +924,7 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const ret = margins; break; } - default: - break; + // No default so that compiler will complain if new keys added and not handled in this engine } return ret; } diff --git a/src/printsupport/kernel/qprintengine_pdf.cpp b/src/printsupport/kernel/qprintengine_pdf.cpp index 7b3c3c1dac..f5c80b4cae 100644 --- a/src/printsupport/kernel/qprintengine_pdf.cpp +++ b/src/printsupport/kernel/qprintengine_pdf.cpp @@ -147,6 +147,28 @@ void QPdfPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va Q_D(QPdfPrintEngine); switch (int(key)) { + + // The following keys are properties or derived values and so cannot be set + case PPK_PageRect: + break; + case PPK_PaperRect: + break; + case PPK_PaperSources: + break; + case PPK_SupportsMultipleCopies: + break; + case PPK_SupportedResolutions: + break; + + // The following keys are settings that are unsupported by the PDF PrintEngine + case PPK_CustomBase: + break; + case PPK_PaperName: + break; + case PPK_WindowsPageSize: + break; + + // The following keys are properties and settings that are supported by the PDF PrintEngine case PPK_CollateCopies: d->collate = value.toBool(); break; @@ -216,8 +238,7 @@ void QPdfPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va d->pageMarginsSet = true; break; } - default: - break; + // No default so that compiler will complain if new keys added and not handled in this engine } } @@ -227,6 +248,20 @@ QVariant QPdfPrintEngine::property(PrintEnginePropertyKey key) const QVariant ret; switch (int(key)) { + + // The following keys are settings that are unsupported by the PDF PrintEngine + // Return sensible default values to ensure consistent behavior across platforms + case PPK_CustomBase: + // Special case, leave null + break; + case PPK_PaperName: + ret = QString(); + break; + case PPK_WindowsPageSize: + // Special case, leave null + break; + + // The following keys are properties and settings that are supported by the PDF PrintEngine case PPK_CollateCopies: ret = d->collate; break; @@ -307,8 +342,7 @@ QVariant QPdfPrintEngine::property(PrintEnginePropertyKey key) const ret = margins; break; } - default: - break; + // No default so that compiler will complain if new keys added and not handled in this engine } return ret; } diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 6dafbb4870..d36b7b87c1 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -1273,6 +1273,38 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & { Q_D(QWin32PrintEngine); switch (key) { + + // The following keys are properties or derived values and so cannot be set + case PPK_PageRect: + break; + case PPK_PaperRect: + break; + case PPK_PaperSources: + break; + case PPK_SupportsMultipleCopies: + break; + case PPK_SupportedResolutions: + break; + + // The following keys are settings that are unsupported by the Windows PrintEngine + case PPK_Creator: + // TODO Add value preservation support by using local variable + break; + case PPK_CustomBase: + break; + case PPK_Duplex: + // TODO Add support using DEVMODE.dmDuplex + break; + case PPK_FontEmbedding: + break; + case PPK_PageOrder: + break; + case PPK_PrinterProgram: + break; + case PPK_SelectionOption: + break; + + // The following keys are properties and settings that are supported by the Windows PrintEngine case PPK_CollateCopies: { if (!d->devMode) @@ -1291,10 +1323,6 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & } break; - case PPK_Creator: - - break; - case PPK_DocumentName: if (isActive()) { qWarning("QWin32PrintEngine: Cannot change document name while printing is active"); @@ -1347,6 +1375,7 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & setDevModePaperFlags(d->devMode, d->has_custom_paper_size); d->doReinit(); break; + case PPK_PaperName: { if (!d->devMode) @@ -1416,15 +1445,6 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & } break; - case PPK_SelectionOption: - - break; - - case PPK_SupportedResolutions: - - break; - - case PPK_WindowsPageSize: if (!d->devMode) break; @@ -1468,9 +1488,9 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & d->setPageMargins(left, top, right, bottom); break; } - default: - // Do nothing - break; + + // No default so that compiler will complain if new keys added and not handled in this engine + } } @@ -1480,10 +1500,33 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const QVariant value; switch (key) { + // 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; + case PPK_Duplex: + // TODO Add support using DEVMODE.dmDuplex + value = QPrinter::DuplexNone; + break; + case PPK_FontEmbedding: + value = false; + break; + case PPK_PageOrder: + value = QPrinter::FirstPageFirst; + break; + case PPK_PrinterProgram: + value = QString(); + break; + case PPK_SelectionOption: + value = QString(); + break; + // The following keys are properties and settings that are supported by the Windows PrintEngine case PPK_ColorMode: { if (!d->devMode) { @@ -1567,6 +1610,7 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const value = QTransform(1/d->stretch_x, 0, 0, 1/d->stretch_y, 0, 0).mapRect(d->devPaperRect); } break; + case PPK_PaperName: if (!d->devMode) { value = QLatin1String("A4"); @@ -1596,6 +1640,7 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const } } break; + case PPK_PaperSource: if (!d->devMode) { value = QPrinter::Auto; @@ -1670,9 +1715,9 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const value = margins; break; } - default: - // Do nothing - break; + + // No default so that compiler will complain if new keys added and not handled in this engine + } return value; } diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index 984b11123e..77fa40f414 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -226,7 +226,6 @@ void QPrinterPrivate::changeEngines(QPrinter::OutputFormat format, const QPrinte prop = QVariant(q_ptr->copyCount()); else if (key != QPrintEngine::PPK_PrinterName) prop = oldPrintEngine->property(key); - if (prop.isValid()) setProperty(key, prop); } |