diff options
Diffstat (limited to 'apps/com.pelagicore.map/stores/MapStore.qml')
-rw-r--r-- | apps/com.pelagicore.map/stores/MapStore.qml | 87 |
1 files changed, 57 insertions, 30 deletions
diff --git a/apps/com.pelagicore.map/stores/MapStore.qml b/apps/com.pelagicore.map/stores/MapStore.qml index 5c35d6fe..fe2725dc 100644 --- a/apps/com.pelagicore.map/stores/MapStore.qml +++ b/apps/com.pelagicore.map/stores/MapStore.qml @@ -36,6 +36,7 @@ import QtPositioning 5.9 import QtLocation 5.9 import Qt.labs.platform 1.0 import shared.utils 1.0 +import shared.com.pelagicore.systeminfo 1.0 QtObject { id: root @@ -55,6 +56,9 @@ QtObject { } } + readonly property SystemInfo systemInfo: SystemInfo {} + readonly property bool allowMapRendering: sysinfo.allowOpenGLContent + property var positionCoordinate: QtPositioning.coordinate(48.135771, 11.574052) // Munich property var originalPosition: positionCoordinate readonly property string defaultLightThemeId: "mapbox://styles/qtauto/cjcm1by3q12dk2sqnquu0gju9" @@ -68,23 +72,35 @@ QtObject { property var destCoord: QtPositioning.coordinate() property string destination + property alias mainMapCenter: navigationStore.mapCenter + property alias mainMapZoomLevel: navigationStore.mapZoomLevel + property alias mainMapTilt: navigationStore.mapTilt + property alias mainMapBearing: navigationStore.mapBearing property alias navigationDemoActive: navigationStore.active readonly property var navigationStore: NavigationStore { id: navigationStore model: root.routeModel } - property var appInterface: Connections { - target: ApplicationInterface - onOpenDocument: { - var request = documentUrl.slice(8, documentUrl.length); - var dest = ""; - if (request.indexOf("getmeto/") >= 0) { - dest = request.slice(8, request.length); - root.destination = dest; - requestGeoCodeModel.reset(); - requestGeoCodeModel.query = dest; - requestGeoCodeModel.update(); + readonly property IntentHandler intentHandler: IntentHandler { + intentIds: ["show-destination", "activate-app"] + onRequestReceived: { + switch (request.intentId) { + case "show-destination": + var destinationName = request.parameters["destination"]; + if (!!destinationName && destinationName.length > 0) { + root.destination = destinationName; + requestGeoCodeModel.reset(); + requestGeoCodeModel.query = destinationName; + requestGeoCodeModel.update(); + } + break; + + case "activate-app": + root.requestRaiseAppReceived(); + break; + default: + break; } } } @@ -107,6 +123,7 @@ QtObject { } signal requestNavigationReceived(string address, var coord, var boundingBox) + signal requestRaiseAppReceived() function fetchCurrentLocation() { // PositionSource doesn't work on Linux var req = new XMLHttpRequest; @@ -114,10 +131,10 @@ QtObject { if (req.readyState === XMLHttpRequest.DONE) { var objectArray = JSON.parse(req.responseText); if (objectArray.errors !== undefined) { - console.warn("Error fetching location:", objectArray.errors[0].message); + console.warn(qLcMaps, "Error fetching location:", objectArray.errors[0].message); } else { root.positionCoordinate = QtPositioning.coordinate(objectArray.location.lat, objectArray.location.lng); - console.info("Current location:", root.positionCoordinate); + console.info(qLcMaps, "Current location:", root.positionCoordinate); } } } @@ -128,11 +145,11 @@ QtObject { function getAvailableMapsAndLocation(mapReady, supportedMapTypes) { if (mapReady) { mapTypeModel.clear(); - console.info("Supported map types:"); + console.info(qLcMaps, "Supported map types:"); for (var i = 0; i < supportedMapTypes.length; i++) { var map = supportedMapTypes[i]; mapTypeModel.append({"name": map.name, "data": map}) // fill the map type model - console.info("\t", map.name, ", description:", map.description, ", style:", map.style, ", night mode:", map.night); + console.info(qLcMaps, "\t", map.name, ", description:", map.description, ", style:", map.style, ", night mode:", map.night); } if (!root.offlineMapsEnabled) { fetchCurrentLocation(); @@ -209,13 +226,13 @@ QtObject { plugin: herePlugin onStatusChanged: { if (status === GeocodeModel.Null) { - console.info("Search model idle"); + console.info(qLcMaps, "Search model idle"); } else if (status === GeocodeModel.Ready) { - console.info("Search model ready, results:", count) + console.info(qLcMaps, "Search model ready, results:", count) } else if (status === GeocodeModel.Loading) { - console.info("Search model busy"); + console.info(qLcMaps, "Search model busy"); } else if (status === GeocodeModel.Error) { - console.warn("Search model error:", error, errorString); + console.warn(qLcMaps, "Search model error:", error, errorString); } } limit: 20 @@ -225,26 +242,28 @@ QtObject { id: routeModel autoUpdate: !!root.startCoord && !!root.destCoord query: RouteQuery { - waypoints: [root.startCoord, root.destCoord] + waypoints: root.startCoord.isValid && root.destCoord.isValid + ? [root.startCoord, root.destCoord] + : [] } plugin: herePlugin onStatusChanged: { if (status === RouteModel.Null) { - console.info("Route model idle"); + console.info(qLcMaps, "Route model idle"); } else if (status === RouteModel.Ready) { - console.info("Route model ready, results:", count) + console.info(qLcMaps, "Route model ready, results:", count) if (count > 0) { root.routeDistance = formatMeters(get(0).distance); root.routeTime = formatSeconds(get(0).travelTime); - console.info("Route distance (km):", root.routeDistance + console.info(qLcMaps, "Route distance (km):", root.routeDistance , ", time:", root.routeTime); - console.info("First coord:", get(0).segments[0].path[0]) + console.info(qLcMaps, "First coord:", get(0).segments[0].path[0]) } } else if (status === RouteModel.Loading) { - console.info("Route model busy"); + console.info(qLcMaps, "Route model busy"); } else if (status === RouteModel.Error) { - console.warn("Route model error:", error, errorString); + console.warn(qLcMaps, "Route model error:", error, errorString); } } } @@ -252,7 +271,9 @@ QtObject { readonly property RouteModel homeRouteModel: RouteModel { autoUpdate: !!root.currentLocationCoord && !!root.homeCoord query: RouteQuery { - waypoints: [root.currentLocationCoord, root.homeCoord] + waypoints: root.currentLocationCoord.isValid && root.homeCoord.isValid + ? [root.currentLocationCoord, root.homeCoord] + : [] } plugin: herePlugin @@ -260,7 +281,7 @@ QtObject { if (status === RouteModel.Ready) { if (count > 0) { root.homeRouteTime = formatSeconds(get(0).travelTime); - console.info("Home route distance (km):", formatMeters(get(0).distance), ", time:", root.homeRouteTime) + console.info(qLcMaps, "Home route distance (km):", formatMeters(get(0).distance), ", time:", root.homeRouteTime) } } } @@ -269,14 +290,16 @@ QtObject { readonly property RouteModel workRouteModel: RouteModel { autoUpdate: !!root.currentLocationCoord && !!root.workCoord query: RouteQuery { - waypoints: [root.currentLocationCoord, root.workCoord] + waypoints: root.currentLocationCoord.isValid && root.workCoord.isValid + ? [root.currentLocationCoord, root.workCoord] + : [] } plugin: herePlugin onStatusChanged: { if (status === RouteModel.Ready) { if (count > 0) { root.workRouteTime = formatSeconds(get(0).travelTime); - console.info("Work route distance (km):", formatMeters(get(0).distance), ", time:", root.workRouteTime) + console.info(qLcMaps, "Work route distance (km):", formatMeters(get(0).distance), ", time:", root.workRouteTime) } } } @@ -289,6 +312,10 @@ QtObject { onTriggered: showOfflineMapInfo() } + readonly property LoggingCategory qLcMaps: LoggingCategory { + name: "shared.com.pelagicore.map" + } + function showOfflineNotification() { var notification = ApplicationInterface.createNotification(); notification.summary = qsTr("Offline mode"); |