summaryrefslogtreecommitdiffstats
path: root/profile-widget
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-01-09 17:28:23 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-10 15:57:39 -0800
commit09287809ebb76541a31af94e60856f731e3e9d37 (patch)
tree97d3509d528108e89db0c582854f3961b5060cf9 /profile-widget
parent9bfc6d2520b83b8151a84e23cbab082ab460532e (diff)
downloadsubsurface-09287809ebb76541a31af94e60856f731e3e9d37.tar.gz
profile: move adding of ceiling-violation-event
The profile item that shows the ceilings adds a warning event if the ceiling is violated. This is very unfortunate. Improve this situation by adding the event up to the function that calculates the ceiling. This is still not how it should be - the display layer should not modify the dive that it displays. To make this clear, add a comment that details that this is a contract between planner and display layer: The planner uses a dive that can be trampled upon by the profile. Still, this should be solved differently. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'profile-widget')
-rw-r--r--profile-widget/diveprofileitem.cpp38
1 files changed, 3 insertions, 35 deletions
diff --git a/profile-widget/diveprofileitem.cpp b/profile-widget/diveprofileitem.cpp
index 48f7dd380..eb343cc5e 100644
--- a/profile-widget/diveprofileitem.cpp
+++ b/profile-widget/diveprofileitem.cpp
@@ -85,49 +85,17 @@ void DiveProfileItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
painter->restore();
}
-int DiveProfileItem::maxCeiling(int row)
-{
- int max = -1;
- plot_data *entry = dataModel.data().entry + row;
- for (int tissue = 0; tissue < 16; tissue++) {
- if (max < entry->ceilings[tissue])
- max = entry->ceilings[tissue];
- }
- return max;
-}
-
void DiveProfileItem::replot()
{
- bool eventAdded = false;
-
AbstractProfilePolygonItem::replot();
if (polygon().isEmpty())
return;
show_reported_ceiling = prefs.dcceiling;
reported_ceiling_in_red = prefs.redceiling;
- profileColor = getColor(DEPTH_BOTTOM);
-
-#ifdef SUBSURFACE_MOBILE
- Q_UNUSED(eventAdded);
-#else
- int currState = qobject_cast<ProfileWidget2 *>(scene()->views().first())->currentState;
- if (currState == ProfileWidget2::PLAN) {
- plot_data *entry = dataModel.data().entry;
- for (int i = 0; i < dataModel.rowCount(); i++, entry++) {
- int max = maxCeiling(i);
- // Don't scream if we violate the ceiling by a few cm
- if (entry->depth < max - 100 && entry->sec > 0) {
- profileColor = QColor(Qt::red);
- if (!eventAdded) {
- add_event(&displayed_dive.dc, entry->sec, SAMPLE_EVENT_CEILING, -1, max / 1000,
- QT_TRANSLATE_NOOP("gettextFromC", "planned waypoint above ceiling"));
- eventAdded = true;
- }
- }
- }
- }
-#endif
+ profileColor = dataModel.data().waypoint_above_ceiling ? QColor(Qt::red)
+ : getColor(DEPTH_BOTTOM);
+
/* Show any ceiling we may have encountered */
if (prefs.dcceiling && !prefs.redceiling) {
QPolygonF p = polygon();