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 <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2021-01-26 21:57:41 +01:00 committed by Dirk Hohndel
parent b7e62307c5
commit 1797b59c10
2 changed files with 9 additions and 10 deletions

View file

@ -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));

View file

@ -18,6 +18,7 @@
#include "zvalues.h"
#include "core/divefilter.h"
#include "core/subsurface-qt/divelistnotifier.h"
#include "core/trip.h"
#include <cmath>
#include <QQuickItem>
@ -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);