summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dive.c9
-rw-r--r--dive.h2
-rw-r--r--qt-ui/diveplanner.cpp46
-rw-r--r--qt-ui/diveplanner.h8
-rw-r--r--qt-ui/plannerSettings.ui44
5 files changed, 61 insertions, 48 deletions
diff --git a/dive.c b/dive.c
index 38599b104..22cf3ad46 100644
--- a/dive.c
+++ b/dive.c
@@ -188,15 +188,12 @@ double get_volume_units(unsigned int ml, int *frac, const char **units)
return vol;
}
-int units_to_sac(int volume)
+int units_to_sac(double volume)
{
if(get_units()->volume == CUFT)
- if (volume < 10)
- return cuft_to_l(volume) * 100;
- else
- return cuft_to_l(volume) * 10;
+ return rint(cuft_to_l(volume) * 1000.0);
else
- return volume * 1000;
+ return rint(volume * 1000);
}
unsigned int units_to_depth(double depth)
diff --git a/dive.h b/dive.h
index 8232e5407..fd7959f00 100644
--- a/dive.h
+++ b/dive.h
@@ -99,7 +99,7 @@ extern double get_weight_units(unsigned int grams, int *frac, const char **units
extern double get_vertical_speed_units(unsigned int mms, int *frac, const char **units);
extern unsigned int units_to_depth(double depth);
-extern int units_to_sac(int volume);
+extern int units_to_sac(double volume);
/* Volume in mliter of a cylinder at pressure 'p' */
extern int gas_volume(cylinder_t *cyl, pressure_t p);
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index e51400ac0..6a6f2d6c3 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -350,12 +350,12 @@ void DivePlannerWidget::heightChanged(const int height)
plannerModel->setSurfacePressure(pressure);
}
-void PlannerSettingsWidget::bottomSacChanged(const int bottomSac)
+void PlannerSettingsWidget::bottomSacChanged(const double bottomSac)
{
plannerModel->setBottomSac(bottomSac);
}
-void PlannerSettingsWidget::decoSacChanged(const int decosac)
+void PlannerSettingsWidget::decoSacChanged(const double decosac)
{
plannerModel->setDecoSac(decosac);
}
@@ -408,16 +408,14 @@ PlannerSettingsWidget::PlannerSettingsWidget(QWidget *parent, Qt::WindowFlags f)
connect(ui.bottompo2, SIGNAL(valueChanged(double)), this, SLOT(setBottomPo2(double)));
connect(ui.decopo2, SIGNAL(valueChanged(double)), this, SLOT(setDecoPo2(double)));
connect(ui.drop_stone_mode, SIGNAL(toggled(bool)), plannerModel, SLOT(setDropStoneMode(bool)));
- connect(ui.bottomSAC, SIGNAL(valueChanged(int)), this, SLOT(bottomSacChanged(int)));
- connect(ui.decoStopSAC, SIGNAL(valueChanged(int)), this, SLOT(decoSacChanged(int)));
+ connect(ui.bottomSAC, SIGNAL(valueChanged(double)), this, SLOT(bottomSacChanged(double)));
+ connect(ui.decoStopSAC, SIGNAL(valueChanged(double)), this, SLOT(decoSacChanged(double)));
connect(ui.gfhigh, SIGNAL(valueChanged(int)), plannerModel, SLOT(setGFHigh(int)));
connect(ui.gflow, SIGNAL(valueChanged(int)), plannerModel, SLOT(setGFLow(int)));
connect(ui.gfhigh, SIGNAL(editingFinished()), plannerModel, SLOT(triggerGFHigh()));
connect(ui.gflow, SIGNAL(editingFinished()), plannerModel, SLOT(triggerGFLow()));
connect(ui.backgasBreaks, SIGNAL(toggled(bool)), this, SLOT(setBackgasBreaks(bool)));
-
- ui.bottomSAC->setValue(rint(get_volume_units(prefs.bottomsac, NULL, NULL)));
- ui.decoStopSAC->setValue(rint(get_volume_units(prefs.decosac, NULL, NULL)));
+ settingsChanged();
ui.gflow->setValue(prefs.gflow);
ui.gfhigh->setValue(prefs.gfhigh);
@@ -455,6 +453,9 @@ PlannerSettingsWidget::~PlannerSettingsWidget()
void PlannerSettingsWidget::settingsChanged()
{
QString vs;
+ // don't recurse into setting the value from the ui when setting the ui from the value
+ ui.bottomSAC->blockSignals(true);
+ ui.decoStopSAC->blockSignals(true);
if (get_units()->length == units::FEET) {
vs.append(tr("ft/min"));
ui.lastStop->setText(tr("Last stop at 20ft"));
@@ -469,18 +470,24 @@ void PlannerSettingsWidget::settingsChanged()
if(get_units()->volume == units::CUFT) {
ui.bottomSAC->setSuffix(tr("cuft/min"));
ui.decoStopSAC->setSuffix(tr("cuft/min"));
- ui.bottomSAC->setPrefix(".");
- ui.decoStopSAC->setPrefix(".");
- ui.bottomSAC->setValue(rint(ml_to_cuft(prefs.bottomsac) * 100.0));
- ui.decoStopSAC->setValue(rint(ml_to_cuft(prefs.decosac) * 100.0));
+ ui.bottomSAC->setDecimals(2);
+ ui.bottomSAC->setSingleStep(0.1);
+ ui.decoStopSAC->setDecimals(2);
+ ui.decoStopSAC->setSingleStep(0.1);
+ ui.bottomSAC->setValue(ml_to_cuft(prefs.bottomsac));
+ ui.decoStopSAC->setValue(ml_to_cuft(prefs.decosac));
} else {
ui.bottomSAC->setSuffix(tr("ℓ/min"));
ui.decoStopSAC->setSuffix(tr("ℓ/min"));
- ui.bottomSAC->setPrefix("");
- ui.decoStopSAC->setPrefix("");
- ui.bottomSAC->setValue(rint((double) prefs.bottomsac / 1000.0));
- ui.decoStopSAC->setValue(rint((double) prefs.decosac / 1000.0));
+ ui.bottomSAC->setDecimals(0);
+ ui.bottomSAC->setSingleStep(1);
+ ui.decoStopSAC->setDecimals(0);
+ ui.decoStopSAC->setSingleStep(1);
+ ui.bottomSAC->setValue((double) prefs.bottomsac / 1000.0);
+ ui.decoStopSAC->setValue((double) prefs.decosac / 1000.0);
}
+ ui.bottomSAC->blockSignals(false);
+ ui.decoStopSAC->blockSignals(false);
updateUnitsUI();
ui.ascRate75->setSuffix(vs);
ui.ascRate50->setSuffix(vs);
@@ -703,18 +710,15 @@ void DivePlannerPointsModel::emitDataChanged()
emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
}
-void DivePlannerPointsModel::setBottomSac(int sac)
+void DivePlannerPointsModel::setBottomSac(double sac)
{
- volume_t newSAC;
- newSAC.mliter = units_to_sac(sac);
- diveplan.bottomsac = newSAC.mliter;
+ diveplan.bottomsac = units_to_sac(sac);
prefs.bottomsac = diveplan.bottomsac;
emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
}
-void DivePlannerPointsModel::setDecoSac(int sac)
+void DivePlannerPointsModel::setDecoSac(double sac)
{
- volume_t newSAC;
diveplan.decosac = units_to_sac(sac);
prefs.decosac = diveplan.decosac;
emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index 22c599ab1..468893bba 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -70,8 +70,8 @@ slots:
void triggerGFLow();
void setSurfacePressure(int pressure);
int getSurfacePressure();
- void setBottomSac(int sac);
- void setDecoSac(int sac);
+ void setBottomSac(double sac);
+ void setDecoSac(double sac);
void setStartTime(const QTime &t);
void setStartDate(const QDate &date);
void setLastStop6m(bool value);
@@ -160,8 +160,8 @@ public
slots:
void settingsChanged();
void atmPressureChanged(const QString &pressure);
- void bottomSacChanged(const int bottomSac);
- void decoSacChanged(const int decosac);
+ void bottomSacChanged(const double bottomSac);
+ void decoSacChanged(const double decosac);
void printDecoPlan();
void setAscRate75(int rate);
void setAscRate50(int rate);
diff --git a/qt-ui/plannerSettings.ui b/qt-ui/plannerSettings.ui
index a28453c01..3e323ebc3 100644
--- a/qt-ui/plannerSettings.ui
+++ b/qt-ui/plannerSettings.ui
@@ -30,8 +30,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>1078</width>
- <height>418</height>
+ <width>1084</width>
+ <height>424</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
@@ -367,13 +367,6 @@
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="bottomSAC">
- <property name="suffix">
- <string>ℓ/min</string>
- </property>
- </widget>
- </item>
<item row="1" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
@@ -381,13 +374,6 @@
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="QSpinBox" name="decoStopSAC">
- <property name="suffix">
- <string>ℓ/min</string>
- </property>
- </widget>
- </item>
<item row="2" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
@@ -447,6 +433,32 @@
</property>
</spacer>
</item>
+ <item row="0" column="1">
+ <widget class="QDoubleSpinBox" name="bottomSAC">
+ <property name="suffix">
+ <string>ℓ/min</string>
+ </property>
+ <property name="decimals">
+ <number>0</number>
+ </property>
+ <property name="maximum">
+ <double>99.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QDoubleSpinBox" name="decoStopSAC">
+ <property name="suffix">
+ <string>ℓ/min</string>
+ </property>
+ <property name="decimals">
+ <number>0</number>
+ </property>
+ <property name="maximum">
+ <double>99.000000000000000</double>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>