FWLandingPatternEditor.qml 5.12 KB
Newer Older
1 2 3 4 5 6 7 8 9
/****************************************************************************
 *
 *   (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.
 *
 ****************************************************************************/

10 11
import QtQuick          2.3
import QtQuick.Controls 1.2
12
import QtQuick.Dialogs  1.2
13
import QtQuick.Layouts  1.2
14 15 16 17 18 19 20 21 22 23 24

import QGroundControl               1.0
import QGroundControl.ScreenTools   1.0
import QGroundControl.Vehicle       1.0
import QGroundControl.Controls      1.0
import QGroundControl.FactControls  1.0
import QGroundControl.Palette       1.0

// Editor for Fixed Wing Landing Pattern complex mission item
Rectangle {
    id:         _root
25
    height:     visible ? ((editorColumn.visible ? editorColumn.height : editorColumnNeedLandingPoint.height) + (_margin * 2)) : 0
26 27 28 29 30 31 32 33
    width:      availableWidth
    color:      qgcPal.windowShadeDark
    radius:     _radius

    // The following properties must be available up the hierarchy chain
    //property real   availableWidth    ///< Width for control
    //property var    missionItem       ///< Mission Item for editor

34
    property real _margin: ScreenTools.defaultFontPixelWidth / 2
35
    property real _spacer: ScreenTools.defaultFontPixelWidth / 2
36

37 38
    ExclusiveGroup { id: distanceGlideGroup }

39
    Column {
40 41 42 43
        id:                 editorColumn
        anchors.margins:    _margin
        anchors.left:       parent.left
        anchors.right:      parent.right
44
        spacing:            _margin
45
        visible:            missionItem.landingCoordSet
46

47 48 49
        SectionHeader {
            text: qsTr("Loiter point")
        }
50 51 52 53 54 55 56

        Item { width: 1; height: _spacer }

        FactTextFieldGrid {
            anchors.left:   parent.left
            anchors.right:  parent.right
            factList:       [ missionItem.loiterAltitude, missionItem.loiterRadius ]
57
            factLabels:     [ qsTr("Altitude"), qsTr("Radius") ]
58 59 60 61 62 63 64 65 66 67
        }

        Item { width: 1; height: _spacer }

        QGCCheckBox {
            text:           qsTr("Loiter clockwise")
            checked:        missionItem.loiterClockwise
            onClicked:      missionItem.loiterClockwise = checked
        }

68
        SectionHeader { text: qsTr("Landing point") }
69 70

        Item { width: 1; height: _spacer }
71

72 73 74 75 76
        GridLayout {
            anchors.left:    parent.left
            anchors.right:   parent.right
            columns:         2

77
                QGCLabel { text: qsTr("Heading") }
DonLakeFlyer's avatar
DonLakeFlyer committed
78 79 80 81 82 83

                FactTextField {
                    Layout.fillWidth:   true
                    fact:               missionItem.landingHeading
                }

84
                QGCLabel { text: qsTr("Altitude") }
DonLakeFlyer's avatar
DonLakeFlyer committed
85 86 87 88 89 90

                FactTextField {
                    Layout.fillWidth:   true
                    fact:               missionItem.landingAltitude
                }

91
            QGCRadioButton {
92 93 94 95 96 97
                id:                 specifyLandingDistance
                text:               qsTr("Landing Dist")
                checked:            missionItem.valueSetIsDistance
                exclusiveGroup:     distanceGlideGroup
                onClicked:          missionItem.valueSetIsDistance = checked
                Layout.fillWidth:   true
98 99 100
            }

            FactTextField {
101 102 103
                fact:               missionItem.landingDistance
                enabled:            specifyLandingDistance.checked
                Layout.fillWidth:   true
104 105 106
            }

            QGCRadioButton {
107 108 109 110
                id:                 specifyGlideSlope
                text:               qsTr("Glide Slope")
                checked:            !missionItem.valueSetIsDistance
                exclusiveGroup:     distanceGlideGroup
111
                onClicked:          missionItem.valueSetIsDistance = !checked
112
                Layout.fillWidth:   true
113 114 115
            }

            FactTextField {
116 117 118
                fact:               missionItem.glideSlope
                enabled:            specifyGlideSlope.checked
                Layout.fillWidth:   true
119
            }
120 121
        }

122 123 124 125
        Item { width: 1; height: _spacer }

        QGCCheckBox {
            anchors.right:  parent.right
126 127
            text:           qsTr("Altitudes relative to home")
            checked:        missionItem.altitudesAreRelative
128
            visible:        QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || !missionItem.altitudesAreRelative
129
            onClicked:      missionItem.altitudesAreRelative = checked
130
        }
131
    }
132 133 134 135

    Column {
        id:                 editorColumnNeedLandingPoint
        anchors.margins:    _margin
136
        anchors.top:        parent.top
137 138 139
        anchors.left:       parent.left
        anchors.right:      parent.right
        visible:            !missionItem.landingCoordSet
Don Gagne's avatar
Don Gagne committed
140
        spacing:            ScreenTools.defaultFontPixelHeight
141

Don Gagne's avatar
Don Gagne committed
142 143 144 145 146 147
        QGCLabel {
            anchors.left:   parent.left
            anchors.right:  parent.right
            wrapMode:       Text.WordWrap
            text:           qsTr("Click in map to set landing point.")
        }
148
    }
149
}