summaryrefslogtreecommitdiffstats
path: root/mobile-widgets
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-07-20 01:33:15 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-07-28 07:31:11 -0700
commitce309c15a75087ea8644b30d490637500008a403 (patch)
tree04089bd00defae187b58967f2902fb1b9d0dc1ef /mobile-widgets
parent6aa57ce7f75e8c8a0f62ee71a15ed11f3d6bf8e9 (diff)
downloadsubsurface-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.qml39
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()
}
}
}