summaryrefslogtreecommitdiffstats
path: root/profile-widget/diveprofileitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'profile-widget/diveprofileitem.cpp')
-rw-r--r--profile-widget/diveprofileitem.cpp28
1 files changed, 21 insertions, 7 deletions
diff --git a/profile-widget/diveprofileitem.cpp b/profile-widget/diveprofileitem.cpp
index ad3bb151e..d8e6fd4b1 100644
--- a/profile-widget/diveprofileitem.cpp
+++ b/profile-widget/diveprofileitem.cpp
@@ -970,16 +970,28 @@ void PartialPressureGasItem::modelDataChanged(const QModelIndex &topLeft, const
QPolygonF poly;
QPolygonF alertpoly;
alertPolygons.clear();
- double threshold = 0.0;
- if (thresholdPtr)
- threshold = *thresholdPtr;
+ double threshold_min = 100.0; // yes, a ridiculous high partial pressure
+ double threshold_max = 0.0;
+ if (thresholdPtrMax)
+ threshold_max = *thresholdPtrMax;
+ if (thresholdPtrMin)
+ threshold_min = *thresholdPtrMin;
bool inAlertFragment = false;
for (int i = 0; i < dataModel->rowCount(); i++, entry++) {
double value = dataModel->index(i, vDataColumn).data().toDouble();
int time = dataModel->index(i, hDataColumn).data().toInt();
QPointF point(hAxis->posAtValue(time), vAxis->posAtValue(value));
poly.push_back(point);
- if (value >= threshold) {
+ if (thresholdPtrMax && value >= threshold_max) {
+ if (inAlertFragment) {
+ alertPolygons.back().push_back(point);
+ } else {
+ alertpoly.clear();
+ alertpoly.push_back(point);
+ alertPolygons.append(alertpoly);
+ inAlertFragment = true;
+ }
+ } else if (thresholdPtrMin && value <= threshold_min) {
if (inAlertFragment) {
alertPolygons.back().push_back(point);
} else {
@@ -1015,13 +1027,15 @@ void PartialPressureGasItem::paint(QPainter *painter, const QStyleOptionGraphics
painter->restore();
}
-void PartialPressureGasItem::setThreshouldSettingsKey(double *prefPointer)
+void PartialPressureGasItem::setThreshouldSettingsKey(double *prefPointerMin, double *prefPointerMax)
{
- thresholdPtr = prefPointer;
+ thresholdPtrMin = prefPointerMin;
+ thresholdPtrMax = prefPointerMax;
}
PartialPressureGasItem::PartialPressureGasItem() :
- thresholdPtr(NULL)
+ thresholdPtrMin(NULL),
+ thresholdPtrMax(NULL)
{
}