mobile/profile: listen to dive changes and redraw profile

If a dive changes, we should simply redraw the profile. This could be
improved by checking for the fields that might impact the profile at
all, but this is definitely a step in the right direction.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-12-21 04:42:04 -08:00
parent 1228dec19f
commit a3e0d1ceb4
2 changed files with 18 additions and 0 deletions

View file

@ -25,6 +25,7 @@ QMLProfile::QMLProfile(QQuickItem *parent) :
m_profileWidget->setFontPrintScale(fontScale);
connect(QMLManager::instance(), &QMLManager::sendScreenChanged, this, &QMLProfile::screenChanged);
connect(this, &QMLProfile::scaleChanged, this, &QMLProfile::triggerUpdate);
connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &QMLProfile::divesChanged);
setDevicePixelRatio(QMLManager::instance()->lastDevicePixelRatio());
}
@ -182,3 +183,16 @@ void QMLProfile::screenChanged(QScreen *screen)
{
setDevicePixelRatio(screen->devicePixelRatio());
}
void QMLProfile::divesChanged(const QVector<dive *> &dives, DiveField)
{
for (struct dive *d: dives) {
if (d->id == m_diveId) {
qDebug() << "dive #" << d->number << "changed, trigger profile update";
m_profileWidget->plotDive(d, true);
triggerUpdate();
return;
}
}
}

View file

@ -3,6 +3,7 @@
#define QMLPROFILE_H
#include "profilewidget2.h"
#include "core/subsurface-qt/divelistnotifier.h"
#include <QQuickPaintedItem>
class QMLProfile : public QQuickPaintedItem
@ -38,6 +39,9 @@ private:
QScopedPointer<ProfileWidget2> m_profileWidget;
void updateProfile();
private slots:
void divesChanged(const QVector<dive *> &dives, DiveField);
signals:
void rightAlignedChanged();
void devicePixelRatioChanged();