diff options
-rw-r--r-- | core/pref.h | 3 | ||||
-rw-r--r-- | core/subsurface-qt/SettingsObjectWrapper.cpp | 35 | ||||
-rw-r--r-- | core/subsurface-qt/SettingsObjectWrapper.h | 22 | ||||
-rw-r--r-- | core/subsurfacestartup.c | 3 | ||||
-rw-r--r-- | desktop-widgets/preferences/preferences_graph.cpp | 6 | ||||
-rw-r--r-- | desktop-widgets/preferences/preferences_graph.ui | 234 | ||||
-rw-r--r-- | profile-widget/profilewidget2.cpp | 12 |
7 files changed, 178 insertions, 137 deletions
diff --git a/core/pref.h b/core/pref.h index 9122800bb..9cefd0812 100644 --- a/core/pref.h +++ b/core/pref.h @@ -14,7 +14,8 @@ typedef struct short po2; short pn2; short phe; - double po2_threshold; + double po2_threshold_min; + double po2_threshold_max; double pn2_threshold; double phe_threshold; } partial_pressure_graphs_t; diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp index f5d2e0f9a..a22b0c015 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/core/subsurface-qt/SettingsObjectWrapper.cpp @@ -166,11 +166,17 @@ short PartialPressureGasSettings::showPhe() const return prefs.pp_graphs.phe; } -double PartialPressureGasSettings::po2Threshold() const +double PartialPressureGasSettings::po2ThresholdMin() const { - return prefs.pp_graphs.po2_threshold; + return prefs.pp_graphs.po2_threshold_min; } +double PartialPressureGasSettings::po2ThresholdMax() const +{ + return prefs.pp_graphs.po2_threshold_max; +} + + double PartialPressureGasSettings::pn2Threshold() const { return prefs.pp_graphs.pn2_threshold; @@ -217,16 +223,28 @@ void PartialPressureGasSettings::setShowPhe(short value) emit showPheChanged(value); } -void PartialPressureGasSettings::setPo2Threshold(double value) +void PartialPressureGasSettings::setPo2ThresholdMin(double value) +{ + if (value == prefs.pp_graphs.po2_threshold_min) + return; + + QSettings s; + s.beginGroup(group); + s.setValue("po2thresholdmin", value); + prefs.pp_graphs.po2_threshold_min = value; + emit po2ThresholdMinChanged(value); +} + +void PartialPressureGasSettings::setPo2ThresholdMax(double value) { - if (value == prefs.pp_graphs.po2_threshold) + if (value == prefs.pp_graphs.po2_threshold_max) return; QSettings s; s.beginGroup(group); - s.setValue("po2threshold", value); - prefs.pp_graphs.po2_threshold = value; - emit po2ThresholdChanged(value); + s.setValue("po2thresholdmax", value); + prefs.pp_graphs.po2_threshold_max = value; + emit po2ThresholdMaxChanged(value); } void PartialPressureGasSettings::setPn2Threshold(double value) @@ -2167,7 +2185,8 @@ void SettingsObjectWrapper::load() GET_BOOL("po2graph", pp_graphs.po2); GET_BOOL("pn2graph", pp_graphs.pn2); GET_BOOL("phegraph", pp_graphs.phe); - GET_DOUBLE("po2threshold", pp_graphs.po2_threshold); + GET_DOUBLE("po2thresholdmin", pp_graphs.po2_threshold_min); + GET_DOUBLE("po2thresholdmax", pp_graphs.po2_threshold_max); GET_DOUBLE("pn2threshold", pp_graphs.pn2_threshold); GET_DOUBLE("phethreshold", pp_graphs.phe_threshold); GET_BOOL("mod", mod); diff --git a/core/subsurface-qt/SettingsObjectWrapper.h b/core/subsurface-qt/SettingsObjectWrapper.h index 1d35dd5d5..51cf4b0ae 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.h +++ b/core/subsurface-qt/SettingsObjectWrapper.h @@ -69,19 +69,21 @@ private: /* Control the state of the Partial Pressure Graphs preferences */ class PartialPressureGasSettings : public QObject { Q_OBJECT - Q_PROPERTY(short show_po2 READ showPo2 WRITE setShowPo2 NOTIFY showPo2Changed) - Q_PROPERTY(short show_pn2 READ showPn2 WRITE setShowPn2 NOTIFY showPn2Changed) - Q_PROPERTY(short show_phe READ showPhe WRITE setShowPhe NOTIFY showPheChanged) - Q_PROPERTY(double po2_threshold READ po2Threshold WRITE setPo2Threshold NOTIFY po2ThresholdChanged) - Q_PROPERTY(double pn2_threshold READ pn2Threshold WRITE setPn2Threshold NOTIFY pn2ThresholdChanged) - Q_PROPERTY(double phe_threshold READ pheThreshold WRITE setPheThreshold NOTIFY pheThresholdChanged) + Q_PROPERTY(short show_po2 READ showPo2 WRITE setShowPo2 NOTIFY showPo2Changed) + Q_PROPERTY(short show_pn2 READ showPn2 WRITE setShowPn2 NOTIFY showPn2Changed) + Q_PROPERTY(short show_phe READ showPhe WRITE setShowPhe NOTIFY showPheChanged) + Q_PROPERTY(double po2_threshold_min READ po2ThresholdMin WRITE setPo2ThresholdMin NOTIFY po2ThresholdMinChanged) + Q_PROPERTY(double po2_threshold_max READ po2ThresholdMax WRITE setPo2ThresholdMax NOTIFY po2ThresholdMaxChanged) + Q_PROPERTY(double pn2_threshold READ pn2Threshold WRITE setPn2Threshold NOTIFY pn2ThresholdChanged) + Q_PROPERTY(double phe_threshold READ pheThreshold WRITE setPheThreshold NOTIFY pheThresholdChanged) public: PartialPressureGasSettings(QObject *parent); short showPo2() const; short showPn2() const; short showPhe() const; - double po2Threshold() const; + double po2ThresholdMin() const; + double po2ThresholdMax() const; double pn2Threshold() const; double pheThreshold() const; @@ -89,7 +91,8 @@ public slots: void setShowPo2(short value); void setShowPn2(short value); void setShowPhe(short value); - void setPo2Threshold(double value); + void setPo2ThresholdMin(double value); + void setPo2ThresholdMax(double value); void setPn2Threshold(double value); void setPheThreshold(double value); @@ -97,7 +100,8 @@ signals: void showPo2Changed(short value); void showPn2Changed(short value); void showPheChanged(short value); - void po2ThresholdChanged(double value); + void po2ThresholdMaxChanged(double value); + void po2ThresholdMinChanged(double value); void pn2ThresholdChanged(double value); void pheThresholdChanged(double value); diff --git a/core/subsurfacestartup.c b/core/subsurfacestartup.c index 89ecbd2fb..c2ab42583 100644 --- a/core/subsurfacestartup.c +++ b/core/subsurfacestartup.c @@ -20,7 +20,8 @@ struct preferences default_prefs = { .po2 = false, .pn2 = false, .phe = false, - .po2_threshold = 1.6, + .po2_threshold_min = 0.16, + .po2_threshold_max = 1.6, .pn2_threshold = 4.0, .phe_threshold = 13.0, }, diff --git a/desktop-widgets/preferences/preferences_graph.cpp b/desktop-widgets/preferences/preferences_graph.cpp index 03f09166c..b4fd81fd1 100644 --- a/desktop-widgets/preferences/preferences_graph.cpp +++ b/desktop-widgets/preferences/preferences_graph.cpp @@ -20,7 +20,8 @@ PreferencesGraph::~PreferencesGraph() void PreferencesGraph::refreshSettings() { ui->pheThreshold->setValue(prefs.pp_graphs.phe_threshold); - ui->po2Threshold->setValue(prefs.pp_graphs.po2_threshold); + ui->po2ThresholdMax->setValue(prefs.pp_graphs.po2_threshold_max); + ui->po2ThresholdMin->setValue(prefs.pp_graphs.po2_threshold_min); ui->pn2Threshold->setValue(prefs.pp_graphs.pn2_threshold); ui->maxpo2->setValue(prefs.modpO2); ui->red_ceiling->setChecked(prefs.redceiling); @@ -56,7 +57,8 @@ void PreferencesGraph::syncSettings() auto pp_gas = SettingsObjectWrapper::instance()->pp_gas; pp_gas->setPheThreshold(ui->pheThreshold->value()); - pp_gas->setPo2Threshold(ui->po2Threshold->value()); + pp_gas->setPo2ThresholdMax(ui->po2ThresholdMax->value()); + pp_gas->setPo2ThresholdMin(ui->po2ThresholdMin->value()); pp_gas->setPn2Threshold(ui->pn2Threshold->value()); auto tech = SettingsObjectWrapper::instance()->techDetails; diff --git a/desktop-widgets/preferences/preferences_graph.ui b/desktop-widgets/preferences/preferences_graph.ui index 881c057ec..4b4cccb0d 100644 --- a/desktop-widgets/preferences/preferences_graph.ui +++ b/desktop-widgets/preferences/preferences_graph.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>650</width> - <height>581</height> + <height>634</height> </rect> </property> <property name="windowTitle"> @@ -26,12 +26,12 @@ <bool>true</bool> </property> <property name="text"> - <string>Threshold for pO₂</string> + <string>Threshold for pO₂ (minimum, maximum)</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QDoubleSpinBox" name="po2Threshold"> + <item row="1" column="1"> + <widget class="QDoubleSpinBox" name="pn2Threshold"> <property name="enabled"> <bool>true</bool> </property> @@ -49,12 +49,19 @@ <bool>true</bool> </property> <property name="text"> - <string>Threshold for pN₂</string> + <string>Threshold for pN₂ (maximum only)</string> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QDoubleSpinBox" name="pn2Threshold"> + <item row="4" column="0"> + <widget class="QLabel" name="label_26"> + <property name="text"> + <string>CCR options:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QDoubleSpinBox" name="pheThreshold"> <property name="enabled"> <bool>true</bool> </property> @@ -66,18 +73,8 @@ </property> </widget> </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_17"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="text"> - <string>Threshold for pHe</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QDoubleSpinBox" name="pheThreshold"> + <item row="3" column="1"> + <widget class="QDoubleSpinBox" name="maxpo2"> <property name="enabled"> <bool>true</bool> </property> @@ -89,33 +86,30 @@ </property> </widget> </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_18"> + <item row="2" column="0"> + <widget class="QLabel" name="label_17"> <property name="enabled"> <bool>true</bool> </property> <property name="text"> - <string>pO₂ in calculating MOD</string> + <string>Threshold for pHe (maximum only)</string> </property> </widget> </item> - <item row="3" column="1"> - <widget class="QDoubleSpinBox" name="maxpo2"> + <item row="3" column="0"> + <widget class="QLabel" name="label_18"> <property name="enabled"> <bool>true</bool> </property> - <property name="suffix"> - <string>bar</string> - </property> - <property name="singleStep"> - <double>0.100000000000000</double> + <property name="text"> + <string>pO₂ in calculating MOD (maximum only )</string> </property> </widget> </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_26"> + <item row="5" column="1" colspan="2"> + <widget class="QCheckBox" name="show_ccr_setpoint"> <property name="text"> - <string>CCR options:</string> + <string>Show setpoints when viewing pO₂</string> </property> </widget> </item> @@ -142,13 +136,6 @@ </property> </widget> </item> - <item row="5" column="1" colspan="2"> - <widget class="QCheckBox" name="show_ccr_setpoint"> - <property name="text"> - <string>Show setpoints when viewing pO₂</string> - </property> - </widget> - </item> <item row="6" column="1" colspan="2"> <widget class="QCheckBox" name="show_ccr_sensors"> <property name="text"> @@ -156,42 +143,41 @@ </property> </widget> </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_5"> - <property name="title"> - <string>Ceiling display setup</string> - </property> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="red_ceiling"> + <item row="0" column="2"> + <widget class="QDoubleSpinBox" name="po2ThresholdMax"> <property name="enabled"> <bool>true</bool> </property> - <property name="text"> - <string>Draw dive computer reported ceiling red</string> + <property name="suffix"> + <string>bar</string> + </property> + <property name="singleStep"> + <double>0.100000000000000</double> </property> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_22"> + <item row="0" column="1"> + <widget class="QDoubleSpinBox" name="po2ThresholdMin"> <property name="enabled"> <bool>true</bool> </property> - <property name="text"> - <string>Algorithm for calculated ceiling:</string> + <property name="suffix"> + <string>bar</string> </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QRadioButton" name="vpmb"> - <property name="text"> - <string>VPM-B</string> + <property name="singleStep"> + <double>0.010000000000000</double> </property> </widget> </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_5"> + <property name="title"> + <string>Ceiling display setup</string> + </property> + <layout class="QGridLayout" name="gridLayout_3"> <item row="2" column="1"> <widget class="QLabel" name="label_VPMB"> <property name="text"> @@ -202,29 +188,46 @@ </property> </widget> </item> - <item row="2" column="2"> - <widget class="QSpinBox" name="vpmb_conservatism"> - <property name="prefix"> - <string>+</string> - </property> - <property name="minimum"> - <number>0</number> + <item row="1" column="0"> + <widget class="QLabel" name="label_22"> + <property name="enabled"> + <bool>true</bool> </property> - <property name="maximum"> - <number>4</number> + <property name="text"> + <string>Algorithm for calculated ceiling:</string> </property> </widget> </item> <item row="3" column="0"> <widget class="QRadioButton" name="buehlmann"> <property name="text"> - <string>Bühlmann</string> + <string>B&ühlmann</string> </property> <property name="checked"> <bool>true</bool> </property> </widget> </item> + <item row="0" column="0" colspan="2"> + <widget class="QCheckBox" name="red_ceiling"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>Draw dive computer reported ceiling red</string> + </property> + </widget> + </item> + <item row="5" column="4"> + <widget class="QSpinBox" name="pscrfactor"> + <property name="suffix"> + <string/> + </property> + <property name="prefix"> + <string>1:</string> + </property> + </widget> + </item> <item row="3" column="3"> <widget class="QLabel" name="label_GFhigh"> <property name="text"> @@ -235,8 +238,18 @@ </property> </widget> </item> - <item row="3" column="4"> - <widget class="QSpinBox" name="gfhigh"> + <item row="5" column="2"> + <widget class="QDoubleSpinBox" name="psro2rate"> + <property name="suffix"> + <string>ℓ/min</string> + </property> + <property name="decimals"> + <number>3</number> + </property> + </widget> + </item> + <item row="3" column="2"> + <widget class="QSpinBox" name="gflow"> <property name="suffix"> <string>%</string> </property> @@ -248,26 +261,23 @@ </property> </widget> </item> - <item row="3" column="1"> - <widget class="QLabel" name="label_GFlow"> + <item row="5" column="1"> + <widget class="QLabel" name="MetabolicRate"> <property name="text"> - <string>GFLow</string> + <string>Metabolic rate O₂</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> - <item row="3" column="2"> - <widget class="QSpinBox" name="gflow"> - <property name="suffix"> - <string>%</string> - </property> - <property name="minimum"> - <number>1</number> + <item row="5" column="3"> + <widget class="QLabel" name="label_28"> + <property name="text"> + <string>Dilution ratio</string> </property> - <property name="maximum"> - <number>150</number> + <property name="alignment"> + <set>Qt::AlignCenter</set> </property> </widget> </item> @@ -278,6 +288,19 @@ </property> </widget> </item> + <item row="2" column="2"> + <widget class="QSpinBox" name="vpmb_conservatism"> + <property name="prefix"> + <string>+</string> + </property> + <property name="minimum"> + <number>0</number> + </property> + <property name="maximum"> + <number>4</number> + </property> + </widget> + </item> <item row="5" column="0"> <widget class="QLabel" name="pSCR"> <property name="text"> @@ -285,46 +308,36 @@ </property> </widget> </item> - <item row="5" column="1"> - <widget class="QLabel" name="MetabolicRate"> + <item row="2" column="0"> + <widget class="QRadioButton" name="vpmb"> <property name="text"> - <string>Metabolic rate O₂</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> + <string>&VPM-B</string> </property> </widget> </item> - <item row="5" column="2"> - <widget class="QDoubleSpinBox" name="psro2rate"> + <item row="3" column="4"> + <widget class="QSpinBox" name="gfhigh"> <property name="suffix"> - <string>ℓ/min</string> + <string>%</string> </property> - <property name="decimals"> - <number>3</number> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>150</number> </property> </widget> </item> - <item row="5" column="3"> - <widget class="QLabel" name="label_28"> + <item row="3" column="1"> + <widget class="QLabel" name="label_GFlow"> <property name="text"> - <string>Dilution ratio</string> + <string>GFLow</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> - <item row="5" column="4"> - <widget class="QSpinBox" name="pscrfactor"> - <property name="suffix"> - <string/> - </property> - <property name="prefix"> - <string>1:</string> - </property> - </widget> - </item> </layout> </widget> </item> @@ -367,7 +380,6 @@ </layout> </widget> <tabstops> - <tabstop>po2Threshold</tabstop> <tabstop>pn2Threshold</tabstop> <tabstop>pheThreshold</tabstop> <tabstop>maxpo2</tabstop> diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index c10263fc0..bae8bb6d9 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -351,13 +351,15 @@ void ProfileWidget2::setupItemOnScene() CREATE_PP_GAS(pn2GasItem, PN2, PN2, PN2_ALERT, &prefs.pp_graphs.pn2_threshold); CREATE_PP_GAS(pheGasItem, PHE, PHE, PHE_ALERT, &prefs.pp_graphs.phe_threshold); - CREATE_PP_GAS(po2GasItem, PO2, PO2, PO2_ALERT, &prefs.pp_graphs.po2_threshold); - CREATE_PP_GAS(o2SetpointGasItem, O2SETPOINT, PO2_ALERT, PO2_ALERT, &prefs.pp_graphs.po2_threshold); - CREATE_PP_GAS(ccrsensor1GasItem, CCRSENSOR1, CCRSENSOR1, PO2_ALERT, &prefs.pp_graphs.po2_threshold); - CREATE_PP_GAS(ccrsensor2GasItem, CCRSENSOR2, CCRSENSOR2, PO2_ALERT, &prefs.pp_graphs.po2_threshold); - CREATE_PP_GAS(ccrsensor3GasItem, CCRSENSOR3, CCRSENSOR3, PO2_ALERT, &prefs.pp_graphs.po2_threshold); + CREATE_PP_GAS(po2GasItem, PO2, PO2, PO2_ALERT, &prefs.pp_graphs.po2_threshold_max); + CREATE_PP_GAS(o2SetpointGasItem, O2SETPOINT, PO2_ALERT, PO2_ALERT, &prefs.pp_graphs.po2_threshold_max); + CREATE_PP_GAS(ccrsensor1GasItem, CCRSENSOR1, CCRSENSOR1, PO2_ALERT, &prefs.pp_graphs.po2_threshold_max); + CREATE_PP_GAS(ccrsensor2GasItem, CCRSENSOR2, CCRSENSOR2, PO2_ALERT, &prefs.pp_graphs.po2_threshold_max); + CREATE_PP_GAS(ccrsensor3GasItem, CCRSENSOR3, CCRSENSOR3, PO2_ALERT, &prefs.pp_graphs.po2_threshold_max); + #undef CREATE_PP_GAS #ifndef SUBSURFACE_MOBILE + // Visibility Connections connect(SettingsObjectWrapper::instance()->pp_gas, &PartialPressureGasSettings::showPheChanged, pheGasItem, &PartialPressureGasItem::setVisible); connect(SettingsObjectWrapper::instance()->pp_gas, &PartialPressureGasSettings::showPo2Changed, po2GasItem, &PartialPressureGasItem::setVisible); |