aboutsummaryrefslogtreecommitdiffstats
path: root/apps/com.pelagicore.map/stores/MapStore.qml
diff options
context:
space:
mode:
Diffstat (limited to 'apps/com.pelagicore.map/stores/MapStore.qml')
-rw-r--r--apps/com.pelagicore.map/stores/MapStore.qml87
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");