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 indicatorGroup: _root.indicatorGroup
68 indicatorVisible: _missionItem.specifiesCoordinate
69 interactive: _root.interactive
70 missionItem: _missionItem
71 sequenceNumber: _missionItem.sequenceNumber
72 onClicked: _root.clicked(_missionItem.sequenceNumber)
73 opacity: _root.opacity
81 id: loiterMapQuickItem
82 coordinate: _root._missionItem.coordinate
83 visible: _root.interactive && _missionItem.isSimpleItem && _missionItem.showLoiterRadius
85 property alias blockSignals: loiterMapCircleVisuals.blockSignals
86 property alias radius: _mapCircle.radius
87 property alias clockwiseRotation: _mapCircle.clockwiseRotation
89 function handleLoiterRadiusChange() {
91 clockwiseRotation = _missionItem.loiterRadius>= 0
93 radius.rawValue = Math.abs(_missionItem.loiterRadius)
96 function handleCoordinateChange() {
97 coordinate = _missionItem.coordinate
100 onCoordinateChanged: _mapCircle.center = coordinate
102 sourceItem: QGCMapCircleVisuals {
103 id: loiterMapCircleVisuals
104 mapControl: _root.map
105 mapCircle: _mapCircle
106 centerDragHandleVisible: false
107 borderColor: _missionItem.terrainCollision ? "red" : QGroundControl.globalPalette.mapMissionTrajectory
109 property bool blockSignals: false
111 function updateMissionItem() {
112 _missionItem.loiterRadius = _mapCircle.clockwiseRotation ? _mapCircle.radius.rawValue : -_mapCircle.radius.rawValue
117 center: loiterMapQuickItem.coordinate
118 interactive: _root.interactive && _missionItem.isCurrentItem && map.planView
120 onClockwiseRotationChanged: if(!blockSignals) loiterMapCircleVisuals.updateMissionItem()
124 target: _mapCircle.radius
125 function onRawValueChanged() {
126 if(!blockSignals) loiterMapCircleVisuals.updateMissionItem()
131 Component.onCompleted: {
132 handleLoiterRadiusChange()
133 handleCoordinateChange()