diff options
Diffstat (limited to 'tests/manual/dialogs/printdialogpanel.cpp')
-rw-r--r-- | tests/manual/dialogs/printdialogpanel.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/tests/manual/dialogs/printdialogpanel.cpp b/tests/manual/dialogs/printdialogpanel.cpp index d0684f6e35..5c89055e22 100644 --- a/tests/manual/dialogs/printdialogpanel.cpp +++ b/tests/manual/dialogs/printdialogpanel.cpp @@ -47,6 +47,7 @@ #include <QPrinter> #include <QPrintDialog> #include <QPrintPreviewDialog> +#include <QPageSetupDialog> #include <QApplication> #include <QDesktopWidget> #include <QGroupBox> @@ -211,15 +212,9 @@ static void print(QPrinter *printer) QPainter painter(printer); const QRectF pageF = printer->pageRect(); - painter.drawRect(pageF); - - drawHorizCmRuler(painter, pageF.x(), pageF.right(), pageF.height() /2); - drawVertCmRuler(painter, pageF.x() + pageF.width() / 2, pageF.top(), pageF.bottom()); - QFont font = painter.font(); font.setFamily("Courier"); font.setPointSize(10); - painter.setFont(font); // Format message. const int charHeight = QFontMetrics(font).boundingRect('X').height(); @@ -233,6 +228,17 @@ static void print(QPrinter *printer) << "\nFont: " << font.family() << ' ' << font.pointSize() << '\n' << *printer; + if (!painter.device()->logicalDpiY() || !painter.device()->logicalDpiX()) { + qWarning() << Q_FUNC_INFO << "Bailing out due to invalid DPI: " << msg; + return; + } + + painter.drawRect(pageF); + + drawHorizCmRuler(painter, pageF.x(), pageF.right(), pageF.height() /2); + drawVertCmRuler(painter, pageF.x() + pageF.width() / 2, pageF.top(), pageF.bottom()); + + painter.setFont(font); QPointF textPoint = pageF.topLeft() + QPoint(10, charHeight + 10); foreach (const QString &line, msg.split('\n')) { painter.drawText(textPoint, line); @@ -330,6 +336,9 @@ PrintDialogPanel::PrintDialogPanel(QWidget *parent) button = new QPushButton(tr("Preview..."), m_dialogsGroupBox); connect(button, SIGNAL(clicked()), this, SLOT(showPreviewDialog())); vBoxLayout->addWidget(button); + button = new QPushButton(tr("Page Setup..."), m_dialogsGroupBox); + connect(button, SIGNAL(clicked()), this, SLOT(showPageSetupDialog())); + vBoxLayout->addWidget(button); QGridLayout *gridLayout = new QGridLayout(this); gridLayout->addWidget(m_creationGroupBox, 0, 0); @@ -414,6 +423,14 @@ void PrintDialogPanel::showPreviewDialog() retrieveSettings(m_printer.data()); } +void PrintDialogPanel::showPageSetupDialog() +{ + applySettings(m_printer.data()); + QPageSetupDialog dialog(m_printer.data(), this); + if (dialog.exec() == QDialog::Accepted) + retrieveSettings(m_printer.data()); +} + #include "printdialogpanel.moc" #endif // !QT_NO_PRINTER |