import QtQuick 2.0 import QGroundControl 1.0 Item { id: _root visible: true // Expects the following properties: property var map ///< Map control to place item in property var qgcView ///< QGCView to use for popping dialogs property var generator property bool checked: false property var _referenceComponent: undefined signal clicked() onVisibleChanged: { if (visible){ _addRefPoint() } else { _destroyRefPoint() } } Component.onCompleted: { if (visible){ _addRefPoint() } } Component.onDestruction: { _destroyRefPoint() } function _addRefPoint(){ if (!_referenceComponent){ _referenceComponent = refPointComponent.createObject(_root) map.addMapItem(_referenceComponent) } } function _destroyRefPoint(){ if (_referenceComponent){ map.removeMapItem(_referenceComponent) _referenceComponent.destroy() _referenceComponent = undefined } } // Ref. point (Base Station) Component { id: refPointComponent DragCoordinate { id: dragCoordinate property var ref: _root.generator.reference map: _root.map qgcView: _root.qgcView z: QGroundControl.zOrderMapItems checked: _root.checked coordinate: ref onDragReleased: { syncAndBind() } Component.onCompleted: { syncAndBind() } onClicked: { _root.clicked() } function syncAndBind(){ if (coordinate.latitude !== ref.latitude || coordinate.longitude !== ref.longitude){ _root.generator.reference = coordinate } coordinate = Qt.binding(function(){return _root.generator.reference}) } } } }