map-widget: allow real-time updates of edited markers

This patch allows updating the location of map markers
while editing a dive site and updating the text in the
LocationInformationWidget in real-time.

Currently it is only possible to see the marker changes by
clicking 'Apply'.

The modification required the following changes:
- add the MapWidget::updateCurrentDiveSiteCoordinatesToMap() slot
and call it each time the GPS text updates
- separate the updateCurrentDiveSiteCoordinates(FromMap/ToMap) logic
by having the FromMap/ToMap suffix to method names
- make MapWidgetHelper::updateCurrentDiveSiteCoordinatesToMap()
call a new MapLocationModel::updateMapLocationCoordinates()
method, which updates selected location coordinates and the model
- add MapLocation::setCoordinateNoEmit() that does not emit
a signal when updating a coordinate

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
This commit is contained in:
Lubomir I. Ivanov 2017-11-09 18:43:21 +02:00 committed by Dirk Hohndel
parent 89ccdc3178
commit 746874a78e
8 changed files with 45 additions and 3 deletions

View file

@ -52,6 +52,8 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
this, &LocationInformationWidget::updateGpsCoordinates);
connect(this, &LocationInformationWidget::endEditDiveSite,
MapWidget::instance(), &MapWidget::repopulateLabels);
connect(this, &LocationInformationWidget::coordinatesChanged,
MapWidget::instance(), &MapWidget::updateCurrentDiveSiteCoordinatesToMap);
}
bool LocationInformationWidget::eventFilter(QObject *, QEvent *ev)

View file

@ -118,6 +118,12 @@ void MapWidget::coordinatesChangedLocal()
emit coordinatesChanged();
}
void MapWidget::updateCurrentDiveSiteCoordinatesToMap()
{
CHECK_IS_READY_RETURN_VOID();
m_mapHelper->updateCurrentDiveSiteCoordinatesToMap();
}
MapWidget::~MapWidget()
{
m_instance = NULL;

View file

@ -35,6 +35,7 @@ public slots:
void selectedDivesChanged(QList<int>);
void coordinatesChangedLocal();
void doneLoading(QQuickWidget::Status status);
void updateCurrentDiveSiteCoordinatesToMap();
private:
void setEditMode(bool editMode);