From 4df1af7b309346bf0f9b6129a580968808f72888 Mon Sep 17 00:00:00 2001
From: "Robert C. Helling" <helling@atdotde.de>
Date: Tue, 25 Nov 2014 21:22:02 +0100
Subject: [PATCH 1/2] A widget to add a set-point change

Signed-off-by: Robert C. Helling <helling@atdotde.de>
---
 qt-ui/profile/profilewidget2.cpp |  1 +
 qt-ui/simplewidgets.cpp          | 31 +++++++++++++++++++++++++++++++
 qt-ui/simplewidgets.h            | 18 ++++++++++++++++++
 subsurface.pro                   |  1 +
 4 files changed, 51 insertions(+)

diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index e1892b2..2e2220e 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -1128,6 +1128,7 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
 			gasChange->addAction(action);
 		}
 	}
+	QAction
 	QAction *action = m.addAction(tr("Add bookmark"), this, SLOT(addBookmark()));
 	action->setData(event->globalPos());
 	if (DiveEventItem *item = dynamic_cast<DiveEventItem *>(sceneItem)) {
diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
index da8a7d0..6ab4566 100644
--- a/qt-ui/simplewidgets.cpp
+++ b/qt-ui/simplewidgets.cpp
@@ -18,6 +18,8 @@
 #include "mainwindow.h"
 #include "helpers.h"
 #include "ui_filterwidget.h"
+#include "libdivecomputer/parser.h"
+
 
 class MinMaxAvgWidgetPrivate {
 public:
@@ -160,6 +162,35 @@ RenumberDialog::RenumberDialog(QWidget *parent) : QDialog(parent), selectedOnly(
 	connect(quit, SIGNAL(activated()), parent, SLOT(close()));
 }
 
+SetpointDialog *SetpointDialog::instance()
+{
+	static SetpointDialog *self = new SetpointDialog(MainWindow::instance());
+	return self;
+}
+
+void SetpointDialog::setpointData(struct divecomputer *divecomputer, int second)
+{
+	dc = divecomputer;
+	time = second;
+}
+
+void SetpointDialog::buttonClicked(QAbstractButton *button)
+{
+	if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) {
+		add_event(dc, time, SAMPLE_EVENT_PO2, 0, ui.spinbox->value(), "SP change");
+	}
+}
+
+SetpointDialog::SetpointDialog(QWidget *parent) : QDialog(parent)
+{
+	ui.setupUi(this);
+	connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
+	QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
+	connect(close, SIGNAL(activated()), this, SLOT(close()));
+	QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
+	connect(quit, SIGNAL(activated()), parent, SLOT(close()));
+}
+
 ShiftTimesDialog *ShiftTimesDialog::instance()
 {
 	static ShiftTimesDialog *self = new ShiftTimesDialog(MainWindow::instance());
diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h
index f9a6fda..c5631fd 100644
--- a/qt-ui/simplewidgets.h
+++ b/qt-ui/simplewidgets.h
@@ -9,11 +9,13 @@ class QAbstractButton;
 #include <stdint.h>
 
 #include "ui_renumber.h"
+#include "ui_setpoint.h"
 #include "ui_shifttimes.h"
 #include "ui_shiftimagetimes.h"
 #include "ui_divecomponentselection.h"
 #include "ui_listfilter.h"
 #include "exif.h"
+#include <dive.h>
 
 class MinMaxAvgWidget : public QWidget {
 	Q_OBJECT
@@ -56,6 +58,22 @@ private:
 	bool selectedOnly;
 };
 
+class SetpointDialog : public QDialog {
+	Q_OBJECT
+public:
+	static SetpointDialog *instance();
+	void setpointData(struct divecomputer *divecomputer, int time);
+private
+slots:
+	void buttonClicked(QAbstractButton *button);
+
+private:
+	explicit SetpointDialog(QWidget *parent);
+	Ui::SetpointDialog ui;
+	struct divecomputer *dc;
+	int time;
+};
+
 class ShiftTimesDialog : public QDialog {
 	Q_OBJECT
 public:
diff --git a/subsurface.pro b/subsurface.pro
index 7a4d8bf..24aab3a 100644
--- a/subsurface.pro
+++ b/subsurface.pro
@@ -220,6 +220,7 @@ FORMS = \
 	qt-ui/preferences.ui \
 	qt-ui/printoptions.ui \
 	qt-ui/renumber.ui \
+	qt-ui/setpoint.ui \
 	qt-ui/shifttimes.ui \
 	qt-ui/shiftimagetimes.ui \
 	qt-ui/webservices.ui \
-- 
1.9.3 (Apple Git-50)

