summaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-03-09 10:22:45 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-03-09 10:23:15 +0100
commit6cef72d0b4f6cd676203688a2562f0a9a620c7fb (patch)
treed45d59493e942e4489c6428e40ea979eb373eec5 /tests/manual
parentf7118e7f1b495fc0a0b8d83dff1a207dfddb09aa (diff)
parent1cd8d67d5f9bb0cd17147481544db8fb9342354d (diff)
Merge remote-tracking branch 'origin/5.5' into dev
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/dialogs/printdialogpanel.cpp49
1 files changed, 41 insertions, 8 deletions
diff --git a/tests/manual/dialogs/printdialogpanel.cpp b/tests/manual/dialogs/printdialogpanel.cpp
index d7291b016d..202a291e5f 100644
--- a/tests/manual/dialogs/printdialogpanel.cpp
+++ b/tests/manual/dialogs/printdialogpanel.cpp
@@ -50,6 +50,7 @@
#include <QGridLayout>
#include <QFormLayout>
#include <QVBoxLayout>
+#include <QMessageBox>
#include <QDoubleSpinBox>
#include <QPainter>
#include <QFont>
@@ -258,9 +259,27 @@ static void drawVertCmRuler(QPainter &painter, int x, int y1, int y2)
}
}
-static void print(QPrinter *printer)
+static bool print(QPrinter *printer, QString *errorMessage)
{
- QPainter painter(printer);
+ QPainter painter;
+
+ if (!printer->isValid()) {
+ *errorMessage = QLatin1String("Invalid printer.");
+ return false;
+ }
+
+ if (printer->printerState() != QPrinter::Idle) {
+ *errorMessage = QLatin1String("Printer not idle (state ")
+ + QString::number(printer->printerState())
+ + QLatin1String(").");
+ return false;
+ }
+
+ if (!painter.begin(printer)) {
+ *errorMessage = QLatin1String("QPainter::begin() failed.");
+ return false;
+ }
+
const QRectF pageF = printer->pageRect();
QFont font = painter.font();
@@ -280,8 +299,8 @@ static void print(QPrinter *printer)
<< *printer;
if (!painter.device()->logicalDpiY() || !painter.device()->logicalDpiX()) {
- qWarning() << Q_FUNC_INFO << "Bailing out due to invalid DPI: " << msg;
- return;
+ *errorMessage = QLatin1String("Bailing out due to invalid DPI.");
+ return false;
}
painter.drawRect(pageF);
@@ -296,7 +315,21 @@ static void print(QPrinter *printer)
textPoint.ry() += (15 * charHeight) / 10;
}
- painter.end();
+ if (!painter.end()) {
+ *errorMessage = QLatin1String("QPainter::end() failed.");
+ return false;
+ }
+
+ return true;
+}
+
+static bool print(QPrinter *printer, QWidget *dialogParent)
+{
+ QString errorMessage;
+ const bool result = print(printer, &errorMessage);
+ if (!result)
+ QMessageBox::warning(dialogParent, QLatin1String("Printing Failed"), errorMessage);
+ return result;
}
class PrintPreviewDialog : public QPrintPreviewDialog {
@@ -308,7 +341,7 @@ public:
}
public slots:
- void slotPaintRequested(QPrinter *p) { print(p); }
+ void slotPaintRequested(QPrinter *p) { print(p, this); }
};
PrintDialogPanel::PrintDialogPanel(QWidget *parent)
@@ -669,7 +702,7 @@ void PrintDialogPanel::showPrintDialog()
dialog.setOptions(m_panel.m_dialogOptionsGroupBox->value<QPrintDialog::PrintDialogOptions>());
if (dialog.exec() == QDialog::Accepted) {
retrieveSettings(m_printer.data());
- print(m_printer.data());
+ print(m_printer.data(), this);
}
}
@@ -693,7 +726,7 @@ void PrintDialogPanel::showPageSetupDialog()
void PrintDialogPanel::directPrint()
{
applySettings(m_printer.data());
- print(m_printer.data());
+ print(m_printer.data(), this);
retrieveSettings(m_printer.data());
}