Map: remove LocationInformationWidget::coordinatesChanged signal

This was used by LocationInformationWidget to instruct the map
that the coordinates of the current dive site has changed.
There is no reason why this couldn't be a function call, as no
other object ever connect()s to this signal. In fact, such a
function already exists viz. updateLocationOnMap.

Therefore, replace the signal by a simple function call.

Moreover, the uuid and coordinates of the dive site were transported
via the global "displayed_dive_site" object. Instead, pass this
information in the parameters of the function. This makes it
easier to reason about data- and control-flow.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-10-08 12:57:46 +02:00 committed by Dirk Hohndel
parent ad57871a2c
commit 66c5c5f72b
6 changed files with 17 additions and 16 deletions

View file

@ -57,8 +57,6 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
this, &LocationInformationWidget::updateGpsCoordinates); this, &LocationInformationWidget::updateGpsCoordinates);
connect(this, &LocationInformationWidget::endEditDiveSite, connect(this, &LocationInformationWidget::endEditDiveSite,
MapWidget::instance(), &MapWidget::repopulateLabels); MapWidget::instance(), &MapWidget::repopulateLabels);
connect(this, &LocationInformationWidget::coordinatesChanged,
MapWidget::instance(), &MapWidget::updateCurrentDiveSiteCoordinatesToMap);
} }
bool LocationInformationWidget::eventFilter(QObject *object, QEvent *ev) bool LocationInformationWidget::eventFilter(QObject *object, QEvent *ev)
@ -70,7 +68,7 @@ bool LocationInformationWidget::eventFilter(QObject *object, QEvent *ev)
contextMenu.exec(ctx->globalPos()); contextMenu.exec(ctx->globalPos());
return true; return true;
} else if (ev->type() == QEvent::FocusOut && object == ui.diveSiteCoordinates) { } else if (ev->type() == QEvent::FocusOut && object == ui.diveSiteCoordinates) {
emit coordinatesChanged(); updateLocationOnMap();
} }
return false; return false;
} }
@ -218,7 +216,7 @@ void LocationInformationWidget::acceptChanges()
emit endRequestCoordinates(); emit endRequestCoordinates();
emit endEditDiveSite(); emit endEditDiveSite();
emit stopFilterDiveSite(); emit stopFilterDiveSite();
emit coordinatesChanged(); updateLocationOnMap();
} }
void LocationInformationWidget::rejectChanges() void LocationInformationWidget::rejectChanges()
@ -227,7 +225,7 @@ void LocationInformationWidget::rejectChanges()
emit endRequestCoordinates(); emit endRequestCoordinates();
emit stopFilterDiveSite(); emit stopFilterDiveSite();
emit endEditDiveSite(); emit endEditDiveSite();
emit coordinatesChanged(); updateLocationOnMap();
} }
void LocationInformationWidget::showEvent(QShowEvent *ev) void LocationInformationWidget::showEvent(QShowEvent *ev)
@ -336,7 +334,9 @@ void LocationInformationWidget::reverseGeocode()
void LocationInformationWidget::updateLocationOnMap() void LocationInformationWidget::updateLocationOnMap()
{ {
emit coordinatesChanged(); if (displayed_dive_site.uuid)
MapWidget::instance()->updateDiveSiteCoordinates(displayed_dive_site.uuid, displayed_dive_site.latitude,
displayed_dive_site.longitude);
} }
DiveLocationFilterProxyModel::DiveLocationFilterProxyModel(QObject*) DiveLocationFilterProxyModel::DiveLocationFilterProxyModel(QObject*)

View file

@ -38,7 +38,6 @@ private slots:
signals: signals:
void startEditDiveSite(uint32_t uuid); void startEditDiveSite(uint32_t uuid);
void endEditDiveSite(); void endEditDiveSite();
void coordinatesChanged();
void startFilterDiveSite(uint32_t uuid); void startFilterDiveSite(uint32_t uuid);
void stopFilterDiveSite(); void stopFilterDiveSite();
void requestCoordinates(); void requestCoordinates();

