From 1dfbfcaffcb797722f90f34fea2bbcc18d07fc65 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 22 Oct 2021 13:46:48 +0200 Subject: [PATCH] Fix a crash when removing smart meters --- nymea-app/ui/mainviews/EnergyView.qml | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/nymea-app/ui/mainviews/EnergyView.qml b/nymea-app/ui/mainviews/EnergyView.qml index 2bacc889..4bdabb38 100644 --- a/nymea-app/ui/mainviews/EnergyView.qml +++ b/nymea-app/ui/mainviews/EnergyView.qml @@ -245,19 +245,28 @@ MainViewBase { XYPoint { x: xAxis.min.getTime(); y: 0 } } + property AreaSeries areaSeries: null Component.onCompleted: { var indexInModel = consumers.indexOf(consumer.thing) print("creating series", consumer.thing.name, index, indexInModel) seriesAdapter.ensureSamples(xAxis.min, xAxis.max) - var areaSeries = chartView.createSeries(ChartView.SeriesTypeArea, consumer.thing.name, xAxis, yAxis) + areaSeries = chartView.createSeries(ChartView.SeriesTypeArea, consumer.thing.name, xAxis, yAxis) areaSeries.useOpenGL = true areaSeries.upperSeries = upperSeries; - if (index > 0) { - areaSeries.lowerSeries = consumersRepeater.itemAt(index - 1).lineSeries - seriesAdapter.baseSeries = consumersRepeater.itemAt(index - 1).lineSeries - } else { - areaSeries.lowerSeries = lowerSeries; - } + seriesAdapter.baseSeries = Qt.binding(function() { + if (index > 0) { + return consumersRepeater.itemAt(index - 1).lineSeries + } else { + return null; + } + }) + areaSeries.lowerSeries = Qt.binding(function() { + if (index > 0) { + return consumersRepeater.itemAt(index - 1).lineSeries + } else { + return lowerSeries; + } + }) var color = Style.accentColor for (var j = 0; j <= indexInModel; j+=2) { @@ -271,6 +280,9 @@ MainViewBase { areaSeries.borderColor = color; areaSeries.borderWidth = 0; } + Component.onDestruction: { + chartView.removeSeries(areaSeries) + } } }