summaryrefslogtreecommitdiffstats
path: root/src/printsupport/dialogs
diff options
context:
space:
mode:
authorJohn Layt <jlayt@kde.org>2014-01-27 13:31:38 -0500
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-17 13:46:07 +0100
commit70081096a152d6973d85a1c1466bbc058fe0b24b (patch)
tree4d5ebd9171fe4f0184f3a4c080a2ca57eb3cffd0 /src/printsupport/dialogs
parentab42391cd0b4cb0be03d0083f4e0d2b039a85a19 (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')
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_win.cpp52
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) {