summaryrefslogtreecommitdiffstats
path: root/tests/manual/dialogs/printdialogpanel.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-03-05 16:49:14 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-03-05 16:01:59 +0000
commit87af240c86c6d99019fdf60ac5f4e688bac9229a (patch)
tree2faf8f06e4ff95294e5897d0ed242e3871515c1d /tests/manual/dialogs/printdialogpanel.cpp
parenta5d5353b59ab7eb41d37048064f46490f98a228a (diff)
Manual dialog test: Add a message box for printer errors.
Task-number: QTCREATORBUG-13742 Change-Id: I137854eee589cde7a6cf3b841b0b63311e031517 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'tests/manual/dialogs/printdialogpanel.cpp')
-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());
}