From ce309c15a75087ea8644b30d490637500008a403 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Thu, 20 Jul 2017 01:33:15 +0300 Subject: mapwidget.qml: use a seprate animation for zooming out The animation sequence when deselecting a zoomed in map location, should be: - zoom out completely - pan to center To achieve that a new animation object is created - "mapAnimationZoomOut" The previous zoom in animation is renamed to "mapAnimationZoomIn". The map functions centerOnMapLocation() and deselectMapLocation() now call the helper functions animateMapZoomIn() and animateMapZoomOut(). Signed-off-by: Lubomir I. Ivanov --- mobile-widgets/qml/MapWidget.qml | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) (limited to 'mobile-widgets') diff --git a/mobile-widgets/qml/MapWidget.qml b/mobile-widgets/qml/MapWidget.qml index 542091d4a..8ba9853c9 100644 --- a/mobile-widgets/qml/MapWidget.qml +++ b/mobile-widgets/qml/MapWidget.qml @@ -25,7 +25,7 @@ Item { readonly property var defaultCenter: QtPositioning.coordinate(0, 0) readonly property var defaultZoomIn: 17.0 - readonly property var defaultZoomOut: 2.0 + readonly property var defaultZoomOut: 1.0 property var newCenter: defaultCenter property var newZoom: 1.0 @@ -67,30 +67,51 @@ Item { } ParallelAnimation { - id: mapAnimation + id: mapAnimationZoomIn CoordinateAnimation { target: map; property: "center"; to: map.newCenter; duration: 2000; } NumberAnimation { - target: map; property: "zoomLevel"; to: map.newZoom; duration: 3000; easing.type: Easing.InCubic; + target: map; property: "zoomLevel"; to: map.newZoom ; duration: 3000; easing.type: Easing.InCubic; } } - function animateMapTo(coord, zoom) { + ParallelAnimation { + id: mapAnimationZoomOut + NumberAnimation { + target: map; property: "zoomLevel"; from: map.zoomLevel; to: map.newZoom; duration: 3000; + } + SequentialAnimation { + PauseAnimation { duration: 2000 } + CoordinateAnimation { + target: map; property: "center"; to: map.newCenter; duration: 2000; + } + } + } + + function animateMapZoomIn(coord) { + zoomLevel = defaultZoomOut newCenter = coord - newZoom = zoom - mapAnimation.restart() + newZoom = map.defaultZoomIn + mapAnimationZoomIn.restart() + mapAnimationZoomOut.stop() + } + + function animateMapZoomOut() { + newCenter = map.defaultCenter + newZoom = map.defaultZoomOut + mapAnimationZoomIn.stop() + mapAnimationZoomOut.restart() } function centerOnMapLocation(mapLocation) { - zoomLevel = defaultZoomOut - animateMapTo(mapLocation.coordinate, defaultZoomIn) mapHelper.model.selectedUuid = mapLocation.uuid + animateMapZoomIn(mapLocation.coordinate) } function deselectMapLocation() { mapHelper.model.selectedUuid = 0 - animateMapTo(defaultCenter, defaultZoomOut) + animateMapZoomOut() } } } -- cgit v1.2.3-70-g09d2