From 546d752a4379050eaa8d9056bf1b3b0de88d91e4 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 3 Oct 2016 16:25:48 +0200 Subject: [PATCH 2/5] Add preference to change deco model To: subsurface@subsurface-divelog.org Signed-off-by: Robert C. Helling --- core/subsurface-qt/SettingsObjectWrapper.cpp | 21 ++++ core/subsurface-qt/SettingsObjectWrapper.h | 4 + desktop-widgets/preferences/preferences_graph.cpp | 17 +++ desktop-widgets/preferences/preferences_graph.h | 3 +- desktop-widgets/preferences/preferences_graph.ui | 123 ++++++++++++---------- 5 files changed, 114 insertions(+), 54 deletions(-) diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp index 437bf7f..8303afa 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 1ab3208..8097fc3 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 c13915e..8f3e5e7 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 ca40c0a..328f348 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 b8d6a46..ab5c191 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,15 +133,15 @@ Misc - + GFLow - - + + 1 @@ -150,15 +150,22 @@ - - + + - GFHigh + CCR: show setpoints when viewing pO₂ + + + + + + + GFLow at max depth - + 1 @@ -168,33 +175,61 @@ + + + GFHigh + + + + + + + + + + 1: + + + + + + + pSCR ratio + + + + VPM-B Conservatism - - - - + + + + + CCR: show individual O₂ sensor values when viewing pO₂ - - 0 + + + + + + ℓ/min - - 4 + + 3 - + Default CCR set-point for dive planning - + bar @@ -210,58 +245,40 @@ - + pSCR O₂ metabolism rate - - - - ℓ/min - - - 3 - - - - - - - pSCR ratio + + + + + - - - - - - + + 0 - - 1: + + 4 - - + + - GFLow at max depth + Bühlmann - - - - - - CCR: show setpoints when viewing pO₂ + + true - - + + - CCR: show individual O₂ sensor values when viewing pO₂ + VPM-B -- 2.8.4 (Apple Git-73)