diff options
author | John Layt <jlayt@kde.org> | 2014-01-27 13:31:38 -0500 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-17 13:46:07 +0100 |
commit | 70081096a152d6973d85a1c1466bbc058fe0b24b (patch) | |
tree | 4d5ebd9171fe4f0184f3a4c080a2ca57eb3cffd0 /src/printsupport/dialogs/qpagesetupdialog_win.cpp | |
parent | ab42391cd0b4cb0be03d0083f4e0d2b039a85a19 (diff) |
QPrintEngine - Switch Windows to QPageLayout
Switch the Windows QPrintEngine to use QPageLayout.
Change-Id: I2b617fe103980c4efbb0ed367547e436f2d8a5e2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/printsupport/dialogs/qpagesetupdialog_win.cpp')
-rw-r--r-- | src/printsupport/dialogs/qpagesetupdialog_win.cpp | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/src/printsupport/dialogs/qpagesetupdialog_win.cpp b/src/printsupport/dialogs/qpagesetupdialog_win.cpp index 345e698b82..5da87cce18 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_win.cpp +++ b/src/printsupport/dialogs/qpagesetupdialog_win.cpp @@ -106,42 +106,40 @@ int QPageSetupDialog::exec() psd.hwndOwner = parentWindow ? (HWND)QGuiApplication::platformNativeInterface()->nativeResourceForWindow("handle", parentWindow) : 0; psd.Flags = PSD_MARGINS; - double multiplier = 1; - switch (QLocale::system().measurementSystem()) { - case QLocale::MetricSystem: - psd.Flags |= PSD_INHUNDREDTHSOFMILLIMETERS; - multiplier = 1; + QPageLayout layout = d->printer->pageLayout(); + switch (layout.units()) { + case QPageLayout::Millimeter: + case QPageLayout::Inch: break; - case QLocale::ImperialSystem: - case QLocale::ImperialUKSystem: - psd.Flags |= PSD_INTHOUSANDTHSOFINCHES; - multiplier = 25.4/10; + case QPageLayout::Point: + case QPageLayout::Pica: + case QPageLayout::Didot: + case QPageLayout::Cicero: + layout.setUnits(QLocale::system().measurementSystem() == QLocale::MetricSystem ? QPageLayout::Millimeter + : QPageLayout::Inch); break; } - - QRect marginRect = ep->getPageMargins(); - psd.rtMargin.left = marginRect.left() / multiplier; - psd.rtMargin.top = marginRect.top() / multiplier; - psd.rtMargin.right = marginRect.width() / multiplier;; - psd.rtMargin.bottom = marginRect.height() / multiplier;; + qreal multiplier = 1.0; + if (layout.units() == QPageLayout::Millimeter) { + psd.Flags |= PSD_INHUNDREDTHSOFMILLIMETERS; + multiplier = 100.0; + } else { // QPageLayout::Inch) + psd.Flags |= PSD_INTHOUSANDTHSOFINCHES; + multiplier = 1000.0; + } + psd.rtMargin.left = layout.margins().left() * multiplier; + psd.rtMargin.top = layout.margins().top() * multiplier; + psd.rtMargin.right = layout.margins().right() * multiplier; + psd.rtMargin.bottom = layout.margins().bottom() * multiplier; QDialog::setVisible(true); bool result = PageSetupDlg(&psd); QDialog::setVisible(false); if (result) { engine->setGlobalDevMode(psd.hDevNames, psd.hDevMode); - - QRect theseMargins = QRect(psd.rtMargin.left * multiplier, - psd.rtMargin.top * multiplier, - psd.rtMargin.right * multiplier, - psd.rtMargin.bottom * multiplier); - - if (theseMargins != marginRect) { - ep->setPageMargins(psd.rtMargin.left * multiplier, - psd.rtMargin.top * multiplier, - psd.rtMargin.right * multiplier, - psd.rtMargin.bottom * multiplier); - } + d->printer->setPageMargins(QMarginsF(psd.rtMargin.left / multiplier, psd.rtMargin.right / multiplier, + psd.rtMargin.top / multiplier, psd.rtMargin.bottom / multiplier), + layout.units()); // copy from our temp DEVMODE struct if (!engine->globalDevMode() && hDevMode) { |