From 1797b59c102eaa5b2091504d96616433aaf0a239 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Tue, 26 Jan 2021 21:57:41 +0100 Subject: [PATCH] statistics: replot stats if dives added / removed It is crucial to replot the statistics when dives are added / removed, to avoid stale pointers. Signed-off-by: Berthold Stoeger --- stats/scatterseries.cpp | 14 ++++---------- stats/statsview.cpp | 5 +++++ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/stats/scatterseries.cpp b/stats/scatterseries.cpp index 791bb81ca..03763c118 100644 --- a/stats/scatterseries.cpp +++ b/stats/scatterseries.cpp @@ -130,16 +130,10 @@ bool ScatterSeries::hover(QPointF pos) const dive *d = items[idx].d; if (!text.empty()) text.push_back(QString(" ")); // Argh. Empty strings are filtered away. - // We don't listen to undo-command signals, therefore we have to check whether that dive actually exists! - // TODO: fix this. - if (get_divenr(d) < 0) { - text.push_back(StatsTranslations::tr("Removed dive")); - } else { - text.push_back(StatsTranslations::tr("Dive #%1").arg(d->number)); - text.push_back(get_dive_date_string(d->when)); - text.push_back(dataInfo(varX, d)); - text.push_back(dataInfo(varY, d)); - } + text.push_back(StatsTranslations::tr("Dive #%1").arg(d->number)); + text.push_back(get_dive_date_string(d->when)); + text.push_back(dataInfo(varX, d)); + text.push_back(dataInfo(varY, d)); if (++shown >= show && shown < (int)highlighted.size()) { text.push_back(" "); text.push_back(StatsTranslations::tr("and %1 more").arg((int)highlighted.size() - shown)); diff --git a/stats/statsview.cpp b/stats/statsview.cpp index 133f39219..464339a9c 100644 --- a/stats/statsview.cpp +++ b/stats/statsview.cpp @@ -18,6 +18,7 @@ #include "zvalues.h" #include "core/divefilter.h" #include "core/subsurface-qt/divelistnotifier.h" +#include "core/trip.h" #include #include @@ -41,6 +42,10 @@ StatsView::StatsView(QQuickItem *parent) : QQuickItem(parent), setFlag(ItemHasContents, true); connect(&diveListNotifier, &DiveListNotifier::numShownChanged, this, &StatsView::replotIfVisible); + connect(&diveListNotifier, &DiveListNotifier::divesAdded, this, &StatsView::replotIfVisible); + connect(&diveListNotifier, &DiveListNotifier::divesDeleted, this, &StatsView::replotIfVisible); + connect(&diveListNotifier, &DiveListNotifier::dataReset, this, &StatsView::replotIfVisible); + connect(&diveListNotifier, &DiveListNotifier::settingsChanged, this, &StatsView::replotIfVisible); setAcceptHoverEvents(true); setAcceptedMouseButtons(Qt::LeftButton);