diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-12-23 12:00:55 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2021-01-10 15:57:39 -0800 |
commit | 27810f321743e4e3c341e3d89257d82fc23946e6 (patch) | |
tree | 0dbf58b824d27f04a184c73cbcd80471449b9722 /profile-widget/tankitem.cpp | |
parent | 72427adc1c063ae5de08f4d92dc79824f6227614 (diff) | |
download | subsurface-27810f321743e4e3c341e3d89257d82fc23946e6.tar.gz |
profile: remove model parameter from TankItem::setData()
This one is extremely obscure: TankItem::setData(), which is
called on every replot, was passed the DivePlotDataModel,
even though it doesn't access that model at all.
Instead, it connect()s to the model to stay informed of changes
to the data. First of all, this should obviously be done
once in the constructor, not on every replot.
But also, the setData() function is called on every replot
one lines before sending the model-changed signal.
Thus, the tankitem was always repainted twice.
Just remove the whole connect() thing and go for a more
deterministic model. Should the tankbar not be repainted
anywhere, add the appropriate calls there.
Accordingly rename the "modelDataChanged" slot to "replot".
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'profile-widget/tankitem.cpp')
-rw-r--r-- | profile-widget/tankitem.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/profile-widget/tankitem.cpp b/profile-widget/tankitem.cpp index adf9ba99c..5469ffc0d 100644 --- a/profile-widget/tankitem.cpp +++ b/profile-widget/tankitem.cpp @@ -1,6 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 #include "profile-widget/tankitem.h" -#include "qt-models/diveplotdatamodel.h" #include "profile-widget/divetextitem.h" #include "core/event.h" #include "core/profile.h" @@ -33,7 +32,7 @@ TankItem::TankItem(QObject *parent) : hAxis = nullptr; } -void TankItem::setData(DivePlotDataModel *model, struct plot_info *plotInfo, struct dive *d) +void TankItem::setData(struct plot_info *plotInfo, struct dive *d) { // If there is nothing to plot, quit early. if (plotInfo->nr <= 0) { @@ -45,10 +44,7 @@ void TankItem::setData(DivePlotDataModel *model, struct plot_info *plotInfo, str struct plot_data *last_entry = &plotInfo->entry[plotInfo->nr - 1]; plotEndTime = last_entry->sec; - // Stay informed of changes to the tanks. - connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(modelDataChanged(QModelIndex, QModelIndex)), Qt::UniqueConnection); - - modelDataChanged(); + replot(); } void TankItem::createBar(int startTime, int stopTime, struct gasmix gas) @@ -79,7 +75,7 @@ void TankItem::createBar(int startTime, int stopTime, struct gasmix gas) label->setZValue(101); } -void TankItem::modelDataChanged(const QModelIndex&, const QModelIndex&) +void TankItem::replot() { // We don't have enougth data to calculate things, quit. if (plotEndTime < 0) @@ -115,6 +111,6 @@ void TankItem::modelDataChanged(const QModelIndex&, const QModelIndex&) void TankItem::setHorizontalAxis(DiveCartesianAxis *horizontal) { hAxis = horizontal; - connect(hAxis, SIGNAL(sizeChanged()), this, SLOT(modelDataChanged())); - modelDataChanged(); + connect(hAxis, SIGNAL(sizeChanged()), this, SLOT(replot())); + replot(); } |