From 21661124ab119520ac77c2913e7306dca420c278 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 14 Feb 2023 00:15:18 +0100 Subject: [PATCH] Fix energy charts with old Qt versions --- libnymea-app/energy/energylogs.cpp | 5 +++- libnymea-app/energy/energylogs.h | 3 ++- .../ui/mainviews/energy/ConsumersHistory.qml | 26 +++++++++---------- .../mainviews/energy/PowerBalanceHistory.qml | 16 +++++++----- packaging/ubuntu/click/clickable.json | 1 + 5 files changed, 29 insertions(+), 22 deletions(-) diff --git a/libnymea-app/energy/energylogs.cpp b/libnymea-app/energy/energylogs.cpp index 03170b0d..fead0f90 100644 --- a/libnymea-app/energy/energylogs.cpp +++ b/libnymea-app/energy/energylogs.cpp @@ -9,7 +9,6 @@ NYMEA_LOGGING_CATEGORY(dcEnergyLogs, "EnergyLogs") EnergyLogEntry::EnergyLogEntry(QObject *parent): QObject(parent) { - } EnergyLogEntry::EnergyLogEntry(const QDateTime ×tamp, QObject *parent): @@ -26,6 +25,10 @@ QDateTime EnergyLogEntry::timestamp() const EnergyLogs::EnergyLogs(QObject *parent) : QAbstractListModel(parent) { + // Workaround for older Qt versions (5.12 and older) which can't deal with the QList argument + connect(this, &EnergyLogs::entriesAdded, this, [this](int index, const QList &entries){ + emit entriesAddedIdx(index, entries.count()); + }); } EnergyLogs::~EnergyLogs() diff --git a/libnymea-app/energy/energylogs.h b/libnymea-app/energy/energylogs.h index fc9e88e0..19ffa8bc 100644 --- a/libnymea-app/energy/energylogs.h +++ b/libnymea-app/energy/energylogs.h @@ -104,7 +104,8 @@ signals: void countChanged(); void entryAdded(int index, EnergyLogEntry *entry); - void entriesAdded(int index, const QList entries); + void entriesAdded(int index, const QList &entries); + void entriesAddedIdx(int index, int count); void entriesRemoved(int index, int count); void minValueChanged(); diff --git a/nymea-app/ui/mainviews/energy/ConsumersHistory.qml b/nymea-app/ui/mainviews/energy/ConsumersHistory.qml index f34d3bed..3f3ed05c 100644 --- a/nymea-app/ui/mainviews/energy/ConsumersHistory.qml +++ b/nymea-app/ui/mainviews/energy/ConsumersHistory.qml @@ -21,10 +21,10 @@ Item { sampleRate: d.sampleRate Component.onCompleted: fetchLogs() - onEntriesAdded: { - print("entries added", index, entries.length) - for (var i = 0; i < entries.length; i++) { - var entry = entries[i] + onEntriesAddedIdx: { + print("entries added", index, count) + for (var i = 0; i < count; i++) { + var entry = powerBalanceLogs.get(index + i) // print("got entry", entry.timestamp) zeroSeries.ensureValue(entry.timestamp) @@ -402,14 +402,14 @@ Item { series.upperSeries.insert(idx, entry.timestamp.getTime(), baseValue + entry.currentPower) } - function addEntries(index, entries) { + function addEntries(index, count) { // print("adding entries for", thing.name) // Remove the leading 0-value entry series.lowerSeries.removePoints(0, 1); series.upperSeries.removePoints(0, 1); - for (var i = 0; i < entries.length; i++) { - var entry = entries[i] + for (var i = 0; i < count; i++) { + var entry = logs.get(index + i) // print("got thing entry", thing.name, entry.timestamp, entry.currentPower, index + i) zeroSeries.ensureValue(entry.timestamp) @@ -434,8 +434,8 @@ Item { thingId: consumerDelegate.thing.id loader: logsLoader - onEntriesAdded: { - addTimer.addEntries(index, entries) + onEntriesAddedIdx: { + addTimer.addEntries(index, count) } onEntriesRemoved: { @@ -459,12 +459,12 @@ Item { id: addTimer interval: 1000 repeat: false - onTriggered: consumerDelegate.addEntries(index, entries) + onTriggered: consumerDelegate.addEntries(index, count) property int index - property var entries - function addEntries(index, entries) { + property var count + function addEntries(index, count) { addTimer.index = index - addTimer.entries = entries + addTimer.count = count start() } } diff --git a/nymea-app/ui/mainviews/energy/PowerBalanceHistory.qml b/nymea-app/ui/mainviews/energy/PowerBalanceHistory.qml index 6a8a881b..97449c1e 100644 --- a/nymea-app/ui/mainviews/energy/PowerBalanceHistory.qml +++ b/nymea-app/ui/mainviews/energy/PowerBalanceHistory.qml @@ -80,11 +80,11 @@ Item { Connections { target: powerBalanceLogs - onEntriesAdded: { -// print("entries added", index, entries.length) - for (var i = 0; i < entries.length; i++) { - var entry = entries[i] -// print("got entry", entry.timestamp) + onEntriesAddedIdx: { + print("entries added", index, count) + for (var i = 0; i < count; i++) { + var entry = powerBalanceLogs.get(index + i) + print("got entry", entry.timestamp) zeroSeries.ensureValue(entry.timestamp) // For debugging, to see if the other maths line up with the plain production graph @@ -294,7 +294,7 @@ Item { // borderWidth: 2 borderColor: color name: qsTr("From self production") - opacity: d.selectedSeries == null || d.selectedSeries == selfProductionConsumptionSeries ? 1 : 0.3 +// opacity: d.selectedSeries == null || d.selectedSeries == selfProductionConsumptionSeries ? 1 : 0.3 // visible: false onClicked: d.selectedSeries(selfProductionConsumptionSeries) @@ -445,7 +445,7 @@ Item { borderWidth: 0 borderColor: color name: qsTr("From grid") - opacity: d.selectedSeries == null || d.selectedSeries == acquisitionSeries ? 1 : 0.3 +// opacity: d.selectedSeries == null || d.selectedSeries == acquisitionSeries ? 1 : 0.3 // visible: false onClicked: d.selectSeries(acquisitionSeries) @@ -478,9 +478,11 @@ Item { return Math.abs(Math.min(0, entry.production)) } function addEntry(entry) { + print("appending!", entry.timestamp, entry.value) append(entry.timestamp.getTime(), calculateValue(entry)) } function insertEntry(index, entry) { + print("inserting!", index, entry.timestamp, entry.value) insert(index, entry.timestamp.getTime(), calculateValue(entry)) } } diff --git a/packaging/ubuntu/click/clickable.json b/packaging/ubuntu/click/clickable.json index 198b2d8a..392726ab 100644 --- a/packaging/ubuntu/click/clickable.json +++ b/packaging/ubuntu/click/clickable.json @@ -3,6 +3,7 @@ "kill": "nymea-app", "qt_version": "5.12", "build_args": "CONFIG+=ubports", + "ignore_review_errors": true, "dependencies_target": [ "libavahi-client-dev", "libavahi-common-dev",