View file

@ -122,10 +122,10 @@ void MapWidget::coordinatesChangedLocal()
emit coordinatesChanged(); emit coordinatesChanged();
} }
void MapWidget::updateCurrentDiveSiteCoordinatesToMap() void MapWidget::updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude)
{ {
CHECK_IS_READY_RETURN_VOID(); CHECK_IS_READY_RETURN_VOID();
m_mapHelper->updateCurrentDiveSiteCoordinatesToMap(); m_mapHelper->updateDiveSiteCoordinates(uuid, latitude, longitude);
} }
MapWidget::~MapWidget() MapWidget::~MapWidget()

View file

@ -2,6 +2,7 @@
#ifndef MAPWIDGET_H #ifndef MAPWIDGET_H
#define MAPWIDGET_H #define MAPWIDGET_H
#include "core/units.h"
#include <QQuickWidget> #include <QQuickWidget>
#include <QList> #include <QList>
@ -36,7 +37,7 @@ public slots:
void selectedDivesChanged(QList<int>); void selectedDivesChanged(QList<int>);
void coordinatesChangedLocal(); void coordinatesChangedLocal();
void doneLoading(QQuickWidget::Status status); void doneLoading(QQuickWidget::Status status);
void updateCurrentDiveSiteCoordinatesToMap(); void updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude);
private: private:
void setEditMode(bool editMode); void setEditMode(bool editMode);

View file

@ -277,12 +277,12 @@ void MapWidgetHelper::updateCurrentDiveSiteCoordinatesFromMap(quint32 uuid, QGeo
emit coordinatesChanged(); emit coordinatesChanged();
} }
void MapWidgetHelper::updateCurrentDiveSiteCoordinatesToMap() void MapWidgetHelper::updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude)
{ {
const qreal latitude = displayed_dive_site.latitude.udeg * 0.000001; const qreal latitude_r = latitude.udeg * 0.000001;
const qreal longitude = displayed_dive_site.longitude.udeg * 0.000001; const qreal longitude_r = longitude.udeg * 0.000001;
QGeoCoordinate coord(latitude, longitude); QGeoCoordinate coord(latitude_r, longitude_r);
m_mapLocationModel->updateMapLocationCoordinates(displayed_dive_site.uuid, coord); m_mapLocationModel->updateMapLocationCoordinates(uuid, coord);
QMetaObject::invokeMethod(m_map, "centerOnCoordinate", Q_ARG(QVariant, QVariant::fromValue(coord))); QMetaObject::invokeMethod(m_map, "centerOnCoordinate", Q_ARG(QVariant, QVariant::fromValue(coord)));
} }

View file

@ -2,6 +2,7 @@
#ifndef QMLMAPWIDGETHELPER_H #ifndef QMLMAPWIDGETHELPER_H
#define QMLMAPWIDGETHELPER_H #define QMLMAPWIDGETHELPER_H
#include "core/units.h"
#include <QObject> #include <QObject>
#include <QGeoCoordinate> #include <QGeoCoordinate>
#include <QVariant> #include <QVariant>
@ -35,7 +36,7 @@ public:
Q_INVOKABLE void calculateSmallCircleRadius(QGeoCoordinate coord); Q_INVOKABLE void calculateSmallCircleRadius(QGeoCoordinate coord);
Q_INVOKABLE void updateCurrentDiveSiteCoordinatesFromMap(quint32 uuid, QGeoCoordinate coord); Q_INVOKABLE void updateCurrentDiveSiteCoordinatesFromMap(quint32 uuid, QGeoCoordinate coord);
Q_INVOKABLE void selectVisibleLocations(); Q_INVOKABLE void selectVisibleLocations();
void updateCurrentDiveSiteCoordinatesToMap(); void updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude);
bool editMode(); bool editMode();
void setEditMode(bool editMode); void setEditMode(bool editMode);
QString pluginObject(); QString pluginObject();