diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2011-08-18 11:04:06 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@nokia.com> | 2011-08-19 09:17:03 +0200 |
commit | 28f1c1b9ef10fc3a49a64a535c7747a009939453 (patch) | |
tree | 7b8211a4130804ccf7f1210da003eb2792e15fde /src/printsupport | |
parent | 6d2c5d9ffe255410c34edbb1c1228e68c9d745bd (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.cpp | 22 | ||||
-rw-r--r-- | src/printsupport/dialogs/qabstractprintdialog_p.h | 5 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 31 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter.h | 2 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter_p.h | 5 |
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; |