GeoFenceEditor.qml 5 KB
Newer Older
1 2 3 4 5 6 7 8 9
import QtQuick          2.2
import QtQuick.Controls 1.2

import QGroundControl               1.0
import QGroundControl.ScreenTools   1.0
import QGroundControl.Controls      1.0
import QGroundControl.FactControls  1.0
import QGroundControl.Palette       1.0
import QGroundControl.FlightMap     1.0
10
import QGroundControl.FactSystem    1.0
11 12 13 14 15 16 17 18

QGCFlickable {
    id:             root
    width:          availableWidth
    height:         Math.min(availableHeight, geoFenceEditorRect.height)
    contentHeight:  geoFenceEditorRect.height
    clip:           true

19
    readonly property real  _editFieldWidth:    Math.min(width - _margin * 2, ScreenTools.defaultFontPixelWidth * 15)
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 70 71 72 73
    readonly property real  _margin:            ScreenTools.defaultFontPixelWidth / 2
    readonly property real  _radius:            ScreenTools.defaultFontPixelWidth / 2

    property var polygon: geoFenceController.polygon

    Connections {
        target: geoFenceController.polygon

        onPathChanged: {
            if (geoFenceController.polygon.path.length > 2) {
                geoFenceController.breachReturnPoint = geoFenceController.polygon.center()
            }
        }
    }

    Rectangle {
        id:     geoFenceEditorRect
        width:  parent.width
        height: geoFenceItems.y + geoFenceItems.height + (_margin * 2)
        radius: _radius
        color:  qgcPal.buttonHighlight

        QGCLabel {
            id:                 geoFenceLabel
            anchors.margins:    _margin
            anchors.left:       parent.left
            anchors.top:        parent.top
            text:               qsTr("Geo-Fence (WIP careful!)")
            color:              "black"
        }

        Rectangle {
            id:                 geoFenceItems
            anchors.margins:    _margin
            anchors.left:       parent.left
            anchors.right:      parent.right
            anchors.top:        geoFenceLabel.bottom
            height:             editorColumn.height + (_margin * 2)
            color:              qgcPal.windowShadeDark
            radius:             _radius

            Column {
                id:                 editorColumn
                anchors.margins:    _margin
                anchors.top:        parent.top
                anchors.left:       parent.left
                anchors.right:      parent.right
                spacing:            _margin

                QGCLabel {
                    anchors.left:   parent.left
                    anchors.right:  parent.right
                    wrapMode:       Text.WordWrap
                    text:           qsTr("Click in map to set breach return point.")
74
                    visible:        geoFenceController.breachReturnSupported
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
                }

                QGCLabel { text: qsTr("Fence Settings:") }

                Rectangle {
                    anchors.left:   parent.left
                    anchors.right:  parent.right
                    height:         1
                    color:          qgcPal.text
                }

                QGCLabel {
                    text:       qsTr("Must be connected to Vehicle to change fence settings.")
                    visible:    !QGroundControl.multiVehicleManager.activeVehicle
                }

                Repeater {
                    model: geoFenceController.params

                    Item {
                        width:  editorColumn.width
                        height: textField.height

                        QGCLabel {
                            id:                 textFieldLabel
                            anchors.baseline:   textField.baseline
101
                            text:               geoFenceController.paramLabels[index]
102 103 104 105 106 107 108 109
                        }

                        FactTextField {
                            id:             textField
                            anchors.right:  parent.right
                            width:          _editFieldWidth
                            showUnits:      true
                            fact:           modelData
110 111 112 113 114 115 116 117 118 119 120 121
                            visible:        !comboField.visible
                        }

                        FactComboBox {
                            id:             comboField
                            anchors.right:  parent.right
                            width:          _editFieldWidth
                            indexModel:     false
                            fact:           visible ? modelData : _nullFact
                            visible:        modelData.enumStrings.length

                            property var _nullFact: Fact { }
122 123 124 125 126 127 128 129 130 131
                        }
                    }
                }

                QGCMapPolygonControls {
                    anchors.left:   parent.left
                    anchors.right:  parent.right
                    flightMap:      editorMap
                    polygon:        root.polygon
                    sectionLabel:   qsTr("Fence Polygon:")
132
                    visible:        geoFenceController.polygonSupported
133 134 135 136 137
                }
            }
        }
    }
}