[PATCH] Support different salinity in planner

Anton Lundin glance at acc.umu.se
Wed Nov 12 14:33:40 PST 2014


Depth is often mentioned in a length unit, but what we care about is
pressure. When diving in fresh water the pressure is lower than the same
depth in salt water. This adds support for using different salinities in
planning.

Signed-off-by: Anton Lundin <glance at acc.umu.se>
---

I really don't know if setting the salinity in create_dive_from_plan is
the right place to do it, but it fitted there.

Also, if you guys feels its a bit to late to get such a patch that
changes the ui (manual screenshots and so in) I'm ok with holding it,
but I think there have bin no screenshots submitted yet...


 dive.h                |  1 +
 planner.c             |  1 +
 qt-ui/diveplanner.cpp | 13 +++++++
 qt-ui/diveplanner.h   |  2 ++
 qt-ui/diveplanner.ui  | 98 ++++++++++++++++++++++++++++++++++++---------------
 5 files changed, 86 insertions(+), 29 deletions(-)

diff --git a/dive.h b/dive.h
index 70c4187..482af6f 100644
--- a/dive.h
+++ b/dive.h
@@ -766,6 +766,7 @@ struct diveplan {
 	int surface_pressure; /* mbar */
 	int bottomsac;	/* ml/min */
 	int decosac;	  /* ml/min */
+	int salinity;
 	short gflow;
 	short gfhigh;
 	struct divedatapoint *dp;
diff --git a/planner.c b/planner.c
index a418190..6f09b8e 100644
--- a/planner.c
+++ b/planner.c
@@ -259,6 +259,7 @@ static void create_dive_from_plan(struct diveplan *diveplan, bool track_gas)
 	printf("in create_dive_from_plan\n");
 	dump_plan(diveplan);
 #endif
+	displayed_dive.salinity = diveplan->salinity;
 	// reset the cylinders and clear out the samples and events of the
 	// displayed dive so we can restart
 	reset_cylinders(&displayed_dive, track_gas);
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index d825c6e..b8d251c 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -297,6 +297,7 @@ DivePlannerWidget::DivePlannerWidget(QWidget *parent, Qt::WindowFlags f) : QWidg
 	connect(ui.dateEdit, SIGNAL(dateChanged(QDate)), plannerModel, SLOT(setStartDate(QDate)));
 	connect(ui.ATMPressure, SIGNAL(valueChanged(int)), this, SLOT(atmPressureChanged(int)));
 	connect(ui.atmHeight, SIGNAL(valueChanged(int)), this, SLOT(heightChanged(int)));
+	connect(ui.salinity, SIGNAL(valueChanged(double)), this, SLOT(salinityChanged(double)));
 	connect(DivePlannerPointsModel::instance(), SIGNAL(startTimeChanged(QDateTime)), this, SLOT(setupStartTime(QDateTime)));
 
 	// Creating (and canceling) the plan
@@ -367,6 +368,12 @@ void DivePlannerWidget::heightChanged(const int height)
 	plannerModel->setSurfacePressure(pressure);
 }
 
+void DivePlannerWidget::salinityChanged(const double salinity)
+{
+	/* Salinity is expressed in weight in grams per 10l */
+	plannerModel->setSalinity(10000 * salinity);
+}
+
 void PlannerSettingsWidget::bottomSacChanged(const double bottomSac)
 {
 	plannerModel->setBottomSac(bottomSac);
@@ -786,6 +793,12 @@ void DivePlannerPointsModel::setSurfacePressure(int pressure)
 	emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
 }
 
+void DivePlannerPointsModel::setSalinity(int salinity)
+{
+	diveplan.salinity = salinity;
+	emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
+}
+
 int DivePlannerPointsModel::getSurfacePressure()
 {
 	return diveplan.surface_pressure;
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index c613ae2..bca0deb 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -70,6 +70,7 @@ slots:
 	void setGFLow(const int ghflow);
 	void triggerGFLow();
 	void setSurfacePressure(int pressure);
+	void setSalinity(int salinity);
 	int getSurfacePressure();
 	void setBottomSac(double sac);
 	void setDecoSac(double sac);
@@ -146,6 +147,7 @@ slots:
 	void settingsChanged();
 	void atmPressureChanged(const int pressure);
 	void heightChanged(const int height);
+	void salinityChanged(const double salinity);
 	void printDecoPlan();
 
 private:
diff --git a/qt-ui/diveplanner.ui b/qt-ui/diveplanner.ui
index 54abcc3..0edd742 100644
--- a/qt-ui/diveplanner.ui
+++ b/qt-ui/diveplanner.ui
@@ -65,7 +65,7 @@
        <property name="spacing">
         <number>2</number>
        </property>
-       <item row="6" column="0" colspan="2">
+       <item row="5" column="0" colspan="3">
         <widget class="TableView" name="tableWidget" native="true">
          <property name="sizePolicy">
           <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
@@ -81,7 +81,7 @@
          </property>
         </widget>
        </item>
-       <item row="5" column="0" colspan="2">
+       <item row="4" column="0" colspan="3">
         <widget class="TableView" name="cylinderTableWidget" native="true">
          <property name="sizePolicy">
           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@@ -110,7 +110,30 @@
          </property>
         </widget>
        </item>
+       <item row="1" column="0">
+        <widget class="QDateEdit" name="dateEdit">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="calendarPopup">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
        <item row="1" column="1">
+        <widget class="QTimeEdit" name="startTime">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2">
         <widget class="QDialogButtonBox" name="buttonBox">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@@ -123,33 +146,6 @@
          </property>
         </widget>
        </item>
-       <item row="1" column="0">
-        <layout class="QHBoxLayout" name="dateAndTime">
-         <item>
-          <widget class="QDateEdit" name="dateEdit">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="calendarPopup">
-            <bool>true</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QTimeEdit" name="startTime">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
        <item row="2" column="0">
         <widget class="QLabel" name="label_7">
          <property name="text">
@@ -164,8 +160,21 @@
          </property>
         </widget>
        </item>
+       <item row="2" column="2">
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>Salinity</string>
+         </property>
+        </widget>
+       </item>
        <item row="3" column="1">
         <widget class="QSpinBox" name="ATMPressure">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="suffix">
           <string>mbar</string>
          </property>
@@ -179,6 +188,12 @@
        </item>
        <item row="3" column="0">
         <widget class="QSpinBox" name="atmHeight">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="suffix">
           <string>m</string>
          </property>
@@ -193,6 +208,31 @@
          </property>
         </widget>
        </item>
+       <item row="3" column="2">
+        <widget class="QDoubleSpinBox" name="salinity">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="suffix">
+          <string> kg/ℓ</string>
+         </property>
+         <property name="minimum">
+          <double>1.000000000000000</double>
+         </property>
+         <property name="maximum">
+          <double>1.050000000000000</double>
+         </property>
+         <property name="singleStep">
+          <double>0.010000000000000</double>
+         </property>
+         <property name="value">
+          <double>1.030000000000000</double>
+         </property>
+        </widget>
+       </item>
       </layout>
      </widget>
     </widget>
-- 
1.9.1



More information about the subsurface mailing list