From 920969bb4fbd1d073f9637d6c895a68347972846 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Tue, 19 Jun 2018 13:34:02 -0700 Subject: [PATCH] Support for dragging to change radius --- src/MissionManager/QGCMapCircleVisuals.qml | 45 +++++++++++++++++----- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/src/MissionManager/QGCMapCircleVisuals.qml b/src/MissionManager/QGCMapCircleVisuals.qml index c7388a38f5..2a608d333b 100644 --- a/src/MissionManager/QGCMapCircleVisuals.qml +++ b/src/MissionManager/QGCMapCircleVisuals.qml @@ -112,7 +112,15 @@ Item { id: centerDragAreaComponent MissionItemIndicatorDrag { - onItemCoordinateChanged: mapCircle.center = itemCoordinate + onItemCoordinateChanged: mapCircle.center = itemCoordinate + } + } + + Component { + id: radiusDragAreaComponent + + MissionItemIndicatorDrag { + onItemCoordinateChanged: mapCircle.radius.rawValue = mapCircle.center.distanceTo(itemCoordinate) } } @@ -120,19 +128,38 @@ Item { id: centerDragHandleComponent Item { - property var dragHandle - property var dragArea + property var centerDragHandle + property var centerDragArea + property var radiusDragHandle + property var radiusDragArea + property var radiusDragCoord: QtPositioning.coordinate() + property var circleCenterCoord: mapCircle.center + property real circleRadius: mapCircle.radius.rawValue + + function calcRadiusDragCoord() { + radiusDragCoord = mapCircle.center.atDistanceAndAzimuth(circleRadius, 90) + } + + onCircleCenterCoordChanged: calcRadiusDragCoord() + onCircleRadiusChanged: calcRadiusDragCoord() Component.onCompleted: { - dragHandle = dragHandleComponent.createObject(mapControl) - dragHandle.coordinate = Qt.binding(function() { return mapCircle.center }) - mapControl.addMapItem(dragHandle) - dragArea = centerDragAreaComponent.createObject(mapControl, { "itemIndicator": dragHandle, "itemCoordinate": mapCircle.center }) + calcRadiusDragCoord() + radiusDragHandle = dragHandleComponent.createObject(mapControl) + radiusDragHandle.coordinate = Qt.binding(function() { return radiusDragCoord }) + mapControl.addMapItem(radiusDragHandle) + radiusDragArea = radiusDragAreaComponent.createObject(mapControl, { "itemIndicator": radiusDragHandle, "itemCoordinate": radiusDragCoord }) + centerDragHandle = dragHandleComponent.createObject(mapControl) + centerDragHandle.coordinate = Qt.binding(function() { return circleCenterCoord }) + mapControl.addMapItem(centerDragHandle) + centerDragArea = centerDragAreaComponent.createObject(mapControl, { "itemIndicator": centerDragHandle, "itemCoordinate": circleCenterCoord }) } Component.onDestruction: { - dragHandle.destroy() - dragArea.destroy() + centerDragHandle.destroy() + centerDragArea.destroy() + radiusDragHandle.destroy() + radiusDragArea.destroy() } } } -- GitLab