diff options
Diffstat (limited to 'src/printsupport/kernel')
-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 |
3 files changed, 102 insertions, 24 deletions
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); } |