summaryrefslogtreecommitdiffstats
path: root/src/printsupport
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2011-08-18 11:04:06 +0200
committerLars Knoll <lars.knoll@nokia.com>2011-08-19 09:17:03 +0200
commit28f1c1b9ef10fc3a49a64a535c7747a009939453 (patch)
tree7b8211a4130804ccf7f1210da003eb2792e15fde /src/printsupport
parent6d2c5d9ffe255410c34edbb1c1228e68c9d745bd (diff)
Restore feature compatibility with QPrinter in QTextDocument::print
Add a margin method to QPagedPaintDevice. The other variables required are stored in QPagedPaintDevicePrivate without a public API for now. This needs cleaning up once we have a new printing system. Change-Id: Id3f2d7ac7f3cbce8619072a897d91f3a588add64 Reviewed-on: http://codereview.qt.nokia.com/3211 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src/printsupport')
-rw-r--r--src/printsupport/dialogs/qabstractprintdialog.cpp22
-rw-r--r--src/printsupport/dialogs/qabstractprintdialog_p.h5
-rw-r--r--src/printsupport/kernel/qprinter.cpp31
-rw-r--r--src/printsupport/kernel/qprinter.h2
-rw-r--r--src/printsupport/kernel/qprinter_p.h5
5 files changed, 38 insertions, 27 deletions
diff --git a/src/printsupport/dialogs/qabstractprintdialog.cpp b/src/printsupport/dialogs/qabstractprintdialog.cpp
index ff572dd9f3..73b9c4f14e 100644
--- a/src/printsupport/dialogs/qabstractprintdialog.cpp
+++ b/src/printsupport/dialogs/qabstractprintdialog.cpp
@@ -115,6 +115,9 @@ QAbstractPrintDialog::QAbstractPrintDialog(QPrinter *printer, QWidget *parent)
Q_D(QAbstractPrintDialog);
setWindowTitle(QCoreApplication::translate("QPrintDialog", "Print"));
d->setPrinter(printer);
+ d->minPage = printer->fromPage();
+ int to = printer->toPage();
+ d->maxPage = to > 0 ? to : INT_MAX;
}
/*!
@@ -245,7 +248,7 @@ bool QAbstractPrintDialog::isOptionEnabled(PrintDialogOption option) const
void QAbstractPrintDialog::setPrintRange(PrintRange range)
{
Q_D(QAbstractPrintDialog);
- d->pd->printRange = QPrinter::PrintRange(range);
+ d->printer->setPrintRange(QPrinter::PrintRange(range));
}
/*!
@@ -266,8 +269,8 @@ void QAbstractPrintDialog::setMinMax(int min, int max)
Q_D(QAbstractPrintDialog);
Q_ASSERT_X(min <= max, "QAbstractPrintDialog::setMinMax",
"'min' must be less than or equal to 'max'");
- d->pd->minPage = min;
- d->pd->maxPage = max;
+ d->minPage = min;
+ d->maxPage = max;
d->options |= PrintPageRange;
}
@@ -278,7 +281,7 @@ void QAbstractPrintDialog::setMinMax(int min, int max)
int QAbstractPrintDialog::minPage() const
{
Q_D(const QAbstractPrintDialog);
- return d->pd->minPage;
+ return d->minPage;
}
/*!
@@ -289,7 +292,7 @@ int QAbstractPrintDialog::minPage() const
int QAbstractPrintDialog::maxPage() const
{
Q_D(const QAbstractPrintDialog);
- return d->pd->maxPage;
+ return d->maxPage;
}
/*!
@@ -300,10 +303,9 @@ void QAbstractPrintDialog::setFromTo(int from, int to)
Q_D(QAbstractPrintDialog);
Q_ASSERT_X(from <= to, "QAbstractPrintDialog::setFromTo",
"'from' must be less than or equal to 'to'");
- d->pd->fromPage = from;
- d->pd->toPage = to;
+ d->printer->setFromTo(from, to);
- if (d->pd->minPage == 0 && d->pd->maxPage == 0)
+ if (d->minPage == 0 && d->maxPage == 0)
setMinMax(1, to);
}
@@ -314,7 +316,7 @@ void QAbstractPrintDialog::setFromTo(int from, int to)
int QAbstractPrintDialog::fromPage() const
{
Q_D(const QAbstractPrintDialog);
- return d->pd->fromPage;
+ return d->printer->fromPage();
}
/*!
@@ -324,7 +326,7 @@ int QAbstractPrintDialog::fromPage() const
int QAbstractPrintDialog::toPage() const
{
Q_D(const QAbstractPrintDialog);
- return d->pd->toPage;
+ return d->printer->toPage();
}
diff --git a/src/printsupport/dialogs/qabstractprintdialog_p.h b/src/printsupport/dialogs/qabstractprintdialog_p.h
index 45dd7e1e6a..e329cb3169 100644
--- a/src/printsupport/dialogs/qabstractprintdialog_p.h
+++ b/src/printsupport/dialogs/qabstractprintdialog_p.h
@@ -74,7 +74,8 @@ public:
QAbstractPrintDialogPrivate()
: printer(0), pd(0), ownsPrinter(false)
, options(QAbstractPrintDialog::PrintToFile | QAbstractPrintDialog::PrintPageRange |
- QAbstractPrintDialog::PrintCollateCopies | QAbstractPrintDialog::PrintShowPageSize)
+ QAbstractPrintDialog::PrintCollateCopies | QAbstractPrintDialog::PrintShowPageSize),
+ minPage(0), maxPage(INT_MAX)
{
}
@@ -88,6 +89,8 @@ public:
virtual void setTabs(const QList<QWidget *> &) {}
void setPrinter(QPrinter *newPrinter);
+ int minPage;
+ int maxPage;
};
#endif //QT_NO_PRINTER
diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp
index 3f169755d8..a0740976f4 100644
--- a/src/printsupport/kernel/qprinter.cpp
+++ b/src/printsupport/kernel/qprinter.cpp
@@ -54,6 +54,7 @@
#include "qplatformprintplugin_qpa.h"
#include <QtPrintSupport/QPlatformPrinterSupport>
+#include <private/qpagedpaintdevice_p.h>
#if defined (Q_WS_WIN)
#include <private/qprintengine_win_p.h>
@@ -1153,6 +1154,8 @@ QSizeF QPrinter::paperSize(Unit unit) const
void QPrinter::setPageOrder(PageOrder pageOrder)
{
+ d->pageOrderAscending = (pageOrder == FirstPageFirst);
+
Q_D(QPrinter);
ABORT_IF_ACTIVE("QPrinter::setPageOrder");
d->printEngine->setProperty(QPrintEngine::PPK_PageOrder, pageOrder);
@@ -1659,16 +1662,28 @@ QRect QPrinter::paperRect() const
*/
void QPrinter::setPageMargins(qreal left, qreal top, qreal right, qreal bottom, QPrinter::Unit unit)
{
+ const qreal multiplier = qt_multiplierForUnit(unit, resolution()) * 25.4/72.;
+ Margins m = { left*multiplier, right*multiplier, top*multiplier, bottom*multiplier };
+ setMargins(m);
+}
+
+/*!
+ reimp
+ */
+void QPrinter::setMargins(const Margins &m)
+{
Q_D(QPrinter);
- const qreal multiplier = qt_multiplierForUnit(unit, resolution());
+
+ const qreal multiplier = 72./25.4;
QList<QVariant> margins;
- margins << (left * multiplier) << (top * multiplier)
- << (right * multiplier) << (bottom * multiplier);
+ margins << (m.left * multiplier) << (m.top * multiplier)
+ << (m.right * multiplier) << (m.bottom * multiplier);
d->printEngine->setProperty(QPrintEngine::PPK_PageMargins, margins);
d->addToManualSetList(QPrintEngine::PPK_PageMargins);
d->hasCustomPageMargins = true;
}
+
/*!
\since 4.4
@@ -1972,7 +1987,6 @@ void QPrinter::setPrinterSelectionOption(const QString &option)
int QPrinter::fromPage() const
{
- Q_D(const QPrinter);
return d->fromPage;
}
@@ -1997,7 +2011,6 @@ int QPrinter::fromPage() const
int QPrinter::toPage() const
{
- Q_D(const QPrinter);
return d->toPage;
}
@@ -2020,18 +2033,12 @@ int QPrinter::toPage() const
void QPrinter::setFromTo(int from, int to)
{
- Q_D(QPrinter);
if (from > to) {
qWarning() << "QPrinter::setFromTo: 'from' must be less than or equal to 'to'";
from = to;
}
d->fromPage = from;
d->toPage = to;
-
- if (d->minPage == 0 && d->maxPage == 0) {
- d->minPage = 1;
- d->maxPage = to;
- }
}
/*!
@@ -2041,6 +2048,8 @@ void QPrinter::setFromTo(int from, int to)
*/
void QPrinter::setPrintRange( PrintRange range )
{
+ d->printSelectionOnly = (range == Selection);
+
Q_D(QPrinter);
d->printRange = range;
}
diff --git a/src/printsupport/kernel/qprinter.h b/src/printsupport/kernel/qprinter.h
index 2f91c8b1e9..f3c6615692 100644
--- a/src/printsupport/kernel/qprinter.h
+++ b/src/printsupport/kernel/qprinter.h
@@ -246,6 +246,8 @@ public:
void setPrintRange(PrintRange range);
PrintRange printRange() const;
+ void setMargins(const Margins &m);
+
void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, Unit unit);
void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, Unit unit) const;
diff --git a/src/printsupport/kernel/qprinter_p.h b/src/printsupport/kernel/qprinter_p.h
index 1d5660e4d7..b339612d66 100644
--- a/src/printsupport/kernel/qprinter_p.h
+++ b/src/printsupport/kernel/qprinter_p.h
@@ -79,10 +79,6 @@ public:
, paintEngine(0)
, q_ptr(printer)
, printRange(QPrinter::AllPages)
- , minPage(1)
- , maxPage(INT_MAX)
- , fromPage(0)
- , toPage(0)
, use_default_engine(true)
, validPrinter(false)
, hasCustomPageMargins(false)
@@ -116,7 +112,6 @@ public:
QPrinter *q_ptr;
QPrinter::PrintRange printRange;
- int minPage, maxPage, fromPage, toPage;
uint use_default_engine : 1;
uint had_default_engines : 1;