summaryrefslogtreecommitdiffstats
path: root/qt-ui/diveplanner.cpp
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2014-08-06 10:16:12 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-13 21:11:07 -0600
commitecf0408aae4024f70a3c9689d1de394a2f47a0ff (patch)
tree94b1f74c5d7f24f7e0ee7582101811014c11d1d9 /qt-ui/diveplanner.cpp
parentd453d5cb37dcec5341c9ef8e6063665dc5b629b8 (diff)
downloadsubsurface-ecf0408aae4024f70a3c9689d1de394a2f47a0ff.tar.gz
Make SAC values in planner settings respect unit settings
So far, the fields for the two SAC rates did not show a unit and were implictly l/min. Now they respect the settings for volume units. This was harder than I thought for two reasons: 1) Imperial units for SAC are cuft/min but a typical value would be .70. So I made the point the field prefix and what is entered is actually hundreth of cuft per minute. 2) I had to get the rounding right in order not to get effects like 20l/min become .70 cuft/min (19800 ml/min internally) which would then become 19l/min when switching back. While being at it, I gave the gradient factors '%'-signs as units. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/diveplanner.cpp')
-rw-r--r--qt-ui/diveplanner.cpp26
1 files changed, 22 insertions, 4 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 09320cafe..e51400ac0 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -416,8 +416,8 @@ PlannerSettingsWidget::PlannerSettingsWidget(QWidget *parent, Qt::WindowFlags f)
connect(ui.gflow, SIGNAL(editingFinished()), plannerModel, SLOT(triggerGFLow()));
connect(ui.backgasBreaks, SIGNAL(toggled(bool)), this, SLOT(setBackgasBreaks(bool)));
- ui.bottomSAC->setValue(prefs.bottomsac / 1000.0);
- ui.decoStopSAC->setValue(prefs.decosac / 1000.0);
+ ui.bottomSAC->setValue(rint(get_volume_units(prefs.bottomsac, NULL, NULL)));
+ ui.decoStopSAC->setValue(rint(get_volume_units(prefs.decosac, NULL, NULL)));
ui.gflow->setValue(prefs.gflow);
ui.gfhigh->setValue(prefs.gfhigh);
@@ -466,6 +466,21 @@ void PlannerSettingsWidget::settingsChanged()
ui.asc50to6->setText(tr("50% avg. depth to 6m"));
ui.asc6toSurf->setText(tr("6m to surface"));
}
+ 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));
+ } 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));
+ }
updateUnitsUI();
ui.ascRate75->setSuffix(vs);
ui.ascRate50->setSuffix(vs);
@@ -690,14 +705,17 @@ void DivePlannerPointsModel::emitDataChanged()
void DivePlannerPointsModel::setBottomSac(int sac)
{
- diveplan.bottomsac = sac * 1000;
+ volume_t newSAC;
+ newSAC.mliter = units_to_sac(sac);
+ diveplan.bottomsac = newSAC.mliter;
prefs.bottomsac = diveplan.bottomsac;
emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
}
void DivePlannerPointsModel::setDecoSac(int sac)
{
- diveplan.decosac = sac * 1000;
+ volume_t newSAC;
+ diveplan.decosac = units_to_sac(sac);
prefs.decosac = diveplan.decosac;
emit dataChanged(createIndex(0, 0), createIndex(rowCount() - 1, COLUMNS - 1));
}