subsurface/mobile-widgets/qml/MapPage.qml
Lubomir I. Ivanov 27ad58aa78 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 <neolit123@gmail.com>
2018-03-11 11:40:12 -07:00

49 lines
1.1 KiB
QML

// 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))
}
}