[RFC PATCH] Drop like a stone mode in planner

Anton Lundin glance at acc.umu.se
Wed Mar 19 14:52:51 PDT 2014


Anyone with a better idea for a name?
---
 qt-ui/diveplanner.cpp | 13 +++++++++++++
 qt-ui/diveplanner.h   |  2 ++
 qt-ui/diveplanner.ui  |  7 +++++++
 3 files changed, 22 insertions(+)

diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 63a00f7..25a547b 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -959,6 +959,7 @@ DivePlannerWidget::DivePlannerWidget(QWidget *parent, Qt::WindowFlags f) : QWidg
 	connect(ui.gfhigh, SIGNAL(valueChanged(int)), plannerModel, SLOT(setGFHigh(int)));
 	connect(ui.gflow, SIGNAL(valueChanged(int)), plannerModel, SLOT(setGFLow(int)));
 	connect(ui.lastStop, SIGNAL(toggled(bool)), plannerModel, SLOT(setLastStop6m(bool)));
+	connect(ui.drop_stone_mode, SIGNAL(toggled(bool)), plannerModel, SLOT(setDropStoneMode(bool)));
 
 	// Creating the plan
 	connect(ui.buttonBox, SIGNAL(accepted()), plannerModel, SLOT(createPlan()));
@@ -1154,6 +1155,12 @@ void DivePlannerPointsModel::setLastStop6m(bool value)
 	emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
 }
 
+void DivePlannerPointsModel::setDropStoneMode(bool value)
+{
+	drop_stone_mode = value;
+	emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
+}
+
 void DivePlannerPointsModel::setStartTime(const QTime &t)
 {
 	diveplan.when = (t.msec() + QDateTime::currentMSecsSinceEpoch()) / 1000 - gettimezoneoffset();
@@ -1410,6 +1417,12 @@ void DivePlannerPointsModel::createTemporaryPlan()
 		divedatapoint p = at(i);
 		int deltaT = lastIndex != -1 ? p.time - at(lastIndex).time : p.time;
 		lastIndex = i;
+		if (i == 0 && drop_stone_mode) {
+			/* Okay, we add a fist segment where we go down to depth */
+			/* 18 m/s */
+			plan_add_segment(&diveplan, p.depth / 300, p.depth, p.o2, p.he, p.po2);
+			deltaT -= p.depth / 300;
+		}
 		plan_add_segment(&diveplan, deltaT, p.depth, p.o2, p.he, p.po2);
 	}
 	char *cache = NULL;
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index 4679d06..cbb32bc 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -66,6 +66,7 @@ slots:
 	void setDecoSac(int sac);
 	void setStartTime(const QTime &t);
 	void setLastStop6m(bool value);
+	void setDropStoneMode(bool value);
 	void createPlan();
 	void remove(const QModelIndex &index);
 	void cancelPlan();
@@ -89,6 +90,7 @@ private:
 	QVector<sample> backupSamples; // For editing added dives.
 	struct dive *stagingDive;
 	QVector<QPair<int, int> > oldGases;
+	bool drop_stone_mode;
 };
 
 class Button : public QObject, public QGraphicsRectItem {
diff --git a/qt-ui/diveplanner.ui b/qt-ui/diveplanner.ui
index 558be06..d869735 100644
--- a/qt-ui/diveplanner.ui
+++ b/qt-ui/diveplanner.ui
@@ -182,6 +182,13 @@
          </property>
         </widget>
        </item>
+       <item row="6" column="1">
+        <widget class="QCheckBox" name="drop_stone_mode">
+         <property name="text">
+          <string>Drop like a stone mode</string>
+         </property>
+        </widget>
+       </item>
       </layout>
      </widget>
     </widget>
-- 
1.8.3.2



More information about the subsurface mailing list