From eb1a49f32c751fb592aa32961fa964adb0473562 Mon Sep 17 00:00:00 2001
From: "Robert C. Helling" <helling@atdotde.de>
Date: Tue, 3 Jun 2014 10:06:18 +0200
Subject: [PATCH 2/3] Add print button to planner

Signed-off-by: Robert C. Helling <helling@atdotde.de>
---
 qt-ui/diveplanner.cpp |  6 ++++++
 qt-ui/diveplanner.h   |  1 +
 qt-ui/diveplanner.ui  | 21 ++++++++++++++-------
 qt-ui/mainwindow.cpp  | 12 ++++++++++++
 qt-ui/mainwindow.h    |  1 +
 5 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 4940f91..63179cc 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -277,6 +277,7 @@ DivePlannerWidget::DivePlannerWidget(QWidget *parent, Qt::WindowFlags f) : QWidg
 	connect(ui.display_duration, SIGNAL(toggled(bool)), plannerModel, SLOT(setDisplayDuration(bool)));
 	connect(ui.display_runtime, SIGNAL(toggled(bool)), plannerModel, SLOT(setDisplayRuntime(bool)));
 	connect(ui.display_transitions, SIGNAL(toggled(bool)), plannerModel, SLOT(setDisplayTransitions(bool)));
+	connect(ui.printPlan, SIGNAL(pressed()), this, SLOT(printDecoPlan()));
 
 	// Creating (and canceling) the plan
 	connect(ui.buttonBox, SIGNAL(accepted()), plannerModel, SLOT(createPlan()));
@@ -320,6 +321,11 @@ void DivePlannerWidget::decoSacChanged(const QString &decosac)
 	plannerModel->setDecoSac(decosac.toInt());
 }
 
+void DivePlannerWidget::printDecoPlan()
+{
+	MainWindow::instance()->printPlan();
+}
+
 void DivePlannerPointsModel::setPlanMode(Mode m)
 {
 	mode = m;
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index 69ff8e6..17ed9de 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -136,6 +136,7 @@ slots:
 	void atmPressureChanged(const QString &pressure);
 	void bottomSacChanged(const QString &bottomSac);
 	void decoSacChanged(const QString &decosac);
+	void printDecoPlan();
 
 private:
 	Ui::DivePlanner ui;
diff --git a/qt-ui/diveplanner.ui b/qt-ui/diveplanner.ui
index 4e10714..0432143 100644
--- a/qt-ui/diveplanner.ui
+++ b/qt-ui/diveplanner.ui
@@ -124,7 +124,7 @@
        <item row="1" column="0">
         <widget class="QTimeEdit" name="startTime"/>
        </item>
-       <item row="11" column="0" colspan="2">
+       <item row="13" column="0" colspan="2">
         <widget class="QDialogButtonBox" name="buttonBox">
          <property name="standardButtons">
           <set>QDialogButtonBox::Abort|QDialogButtonBox::Save</set>
@@ -189,6 +189,16 @@
        <item row="1" column="1">
         <widget class="QLineEdit" name="ATMPressure"/>
        </item>
+       <item row="8" column="0">
+        <widget class="QCheckBox" name="display_transitions">
+         <property name="toolTip">
+          <string>In diveplan, list transitions or treat them as implicit</string>
+         </property>
+         <property name="text">
+          <string>display transitions</string>
+         </property>
+        </widget>
+       </item>
        <item row="7" column="1">
         <widget class="QCheckBox" name="display_duration">
          <property name="toolTip">
@@ -212,13 +222,10 @@
          </property>
         </widget>
        </item>
-       <item row="8" column="0">
-        <widget class="QCheckBox" name="display_transitions">
-         <property name="toolTip">
-          <string>In diveplan, list transitions or treat them as implicit</string>
-         </property>
+       <item row="8" column="1">
+        <widget class="QPushButton" name="printPlan">
          <property name="text">
-          <string>display transitions</string>
+          <string>Print</string>
          </property>
         </widget>
        </item>
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index f9fed3b..13260b5 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -20,6 +20,7 @@
 #include <QStringList>
 #include <QSettings>
 #include <QShortcut>
+#include <QPrintDialog>
 #include <fcntl.h>
 #include "divelistview.h"
 #include "starwidget.h"
@@ -422,6 +423,17 @@ void MainWindow::setPlanNotes(const char *notes)
 	ui.divePlanOutput->setHtml(notes);
 }
 
+void MainWindow::printPlan()
+{
+	QPrinter printer;
+	QPrintDialog *dialog = new QPrintDialog(&printer, this);
+	dialog->setWindowTitle(tr("Print runtime table"));
+	if (dialog->exec() != QDialog::Accepted)
+		return;
+
+	ui.divePlanOutput->print(&printer);
+}
+
 void MainWindow::on_actionDivePlanner_triggered()
 {
 	if(!plannerStateClean())
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index c8c792e..5cdae0d 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -78,6 +78,7 @@ public:
 	void setLoadedWithFiles(bool filesFromCommandLine);
 	bool filesFromCommandLine() const;
 	void setPlanNotes(const char *notes);
+	void printPlan();
 private
 slots:
 	/* file menu action */
-- 
1.8.5.2 (Apple Git-48)

