QPrintEngine - Fix PPK_DocumentName
Add support to the Mac print engine for set/get the Document Name using the Job Name setting. Our documentation states this is one use that the document name will be put to so is appropriate to be used. Change the Windows print engine to default to a blank Docuemnt Name consistent with the other print engines. If still blank when printing then use a default value. Task-number: QTBUG-27724 Task-number: QTBUG-22144 Change-Id: If590811b5720e6f759eabc290b578b94e221f9f4 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
parent
053bee8b80
commit
27473f19bb
@ -615,9 +615,6 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va
|
||||
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;
|
||||
@ -665,7 +662,9 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va
|
||||
PMSessionValidatePageFormat(d->session(), d->format(), kPMDontWantBoolean);
|
||||
break;
|
||||
}
|
||||
|
||||
case PPK_DocumentName:
|
||||
PMPrintSettingsSetJobName(d->settings(), QCFString(value.toString()));
|
||||
break;
|
||||
case PPK_FullPage:
|
||||
d->fullPage = value.toBool();
|
||||
break;
|
||||
@ -770,10 +769,6 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const
|
||||
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;
|
||||
@ -807,6 +802,12 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const
|
||||
break;
|
||||
|
||||
// The following keys are properties and settings that are supported by the Mac PrintEngine
|
||||
case PPK_DocumentName: {
|
||||
CFStringRef name;
|
||||
PMPrintSettingsGetJobName(d->settings(), &name);
|
||||
ret = QCFString::toQString(name);
|
||||
break;
|
||||
}
|
||||
case PPK_FullPage:
|
||||
ret = d->fullPage;
|
||||
break;
|
||||
|
@ -237,7 +237,6 @@ QWin32PrintEngine::QWin32PrintEngine(QPrinter::PrinterMode mode)
|
||||
| PaintOutsidePaintEvent))
|
||||
{
|
||||
Q_D(QWin32PrintEngine);
|
||||
d->docName = QLatin1String("document1");
|
||||
d->mode = mode;
|
||||
d->queryDefault();
|
||||
d->initialize();
|
||||
@ -272,7 +271,10 @@ bool QWin32PrintEngine::begin(QPaintDevice *pdev)
|
||||
DOCINFO di;
|
||||
memset(&di, 0, sizeof(DOCINFO));
|
||||
di.cbSize = sizeof(DOCINFO);
|
||||
di.lpszDocName = reinterpret_cast<const wchar_t *>(d->docName.utf16());
|
||||
if (d->docName.isEmpty())
|
||||
di.lpszDocName = L"document1";
|
||||
else
|
||||
di.lpszDocName = reinterpret_cast<const wchar_t *>(d->docName.utf16());
|
||||
if (d->printToFile && !d->fileName.isEmpty())
|
||||
di.lpszOutput = reinterpret_cast<const wchar_t *>(d->fileName.utf16());
|
||||
if (ok && StartDoc(d->hdc, &di) == SP_ERROR) {
|
||||
|
@ -1107,8 +1107,8 @@ void tst_QPrinter::docName()
|
||||
// docName() / setDocName() / PPK_DocumentName
|
||||
// PdfFormat: Supported, default QString()
|
||||
// NativeFormat, Cups: Supported, default QString()
|
||||
// NativeFormat, Win: Supported, default "document1"
|
||||
// NativeFormat, Mac: Unsupported, always QString()
|
||||
// NativeFormat, Win: Supported, default QString()
|
||||
// NativeFormat, Mac: Supported, default QString()
|
||||
|
||||
QPrinter pdf;
|
||||
pdf.setOutputFormat(QPrinter::PdfFormat);
|
||||
@ -1119,18 +1119,11 @@ void tst_QPrinter::docName()
|
||||
QPrinter native;
|
||||
if (native.outputFormat() == QPrinter::NativeFormat) {
|
||||
// Test default
|
||||
#ifdef Q_OS_WIN
|
||||
QCOMPARE(native.docName(), QString("document1"));
|
||||
#else
|
||||
QCOMPARE(native.docName(), QString());
|
||||
#endif // Q_OS_WIN
|
||||
|
||||
// Test set/get
|
||||
QString expected = QStringLiteral("Test Name");
|
||||
native.setDocName(expected);
|
||||
#ifdef Q_OS_MAC
|
||||
expected.clear();
|
||||
#endif // Q_OS_MAC
|
||||
QCOMPARE(native.docName(), expected);
|
||||
|
||||
// Test value preservation
|
||||
|
Loading…
Reference in New Issue
Block a user