summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/diveplanner.cpp29
-rw-r--r--qt-ui/diveplanner.h2
-rw-r--r--qt-ui/diveplanner.ui7
-rw-r--r--qt-ui/plannerSettings.ui37
4 files changed, 75 insertions, 0 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index c17758547..516b36b0f 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -276,6 +276,7 @@ DivePlannerWidget::DivePlannerWidget(QWidget *parent, Qt::WindowFlags f) : QWidg
connect(ui.gflow, SIGNAL(valueChanged(int)), plannerModel, SLOT(setGFLow(int)));
connect(ui.gflow, SIGNAL(editingFinished()), plannerModel, SLOT(emitDataChanged()));
connect(ui.printPlan, SIGNAL(pressed()), this, SLOT(printDecoPlan()));
+ connect(ui.drop_stone_mode, SIGNAL(toggled(bool)), plannerModel, SLOT(setDropStoneMode(bool)));
#ifdef NO_PRINTING
ui.printPlan->hide();
#endif
@@ -583,6 +584,28 @@ void DivePlannerPointsModel::setDisplayTransitions(bool value)
emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
}
+void DivePlannerPointsModel::setDropStoneMode(bool value)
+{
+ drop_stone_mode = value;
+ if (drop_stone_mode) {
+ /* Remove the first entry if we enable drop_stone_mode */
+ if (rowCount() >= 2) {
+ beginRemoveRows(QModelIndex(), 0, 0);
+ divepoints.remove(0);
+ endRemoveRows();
+ }
+ } else {
+ /* Add a first entry if we disable drop_stone_mode */
+ beginInsertRows(QModelIndex(), 0, 0);
+ /* Copy the first current point */
+ divedatapoint p = divepoints.at(0);
+ p.time = p.depth / 300;
+ divepoints.push_front(p);
+ endInsertRows();
+ }
+ emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
+}
+
void DivePlannerPointsModel::setStartTime(const QTime &t)
{
diveplan.when = (t.msec() + QDateTime::currentMSecsSinceEpoch()) / 1000 - gettimezoneoffset();
@@ -860,6 +883,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 */
+ /* FIXME: make this configurable, now hard-coded to 18 m/s */
+ plan_add_segment(&diveplan, p.depth / 300, p.depth, p.gasmix, p.po2, false);
+ deltaT -= p.depth / 300;
+ }
if (p.entered)
plan_add_segment(&diveplan, deltaT, p.depth, p.gasmix, p.po2, true);
}
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index 96725550b..0b4e783cb 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -73,6 +73,7 @@ slots:
void setDecoSac(int sac);
void setStartTime(const QTime &t);
void setLastStop6m(bool value);
+ void setDropStoneMode(bool value);
void setVerbatim(bool value);
void setDisplayRuntime(bool value);
void setDisplayDuration(bool value);
@@ -104,6 +105,7 @@ private:
QVector<sample> backupSamples; // For editing added dives.
struct dive *stagingDive;
QVector<QPair<int, int> > oldGases;
+ bool drop_stone_mode;
};
class DiveHandler : public QObject, public QGraphicsEllipseItem {
diff --git a/qt-ui/diveplanner.ui b/qt-ui/diveplanner.ui
index 1aa4376dc..33ec33cbd 100644
--- a/qt-ui/diveplanner.ui
+++ b/qt-ui/diveplanner.ui
@@ -185,6 +185,13 @@
</property>
</widget>
</item>
+ <item row="6" column="0">
+ <widget class="QCheckBox" name="drop_stone_mode">
+ <property name="text">
+ <string>Drop like a stone mode</string>
+ </property>
+ </widget>
+ </item>
<item row="6" column="1">
<widget class="QPushButton" name="printPlan">
<property name="text">
diff --git a/qt-ui/plannerSettings.ui b/qt-ui/plannerSettings.ui
index 547bd8124..82584fa0e 100644
--- a/qt-ui/plannerSettings.ui
+++ b/qt-ui/plannerSettings.ui
@@ -244,6 +244,42 @@
</property>
</widget>
</item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Decent rate</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>surface to the bottom</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="QSpinBox" name="descRate">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>18</number>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
@@ -263,6 +299,7 @@
<tabstop>backgasBreaks</tabstop>
<tabstop>ascRate75_2</tabstop>
<tabstop>ascRate75_3</tabstop>
+ <tabstop>descRate</tabstop>
</tabstops>
<resources/>
<connections/>