From 27ad58aa78a336dbc221563dbcf876c4872abe07 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Thu, 8 Mar 2018 21:53:00 +0200 Subject: mappage.qml: add a Kirigami page for the map widget The Page object has the following functionality: - reloadMap(): reload all map markers. - centerOnDiveSiteUUID(): center the map on a dive site uuid. - centerOnLocation(): the map on a latitude, longitude in decimal. - Select a dive list entry based on a marker selected on the map via diveList.setCurrentDiveListIndex() Signed-off-by: Lubomir I. Ivanov --- mobile-widgets/qml/MapPage.qml | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 mobile-widgets/qml/MapPage.qml (limited to 'mobile-widgets') diff --git a/mobile-widgets/qml/MapPage.qml b/mobile-widgets/qml/MapPage.qml new file mode 100644 index 000000000..ee1e99dc2 --- /dev/null +++ b/mobile-widgets/qml/MapPage.qml @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0 +import QtQuick 2.6 +import QtPositioning 5.3 +import org.subsurfacedivelog.mobile 1.0 +import org.kde.kirigami 2.2 as Kirigami + +Kirigami.Page { + id: mapPage + objectName: "MapPage" + title: qsTr("Map") + leftPadding: 0 + topPadding: 0 + rightPadding: 0 + bottomPadding: 0 + + MapWidget { + id: mapWidget + anchors.fill: parent + onSelectedDivesChanged: { + if (list.length === 0) { + console.warn("main.qml: onSelectedDivesChanged(): received empty list!") + return + } + var id = list[0] // only single dive selection is supported + var idx = diveModel.getIdxForId(id) + if (idx === -1) { + console.warn("main.qml: onSelectedDivesChanged(): cannot find list index for dive id:", id) + return + } + diveList.setCurrentDiveListIndex(idx, true) + } + } + + function reloadMap() { + mapWidget.mapHelper.reloadMapLocations() + } + + function centerOnDiveSiteUUID(uuid) { + if (!uuid) { + console.warn("main.qml: centerOnDiveSiteUUI(): uuid is undefined!") + return + } + mapWidget.mapHelper.centerOnDiveSiteUUID(uuid) + } + + function centerOnLocation(lat, lon) { + mapWidget.map.centerOnCoordinate(QtPositioning.coordinate(lat, lon)) + } +} -- cgit v1.2.3-70-g09d2