Map: pass changed coordinates via signal

The coordinates of a "dragged flag" were passed out-of-bound via
the global "displayed_dive_site" object and then a signal was sent
to notify of the changed coordinates.

Instead, pass the coordinates directly via the signal. This makes
the data- and control-flow more clear.

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

View file

@ -141,10 +141,10 @@ void LocationInformationWidget::clearLabels()
ui.locationTags->clear(); ui.locationTags->clear();
} }
void LocationInformationWidget::updateGpsCoordinates() void LocationInformationWidget::updateGpsCoordinates(degrees_t latitude, degrees_t longitude)
{ {
QString oldText = ui.diveSiteCoordinates->text(); QString oldText = ui.diveSiteCoordinates->text();
const char *coords = printGPSCoords(displayed_dive_site.latitude.udeg, displayed_dive_site.longitude.udeg); const char *coords = printGPSCoords(latitude.udeg, longitude.udeg);
ui.diveSiteCoordinates->setText(coords); ui.diveSiteCoordinates->setText(coords);
enableLocationButtons(dive_site_has_gps_location(&displayed_dive_site)); enableLocationButtons(dive_site_has_gps_location(&displayed_dive_site));
free((void *)coords); free((void *)coords);

View file

@ -2,6 +2,7 @@
#ifndef LOCATIONINFORMATION_H #ifndef LOCATIONINFORMATION_H
#define LOCATIONINFORMATION_H #define LOCATIONINFORMATION_H
#include "core/units.h"
#include "ui_locationInformation.h" #include "ui_locationInformation.h"
#include <stdint.h> #include <stdint.h>
#include <QAbstractListModel> #include <QAbstractListModel>
@ -20,7 +21,7 @@ protected:
public slots: public slots:
void acceptChanges(); void acceptChanges();
void rejectChanges(); void rejectChanges();
void updateGpsCoordinates(); void updateGpsCoordinates(degrees_t latitude, degrees_t longitude);
void markChangedWidget(QWidget *w); void markChangedWidget(QWidget *w);
void enableEdition(); void enableEdition();
void resetState(); void resetState();

View file

@ -46,8 +46,7 @@ void MapWidget::doneLoading(QQuickWidget::Status status)
m_mapHelper = rootObject()->findChild<MapWidgetHelper *>(); m_mapHelper = rootObject()->findChild<MapWidgetHelper *>();
connect(m_mapHelper, SIGNAL(selectedDivesChanged(QList<int>)), connect(m_mapHelper, SIGNAL(selectedDivesChanged(QList<int>)),
this, SLOT(selectedDivesChanged(QList<int>))); this, SLOT(selectedDivesChanged(QList<int>)));
connect(m_mapHelper, SIGNAL(coordinatesChanged()), connect(m_mapHelper, &MapWidgetHelper::coordinatesChanged, this, &MapWidget::coordinatesChangedLocal);
this, SLOT(coordinatesChangedLocal()));
} }
void MapWidget::centerOnSelectedDiveSite() void MapWidget::centerOnSelectedDiveSite()
@ -116,10 +115,10 @@ void MapWidget::selectedDivesChanged(QList<int> list)
skipReload = false; skipReload = false;
} }
void MapWidget::coordinatesChangedLocal() void MapWidget::coordinatesChangedLocal(degrees_t latitude, degrees_t longitude)
{ {
CHECK_IS_READY_RETURN_VOID(); CHECK_IS_READY_RETURN_VOID();
emit coordinatesChanged(); emit coordinatesChanged(latitude, longitude);
} }
void MapWidget::updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude) void MapWidget::updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude)

View file

@ -25,7 +25,7 @@ public:
void reload(); void reload();
signals: signals:
void coordinatesChanged(); void coordinatesChanged(degrees_t latitude, degrees_t longitude);
public slots: public slots:
void centerOnSelectedDiveSite(); void centerOnSelectedDiveSite();
@ -35,7 +35,7 @@ public slots:
void repopulateLabels(); void repopulateLabels();
void prepareForGetDiveCoordinates(); void prepareForGetDiveCoordinates();
void selectedDivesChanged(QList<int>); void selectedDivesChanged(QList<int>);
void coordinatesChangedLocal(); void coordinatesChangedLocal(degrees_t latitude, degrees_t longitude);
void doneLoading(QQuickWidget::Status status); void doneLoading(QQuickWidget::Status status);
void updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude); void updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude);

View file

@ -272,9 +272,8 @@ void MapWidgetHelper::updateCurrentDiveSiteCoordinatesFromMap(quint32 uuid, QGeo
MapLocation *loc = m_mapLocationModel->getMapLocationForUuid(uuid); MapLocation *loc = m_mapLocationModel->getMapLocationForUuid(uuid);
if (loc) if (loc)
loc->setCoordinate(coord); loc->setCoordinate(coord);
displayed_dive_site.latitude.udeg = lrint(coord.latitude() * 1000000.0); emit coordinatesChanged(degrees_t { (int)lrint(coord.latitude() * 1000000.0) },
displayed_dive_site.longitude.udeg = lrint(coord.longitude() * 1000000.0); degrees_t { (int)lrint(coord.longitude() * 1000000.0) });
emit coordinatesChanged();
} }
void MapWidgetHelper::updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude) void MapWidgetHelper::updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude)
@ -305,9 +304,8 @@ void MapWidgetHelper::setEditMode(bool editMode)
} else { } else {
coord = exists->coordinate(); coord = exists->coordinate();
} }
displayed_dive_site.latitude.udeg = lrint(coord.latitude() * 1000000.0); emit coordinatesChanged(degrees_t { (int)lrint(coord.latitude() * 1000000.0) },
displayed_dive_site.longitude.udeg = lrint(coord.longitude() * 1000000.0); degrees_t { (int)lrint(coord.longitude() * 1000000.0) });
emit coordinatesChanged();
} }
emit editModeChanged(); emit editModeChanged();
} }

View file

@ -55,7 +55,7 @@ signals:
void modelChanged(); void modelChanged();
void editModeChanged(); void editModeChanged();
void selectedDivesChanged(QList<int> list); void selectedDivesChanged(QList<int> list);
void coordinatesChanged(); void coordinatesChanged(degrees_t latitude, degrees_t longitude);
void pluginObjectChanged(); void pluginObjectChanged();
}; };