summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/printdialog.cpp20
-rw-r--r--qt-ui/printdialog.h1
2 files changed, 21 insertions, 0 deletions
diff --git a/qt-ui/printdialog.cpp b/qt-ui/printdialog.cpp
index d1553aeea..472b7d942 100644
--- a/qt-ui/printdialog.cpp
+++ b/qt-ui/printdialog.cpp
@@ -11,6 +11,8 @@
#include <QPrintPreviewDialog>
#include <QPrintDialog>
#include <QShortcut>
+#include <QPrinterInfo>
+#include <QMessageBox>
PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f)
{
@@ -65,8 +67,24 @@ PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f
connect(quit, SIGNAL(activated()), parent, SLOT(close()));
}
+bool PrintDialog::checkForAvailablePrinters(void)
+{
+ QList<QPrinterInfo> list = QPrinterInfo::availablePrinters();
+ if (!list.length()) {
+ QMessageBox msgBox;
+ msgBox.setIcon(QMessageBox::Critical);
+ msgBox.setText(tr("Subsurface cannot find installed printers on this system!"));
+ msgBox.setWindowIcon(QIcon(":subsurface-icon"));
+ msgBox.exec();
+ return false;
+ }
+ return true;
+}
+
void PrintDialog::previewClicked(void)
{
+ if (!checkForAvailablePrinters())
+ return;
QPrintPreviewDialog previewDialog(&printer, this);
connect(&previewDialog, SIGNAL(paintRequested(QPrinter *)), this, SLOT(onPaintRequested(QPrinter *)));
previewDialog.exec();
@@ -74,6 +92,8 @@ void PrintDialog::previewClicked(void)
void PrintDialog::printClicked(void)
{
+ if (!checkForAvailablePrinters())
+ return;
QPrintDialog printDialog(&printer, this);
if (printDialog.exec() == QDialog::Accepted){
printLayout->print();
diff --git a/qt-ui/printdialog.h b/qt-ui/printdialog.h
index 32069a278..b29021838 100644
--- a/qt-ui/printdialog.h
+++ b/qt-ui/printdialog.h
@@ -18,6 +18,7 @@ public:
explicit PrintDialog(QWidget *parent = 0, Qt::WindowFlags f = 0);
private:
+ bool checkForAvailablePrinters(void);
PrintOptions *optionsWidget;
PrintLayout *printLayout;
QProgressBar *progressBar;