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:
John Layt 2013-11-29 15:54:06 +01:00 committed by The Qt Project
parent 053bee8b80
commit 27473f19bb
3 changed files with 15 additions and 19 deletions

View File

@ -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;

View File

@ -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) {

View File

@ -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