mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Plot OC-pO2 graph for SCR dives
This commit allows plotting the OC-equivalent pO2 graph for PSCR dives. This happens in both the cases where there is no external O2-monitoring AND when there is external pO2 monitoring. The calculations are only done for PSCR dives and is achieved as follows: 1) Within plot-info create a pressure-t called OC_pO2 in profile.h and populate this variable with the open-circuit pO2 values in profile.c. 2) Create a new partialPressureGasItem ocpo2GasItem in profilewidget2.h and, in profilewidget2.cpp, initialise it to read the plot-info OC_pO2 values and enable its display by using the setVisible method. The diveplotdatamodel was also touched in order to achieve this. 3) Create a pref button that controls the display of OC-pO2 for SCR dives 4) Change the colour of the OC-pO2 grpah to orange 5) Change the connection of the crr_OC_pO2 signal to be appropriate 6) rename the OC_pO2 attribute to scr_OC-pO2 Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
This commit is contained in:
parent
e9fd4cb7dc
commit
81a812539c
14 changed files with 107 additions and 52 deletions
|
@ -109,6 +109,7 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent),
|
|||
ccrsensor1GasItem(new PartialPressureGasItem()),
|
||||
ccrsensor2GasItem(new PartialPressureGasItem()),
|
||||
ccrsensor3GasItem(new PartialPressureGasItem()),
|
||||
ocpo2GasItem(new PartialPressureGasItem()),
|
||||
#ifndef SUBSURFACE_MOBILE
|
||||
diveCeiling(new DiveCalculatedCeiling(this)),
|
||||
decoModelParameters(new DiveTextItem()),
|
||||
|
@ -198,6 +199,7 @@ void ProfileWidget2::addItemsToScene()
|
|||
scene()->addItem(ccrsensor1GasItem);
|
||||
scene()->addItem(ccrsensor2GasItem);
|
||||
scene()->addItem(ccrsensor3GasItem);
|
||||
scene()->addItem(ocpo2GasItem);
|
||||
#ifndef SUBSURFACE_MOBILE
|
||||
scene()->addItem(toolTipItem);
|
||||
scene()->addItem(diveCeiling);
|
||||
|
@ -315,6 +317,7 @@ void ProfileWidget2::setupItemOnScene()
|
|||
createPPGas(ccrsensor1GasItem, DivePlotDataModel::CCRSENSOR1, CCRSENSOR1, PO2_ALERT, &prefs.pp_graphs.po2_threshold_min, &prefs.pp_graphs.po2_threshold_max);
|
||||
createPPGas(ccrsensor2GasItem, DivePlotDataModel::CCRSENSOR2, CCRSENSOR2, PO2_ALERT, &prefs.pp_graphs.po2_threshold_min, &prefs.pp_graphs.po2_threshold_max);
|
||||
createPPGas(ccrsensor3GasItem, DivePlotDataModel::CCRSENSOR3, CCRSENSOR3, PO2_ALERT, &prefs.pp_graphs.po2_threshold_min, &prefs.pp_graphs.po2_threshold_max);
|
||||
createPPGas(ocpo2GasItem, DivePlotDataModel::SCR_OC_PO2, SCR_OCPO2, PO2_ALERT, &prefs.pp_graphs.po2_threshold_min, &prefs.pp_graphs.po2_threshold_max);
|
||||
|
||||
#undef CREATE_PP_GAS
|
||||
#ifndef SUBSURFACE_MOBILE
|
||||
|
@ -327,6 +330,7 @@ void ProfileWidget2::setupItemOnScene()
|
|||
|
||||
//WARNING: The old code was broken, I'm not sure what should trigger the visibility of those graphs, since the old code didn't triggered them
|
||||
// because it was using a wrong settings.
|
||||
connect(SettingsObjectWrapper::instance()->techDetails, &TechnicalDetailsSettings::showSCROCpO2Changed, ocpo2GasItem, &PartialPressureGasItem::setVisible);
|
||||
connect(SettingsObjectWrapper::instance()->techDetails, &TechnicalDetailsSettings::showCCRSensorsChanged, ccrsensor1GasItem, &PartialPressureGasItem::setVisible);
|
||||
connect(SettingsObjectWrapper::instance()->techDetails, &TechnicalDetailsSettings::showCCRSensorsChanged, ccrsensor2GasItem, &PartialPressureGasItem::setVisible);
|
||||
connect(SettingsObjectWrapper::instance()->techDetails, &TechnicalDetailsSettings::showCCRSensorsChanged, ccrsensor3GasItem, &PartialPressureGasItem::setVisible);
|
||||
|
@ -598,6 +602,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
|
|||
ccrsensor1GasItem->setVisible(sensorflag);
|
||||
ccrsensor2GasItem->setVisible(sensorflag && (currentdc->no_o2sensors > 1));
|
||||
ccrsensor3GasItem->setVisible(sensorflag && (currentdc->no_o2sensors > 2));
|
||||
ocpo2GasItem->setVisible((currentdc->divemode == PSCR) && prefs.show_scr_ocpo2);
|
||||
|
||||
/* This struct holds all the data that's about to be plotted.
|
||||
* I'm not sure this is the best approach ( but since we are
|
||||
|
@ -705,6 +710,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
|
|||
ccrsensor1GasItem->setVisible(prefs.show_ccr_sensors);
|
||||
ccrsensor2GasItem->setVisible(prefs.show_ccr_sensors && (currentdc->no_o2sensors > 1));
|
||||
ccrsensor3GasItem->setVisible(prefs.show_ccr_sensors && (currentdc->no_o2sensors > 1));
|
||||
ocpo2GasItem->setVisible((currentdc->divemode == PSCR) && prefs.show_scr_ocpo2);
|
||||
temperatureItem->setVisible(false);
|
||||
} else {
|
||||
tankItem->setVisible(prefs.tankbar);
|
||||
|
@ -716,6 +722,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
|
|||
ccrsensor1GasItem->setVisible(false);
|
||||
ccrsensor2GasItem->setVisible(false);
|
||||
ccrsensor3GasItem->setVisible(false);
|
||||
ocpo2GasItem->setVisible(false);
|
||||
}
|
||||
#endif
|
||||
tankItem->setData(dataModel, &plotInfo, &displayed_dive);
|
||||
|
@ -1074,6 +1081,7 @@ void ProfileWidget2::setEmptyState()
|
|||
ccrsensor1GasItem->setVisible(false);
|
||||
ccrsensor2GasItem->setVisible(false);
|
||||
ccrsensor3GasItem->setVisible(false);
|
||||
ocpo2GasItem->setVisible(false);
|
||||
#ifndef SUBSURFACE_MOBILE
|
||||
toolTipItem->setVisible(false);
|
||||
diveCeiling->setVisible(false);
|
||||
|
@ -1193,6 +1201,7 @@ void ProfileWidget2::setProfileState()
|
|||
ccrsensor1GasItem->setVisible(sensorflag);
|
||||
ccrsensor2GasItem->setVisible(sensorflag && (current_dc->no_o2sensors > 1));
|
||||
ccrsensor3GasItem->setVisible(sensorflag && (current_dc->no_o2sensors > 2));
|
||||
ocpo2GasItem->setVisible((current_dc->divemode == PSCR) && prefs.show_scr_ocpo2);
|
||||
|
||||
heartBeatItem->setVisible(prefs.hrgraph);
|
||||
diveCeiling->setVisible(prefs.calcceiling);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue