7import QGroundControl.Controls
8import QGroundControl.FlightMap
10/// Simple Mission Item visuals
11MissionItemMapVisualBase {
14 indicatorComponent: indicatorComponent
16 function hideItemVisuals() {
17 if (_itemVisualShowing) {
19 loiterVisualLoader.active = false
23 function showItemVisuals() {
24 if (!_itemVisualShowing) {
26 loiterVisualLoader.active = true
31 target: _missionItem.isSimpleItem ? _missionItem : null
33 function onLoiterRadiusChanged(loiterRadius) {
34 if (loiterVisualLoader.item) {
35 loiterVisualLoader.item.handleLoiterRadiusChange()
39 function onCoordinateChanged(coordinate) {
40 if (loiterVisualLoader.item) {
41 loiterVisualLoader.item.handleCoordinateChange()
47 id: loiterVisualLoader
52 sourceComponent: loiterComponent
63 id: indicatorComponent
65 MissionItemIndicator {
66 coordinate: _missionItem.coordinate
67 visible: _missionItem.specifiesCoordinate
68 z: QGroundControl.zOrderMapItems
69 missionItem: _missionItem
70 sequenceNumber: _missionItem.sequenceNumber
71 onClicked: if(_root.interactive) _root.clicked(_missionItem.sequenceNumber)
72 opacity: _root.opacity
80 id: loiterMapQuickItem
81 coordinate: _root._missionItem.coordinate
82 visible: _root.interactive && _missionItem.isSimpleItem && _missionItem.showLoiterRadius
84 property alias blockSignals: loiterMapCircleVisuals.blockSignals
85 property alias radius: _mapCircle.radius
86 property alias clockwiseRotation: _mapCircle.clockwiseRotation
88 function handleLoiterRadiusChange() {
90 clockwiseRotation = _missionItem.loiterRadius>= 0
92 radius.rawValue = Math.abs(_missionItem.loiterRadius)
95 function handleCoordinateChange() {
96 coordinate = _missionItem.coordinate
99 onCoordinateChanged: _mapCircle.center = coordinate
101 sourceItem: QGCMapCircleVisuals {
102 id: loiterMapCircleVisuals
103 mapControl: _root.map
104 mapCircle: _mapCircle
105 centerDragHandleVisible: false
106 borderColor: _missionItem.terrainCollision ? "red" : QGroundControl.globalPalette.mapMissionTrajectory
108 property bool blockSignals: false
110 function updateMissionItem() {
111 _missionItem.loiterRadius = _mapCircle.clockwiseRotation ? _mapCircle.radius.rawValue : -_mapCircle.radius.rawValue
116 center: loiterMapQuickItem.coordinate
117 interactive: _root.interactive && _missionItem.isCurrentItem && map.planView
119 onClockwiseRotationChanged: if(!blockSignals) loiterMapCircleVisuals.updateMissionItem()
123 target: _mapCircle.radius
124 function onRawValueChanged() {
125 if(!blockSignals) loiterMapCircleVisuals.updateMissionItem()
130 Component.onCompleted: {
131 handleLoiterRadiusChange()
132 handleCoordinateChange()