You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.8 KiB
136 lines
3.8 KiB
/**************************************************************************** |
|
* |
|
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
|
* |
|
* QGroundControl is licensed according to the terms in the file |
|
* COPYING.md in the root of the source code directory. |
|
* |
|
****************************************************************************/ |
|
|
|
import QtQuick 2.3 |
|
import QtQuick.Controls 1.2 |
|
import QtLocation 5.3 |
|
import QtPositioning 5.3 |
|
|
|
import QGroundControl 1.0 |
|
import QGroundControl.ScreenTools 1.0 |
|
import QGroundControl.Palette 1.0 |
|
import QGroundControl.Controls 1.0 |
|
import QGroundControl.FlightMap 1.0 |
|
|
|
/// Simple Mission Item visuals |
|
Item { |
|
id: _root |
|
|
|
property var map ///< Map control to place item in |
|
property var qgcView ///< QGCView to use for popping dialogs |
|
|
|
property var _missionItem: object |
|
property var _itemVisual |
|
property var _dragArea |
|
property bool _itemVisualShowing: false |
|
property bool _dragAreaShowing: false |
|
|
|
signal clicked(int sequenceNumber) |
|
|
|
function hideItemVisuals() { |
|
if (_itemVisualShowing) { |
|
_itemVisual.destroy() |
|
_itemVisualShowing = false |
|
} |
|
} |
|
|
|
function showItemVisuals() { |
|
if (!_itemVisualShowing) { |
|
_itemVisual = indicatorComponent.createObject(map) |
|
map.addMapItem(_itemVisual) |
|
_itemVisualShowing = true |
|
} |
|
} |
|
|
|
function hideDragArea() { |
|
if (_dragAreaShowing) { |
|
_dragArea.destroy() |
|
_dragAreaShowing = false |
|
} |
|
} |
|
|
|
function showDragArea() { |
|
if (!_dragAreaShowing && _missionItem.specifiesCoordinate) { |
|
_dragArea = dragAreaComponent.createObject(map) |
|
_dragAreaShowing = true |
|
} |
|
} |
|
|
|
Component.onCompleted: { |
|
showItemVisuals() |
|
if (_missionItem.isCurrentItem && map.planView) { |
|
showDragArea() |
|
} |
|
} |
|
|
|
Component.onDestruction: { |
|
hideDragArea() |
|
hideItemVisuals() |
|
} |
|
|
|
|
|
Connections { |
|
target: _missionItem |
|
|
|
onIsCurrentItemChanged: { |
|
if (_missionItem.isCurrentItem) { |
|
showDragArea() |
|
} else { |
|
hideDragArea() |
|
} |
|
} |
|
} |
|
|
|
// Control which is used to drag items |
|
Component { |
|
id: dragAreaComponent |
|
|
|
MissionItemIndicatorDrag { |
|
mapControl: _root.map |
|
itemIndicator: _itemVisual |
|
itemCoordinate: _missionItem.coordinate |
|
|
|
onItemCoordinateChanged: _missionItem.coordinate = itemCoordinate |
|
} |
|
} |
|
|
|
Component { |
|
id: indicatorComponent |
|
|
|
MissionItemIndicator { |
|
coordinate: _missionItem.coordinate |
|
visible: _missionItem.specifiesCoordinate |
|
z: QGroundControl.zOrderMapItems |
|
missionItem: _missionItem |
|
sequenceNumber: _missionItem.sequenceNumber |
|
|
|
onClicked: _root.clicked(_missionItem.sequenceNumber) |
|
|
|
// These are the non-coordinate child mission items attached to this item |
|
Row { |
|
anchors.top: parent.top |
|
anchors.left: parent.right |
|
|
|
Repeater { |
|
model: _missionItem.childItems |
|
|
|
delegate: MissionItemIndexLabel { |
|
z: 2 |
|
label: object.abbreviation.length === 0 ? object.sequenceNumber : object.abbreviation.charAt(0) |
|
checked: object.isCurrentItem |
|
child: true |
|
specifiesCoordinate: false |
|
|
|
onClicked: _root.clicked(object.sequenceNumber) |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|