statistics: show selected dives in scatter plot

As a visual feedback, show the selected dives in the scatter
plot. React to application-wide selection changes. Currently,
the dive list is deactivated while in statistics mode, but
that may change.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2021-01-31 20:48:12 +01:00 committed by Dirk Hohndel
parent 5c098eea29
commit d85b321784
9 changed files with 68 additions and 8 deletions

View file

@ -27,6 +27,7 @@ ScatterSeries::~ScatterSeries()
ScatterSeries::Item::Item(StatsView &view, ScatterSeries *series, dive *d, double pos, double value) :
item(view.createChartItem<ChartScatterItem>(ChartZValue::Series)),
d(d),
selected(d->selected),
pos(pos),
value(value)
{
@ -40,7 +41,11 @@ void ScatterSeries::Item::updatePosition(ScatterSeries *series)
void ScatterSeries::Item::highlight(bool highlight)
{
item->setHighlight(highlight);
ChartScatterItem::Highlight status = d->selected ?
ChartScatterItem::Highlight::Selected : ChartScatterItem::Highlight::Unselected;
if (highlight)
status = ChartScatterItem::Highlight::Highlighted;
item->setHighlight(status);
}
void ScatterSeries::append(dive *d, double pos, double value)
@ -164,3 +169,15 @@ void ScatterSeries::unhighlight()
items[idx].highlight(false);
highlighted.clear();
}
void ScatterSeries::divesSelected(const QVector<dive *> &)
{
for (Item &item: items) {
if (item.selected != item.d->selected) {
item.selected = item.d->selected;
int idx = &item - &items[0];
bool highlight = std::find(highlighted.begin(), highlighted.end(), idx) != highlighted.end();
item.highlight(highlight);
}
}
}