diff options
author | Lubomir I. Ivanov <neolit123@gmail.com> | 2017-07-20 01:33:15 +0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-07-28 07:31:11 -0700 |
commit | ce309c15a75087ea8644b30d490637500008a403 (patch) | |
tree | 04089bd00defae187b58967f2902fb1b9d0dc1ef /mobile-widgets | |
parent | 6aa57ce7f75e8c8a0f62ee71a15ed11f3d6bf8e9 (diff) | |
download | subsurface-ce309c15a75087ea8644b30d490637500008a403.tar.gz |
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 <neolit123@gmail.com>
Diffstat (limited to 'mobile-widgets')
-rw-r--r-- | mobile-widgets/qml/MapWidget.qml | 39 |
1 files changed, 30 insertions, 9 deletions
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() } } } |