// 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.4 as Kirigami Kirigami.Page { id: mapPage objectName: "MapPage" title: qsTr("Map") leftPadding: 0 topPadding: 0 rightPadding: 0 bottomPadding: 0 property bool firstRun: true 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) } Component.onCompleted: { mapWidget.map.zoomLevel = mapWidget.map.defaultZoomOut mapWidget.map.center = mapWidget.map.defaultCenter } } function reloadMap() { mapWidget.mapHelper.reloadMapLocations() } function centerOnDiveSiteUUID(uuid) { if (!uuid) { console.warn("main.qml: centerOnDiveSiteUUI(): uuid is undefined!") return } // on firstRun, hard pan/center the map to the desired location so that // we don't start at an arbitrary location such as [0,0] or London. if (firstRun) { var coord = mapWidget.mapHelper.getCoordinatesForUUID(uuid) centerOnLocationHard(coord.latitude, coord.longitude) firstRun = false } // continue here as centerOnDiveSiteUUID() also does marker selection. mapWidget.mapHelper.centerOnDiveSiteUUID(uuid) } function centerOnLocation(lat, lon) { if (firstRun) { centerOnLocationHard(lat, lon) firstRun = false return // no need to animate via centerOnCoordinate(). } mapWidget.map.centerOnCoordinate(QtPositioning.coordinate(lat, lon)) } function centerOnLocationHard(lat, lon) { mapWidget.map.zoomLevel = mapWidget.map.defaultZoomIn mapWidget.map.center = QtPositioning.coordinate(lat, lon) } }