diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp
index 437bf7f56..8303afa8a 100644
--- a/core/subsurface-qt/SettingsObjectWrapper.cpp
+++ b/core/subsurface-qt/SettingsObjectWrapper.cpp
@@ -299,6 +299,11 @@ bool TechnicalDetailsSettings::calcndltts() const
return prefs.calcndltts;
}
+bool TechnicalDetailsSettings::buehlmann() const
+{
+ return (prefs.deco_mode == BUEHLMANN);
+}
+
int TechnicalDetailsSettings::gflow() const
{
return prefs.gflow;
@@ -499,6 +504,17 @@ void TechnicalDetailsSettings::setCalcndltts(bool value)
emit calcndlttsChanged(value);
}
+void TechnicalDetailsSettings::setBuehlmann(bool value)
+{
+ if (value == (prefs.deco_mode == BUEHLMANN))
+ return;
+ QSettings s;
+ s.beginGroup(group);
+ s.setValue("buehlmann", value);
+ prefs.deco_mode = value ? BUEHLMANN : VPMB;
+ emit buehlmannChanged(value);
+}
+
void TechnicalDetailsSettings::setGflow(int value)
{
if (value == prefs.gflow)
@@ -2105,6 +2121,11 @@ void SettingsObjectWrapper::load()
GET_BOOL("tankbar", tankbar);
GET_BOOL("RulerBar", rulergraph);
GET_BOOL("percentagegraph", percentagegraph);
+ v = s.value("buehlmann");
+ if (v.isValid())
+ prefs.deco_mode = v.toBool() ? BUEHLMANN : VPMB;
+ else
+ prefs.deco_mode = BUEHLMANN;
GET_INT("gflow", gflow);
GET_INT("gfhigh", gfhigh);
GET_INT("vpmb_conservatism", vpmb_conservatism);
diff --git a/core/subsurface-qt/SettingsObjectWrapper.h b/core/subsurface-qt/SettingsObjectWrapper.h
index 1ab32083b..8097fc3c9 100644
--- a/core/subsurface-qt/SettingsObjectWrapper.h
+++ b/core/subsurface-qt/SettingsObjectWrapper.h
@@ -116,6 +116,7 @@ class TechnicalDetailsSettings : public QObject {
Q_PROPERTY(bool calcceiling3m READ calcceiling3m WRITE setCalcceiling3m NOTIFY calcceiling3mChanged)
Q_PROPERTY(bool calcalltissues READ calcalltissues WRITE setCalcalltissues NOTIFY calcalltissuesChanged)
Q_PROPERTY(bool calcndltts READ calcndltts WRITE setCalcndltts NOTIFY calcndlttsChanged)
+ Q_PROPERTY(bool buehlmann READ buehlmann WRITE setBuehlmann NOTIFY buehlmannChanged)
Q_PROPERTY(int gflow READ gflow WRITE setGflow NOTIFY gflowChanged)
Q_PROPERTY(int gfhigh READ gfhigh WRITE setGfhigh NOTIFY gfhighChanged)
Q_PROPERTY(short vpmb_conservatism READ vpmbConservatism WRITE setVpmbConservatism NOTIFY vpmbConservatismChanged)
@@ -143,6 +144,7 @@ public:
bool calcceiling3m() const;
bool calcalltissues() const;
bool calcndltts() const;
+ bool buehlmann() const;
int gflow() const;
int gfhigh() const;
short vpmbConservatism() const;
@@ -169,6 +171,7 @@ public slots:
void setCalcceiling3m(bool value);
void setCalcalltissues(bool value);
void setCalcndltts(bool value);
+ void setBuehlmann(bool value);
void setGflow(int value);
void setGfhigh(int value);
void setVpmbConservatism(short);
@@ -195,6 +198,7 @@ signals:
void calcceiling3mChanged(bool value);
void calcalltissuesChanged(bool value);
void calcndlttsChanged(bool value);
+ void buehlmannChanged(bool value);
void gflowChanged(int value);
void gfhighChanged(int value);
void vpmbConservatismChanged(short value);
diff --git a/desktop-widgets/preferences/preferences_graph.cpp b/desktop-widgets/preferences/preferences_graph.cpp
index c13915e37..8f3e5e7bf 100644
--- a/desktop-widgets/preferences/preferences_graph.cpp
+++ b/desktop-widgets/preferences/preferences_graph.cpp
@@ -25,6 +25,13 @@ void PreferencesGraph::refreshSettings()
ui->maxpo2->setValue(prefs.modpO2);
ui->red_ceiling->setChecked(prefs.redceiling);
+ if (prefs.deco_mode == BUEHLMANN) {
+ ui->buehlmann->setChecked(true);
+ ui->vpmb->setChecked(false);
+ } else {
+ ui->buehlmann->setChecked(false);
+ ui->vpmb->setChecked(false);
+ }
ui->gflow->setValue(prefs.gflow);
ui->gfhigh->setValue(prefs.gfhigh);
ui->vpmb_conservatism->setValue(prefs.vpmb_conservatism);
@@ -54,6 +61,7 @@ void PreferencesGraph::syncSettings()
auto tech = SettingsObjectWrapper::instance()->techDetails;
tech->setModp02(ui->maxpo2->value());
tech->setRedceiling(ui->red_ceiling->isChecked());
+ tech->setBuehlmann(ui->buehlmann->isChecked());
tech->setGflow(ui->gflow->value());
tech->setGfhigh(ui->gfhigh->value());
tech->setVpmbConservatism(ui->vpmb_conservatism->value());
@@ -73,4 +81,13 @@ void PreferencesGraph::on_gfhigh_valueChanged(int gf)
{
ui->gfhigh->setStyleSheet(DANGER_GF);
}
+
+void PreferencesGraph::on_buehlmann_toggled(bool buehlmann)
+{
+ ui->gfhigh->setEnabled(buehlmann);
+ ui->gflow->setEnabled(buehlmann);
+ ui->gf_low_at_maxdepth->setEnabled(buehlmann);
+ ui->vpmb_conservatism->setEnabled(!buehlmann);
+}
+
#undef DANGER_GF
diff --git a/desktop-widgets/preferences/preferences_graph.h b/desktop-widgets/preferences/preferences_graph.h
index ca40c0a92..328f348a2 100644
--- a/desktop-widgets/preferences/preferences_graph.h
+++ b/desktop-widgets/preferences/preferences_graph.h
@@ -18,10 +18,11 @@ public:
private slots:
void on_gflow_valueChanged(int gf);
void on_gfhigh_valueChanged(int gf);
+ void on_buehlmann_toggled(bool buelmann);
private:
Ui::PreferencesGraph *ui;
};
-#endif
\ No newline at end of file
+#endif
diff --git a/desktop-widgets/preferences/preferences_graph.ui b/desktop-widgets/preferences/preferences_graph.ui
index b8d6a4656..ab5c191c9 100644
--- a/desktop-widgets/preferences/preferences_graph.ui
+++ b/desktop-widgets/preferences/preferences_graph.ui
@@ -7,7 +7,7 @@
0
0
505
- 555
+ 575
@@ -133,31 +133,14 @@
Misc
- -
+
-
GFLow
- -
-
-
- 1
-
-
- 150
-
-
-
- -
-
-
- GFHigh
-
-
-
- -
+
-
1
@@ -167,34 +150,86 @@
+ -
+
+
+ CCR: show setpoints when viewing pO₂
+
+
+
+ -
+
+
+ GFLow at max depth
+
+
+
+ -
+
+
+ 1
+
+
+ 150
+
+
+
-
+
+
+ GFHigh
+
+
+
+ -
+
+
+
+
+
+ 1:
+
+
+
+ -
+
+
+ pSCR ratio
+
+
+
+ -
VPM-B Conservatism
- -
-
-
- +
-
-
- 0
-
-
- 4
+
-
+
+
+ CCR: show individual O₂ sensor values when viewing pO₂
- -
+
-
+
+
+ ℓ/min
+
+
+ 3
+
+
+
+ -
Default CCR set-point for dive planning
- -
+
-
bar
@@ -210,58 +245,40 @@
- -
+
-
pSCR O₂ metabolism rate
- -
-
-
- ℓ/min
-
-
- 3
-
-
-
- -
-
-
- pSCR ratio
-
-
-
- -
-
-
-
-
+
-
+
- 1:
+ +
+
+
+ 0
+
+
+ 4
- -
-
+
-
+
- GFLow at max depth
+ Bühlmann
+
+
+ true
- -
-
+
-
+
- CCR: show setpoints when viewing pO₂
-
-
-
- -
-
-
- CCR: show individual O₂ sensor values when viewing pO₂
+ VPM-B