summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/cocoa/qprintengine_mac.mm88
-rw-r--r--src/printsupport/kernel/qprintengine_pdf.cpp42
-rw-r--r--src/printsupport/kernel/qprintengine_win.cpp83
-rw-r--r--src/printsupport/kernel/qprinter.cpp1
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);
}