CircularGeneratorMapVisual.qml 1.57 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
import QtQuick 2.0

Item {
    id: _root

    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

    signal clicked()

    function _addRefPoint(){
        if (!_referenceComponent){
            _referenceComponent = refPointComponent.createObject(_root)
            map.addMapItem(_referenceComponent)
        }
    }

    function _destroyRefPoint(){
        if (_referenceComponent){
            map.removeMapItem(_referenceComponent)
            _referenceComponent.destroy()
            _referenceComponent = undefined
        }
    }

    onVisibleChanged:  {
        if (visible){
            _addRefPoint()
        } else {
            _destroyRefPoint()
        }
    }

    Component.onCompleted: {
        if (visible){
            _addRefPoint()
        }
    }

    Component.onDestroyed: {
        _destroyRefPoint()
    }

    // Ref. point (Base Station)
    Component {
        id: refPointComponent

        DragCoordinate {
            map:        _root.map
            qgcView:    _root.qgcView
            z:          QGroundControl.zOrderMapItems
            checked:    _root.checked
            coordinate: _root.generator.reference

            onClicked:  {
                _root.clicked()
            }

            onDragReleased: {
                _root.generator.reference = coordinate
                coordinate = Qt.binding(function (){return _root.generator.reference})
            }
        }
    }
}