PX4SimpleFlightModes.qml 10.2 KB
Newer Older
1 2 3 4 5 6 7 8
/****************************************************************************
 *
 *   (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.
 *
 ****************************************************************************/
Don Gagne's avatar
Don Gagne committed
9 10


11 12
import QtQuick                  2.3
import QtQuick.Controls         1.2
Don Gagne's avatar
Don Gagne committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

import QGroundControl.FactSystem    1.0
import QGroundControl.FactControls  1.0
import QGroundControl.Palette       1.0
import QGroundControl.Controls      1.0
import QGroundControl.Controllers   1.0
import QGroundControl.ScreenTools   1.0

Item {
    id: root

    // The following properties must be pushed in from the Loader
    //property var qgcView      - QGCView control
    //property var qgcViewPanel - QGCViewPanel control

    property real _margins: ScreenTools.defaultFontPixelHeight / 2

Don Gagne's avatar
Don Gagne committed
30 31
    readonly property real _flightModeComboWidth:   ScreenTools.defaultFontPixelWidth * 13
    readonly property real _channelComboWidth:      ScreenTools.defaultFontPixelWidth * 13
32

Don Gagne's avatar
Don Gagne committed
33 34 35 36 37 38 39 40
    PX4SimpleFlightModesController {
        id:         controller
        factPanel:  qgcViewPanel
    }

    QGCFlickable {
        anchors.fill:   parent
        clip:           true
Don Gagne's avatar
Don Gagne committed
41 42
        contentWidth:   column2.x + column2.width
        contentHeight:  Math.max(column1.height, column2.height)
Don Gagne's avatar
Don Gagne committed
43 44

        Column {
Don Gagne's avatar
Don Gagne committed
45
            id:         column1
Don Gagne's avatar
Don Gagne committed
46 47
            spacing:    _margins

Don Gagne's avatar
Don Gagne committed
48 49 50
            Row {
                id:         settingsRow
                spacing:    _margins
Don Gagne's avatar
Don Gagne committed
51 52

                Column {
Don Gagne's avatar
Don Gagne committed
53 54 55 56 57
                    id:     flightModeSettingsColumn
                    spacing: _margins

                    QGCLabel {
                        id:             flightModeLabel
58
                        text:           qsTr("Flight Mode Settings")
59
                        font.family:    ScreenTools.demiboldFontFamily
Don Gagne's avatar
Don Gagne committed
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
                    }

                    Rectangle {
                        id:                 flightModeSettings
                        width:              flightModeColumn.width + (_margins * 2)
                        height:             flightModeColumn.height + ScreenTools.defaultFontPixelHeight
                        color:              qgcPal.windowShade

                        Column {
                            id:                 flightModeColumn
                            anchors.margins:    ScreenTools.defaultFontPixelWidth
                            anchors.left:       parent.left
                            anchors.top:        parent.top
                            spacing:            ScreenTools.defaultFontPixelHeight

                            Row {
                                spacing: _margins

                                QGCLabel {
                                    id:                 modeChannelLabel
                                    anchors.baseline:   modeChannelCombo.baseline
Don Gagne's avatar
Don Gagne committed
81
                                    text:               qsTr("Mode channel:")
Don Gagne's avatar
Don Gagne committed
82 83 84 85
                                }

                                FactComboBox {
                                    id:         modeChannelCombo
86
                                    width:      _channelComboWidth
Don Gagne's avatar
Don Gagne committed
87 88 89 90
                                    fact:       controller.getParameterFact(-1, "RC_MAP_FLTMODE")
                                    indexModel: false
                                }
                            }
Don Gagne's avatar
Don Gagne committed
91

Don Gagne's avatar
Don Gagne committed
92 93
                            Repeater {
                                model:  6
Don Gagne's avatar
Don Gagne committed
94

Don Gagne's avatar
Don Gagne committed
95 96
                                Row {
                                    spacing: ScreenTools.defaultFontPixelWidth
Don Gagne's avatar
Don Gagne committed
97

Don Gagne's avatar
Don Gagne committed
98
                                    property int index:         modelData + 1
Don Gagne's avatar
Don Gagne committed
99

Don Gagne's avatar
Don Gagne committed
100 101
                                    QGCLabel {
                                        anchors.baseline:   modeCombo.baseline
102
                                        text:               qsTr("Flight Mode %1").arg(index)
Don Gagne's avatar
Don Gagne committed
103 104
                                        color:              controller.activeFlightMode == index ? "yellow" : qgcPal.text
                                    }
Don Gagne's avatar
Don Gagne committed
105

Don Gagne's avatar
Don Gagne committed
106 107
                                    FactComboBox {
                                        id:         modeCombo
108
                                        width:      _flightModeComboWidth
Don Gagne's avatar
Don Gagne committed
109 110 111 112 113 114 115 116 117 118
                                        fact:       controller.getParameterFact(-1, "COM_FLTMODE" + index)
                                        indexModel: false
                                    }
                                }
                            } // Repeater - Flight Modes
                        } // Column - Flight Modes
                    } // Rectangle - Flight Modes
                } // Column - Flight mode settings

                Column {
Don Gagne's avatar
Don Gagne committed
119 120
                    id:         column2
                    spacing:    _margins
Don Gagne's avatar
Don Gagne committed
121 122

                    QGCLabel {
123
                        text:           qsTr("Switch Settings")
124
                        font.family:    ScreenTools.demiboldFontFamily
Don Gagne's avatar
Don Gagne committed
125 126 127
                    }

                    Rectangle {
Don Gagne's avatar
Don Gagne committed
128
                        id:     switchSettingsRect
Don Gagne's avatar
Don Gagne committed
129 130 131 132 133 134 135 136 137 138 139
                        width:  switchSettingsColumn.width + (_margins * 2)
                        height: switchSettingsColumn.height + ScreenTools.defaultFontPixelHeight
                        color:  qgcPal.windowShade

                        Column {
                            id:                 switchSettingsColumn
                            anchors.margins:    ScreenTools.defaultFontPixelWidth
                            anchors.left:       parent.left
                            anchors.top:        parent.top
                            spacing:            ScreenTools.defaultFontPixelHeight

Don Gagne's avatar
Don Gagne committed
140 141
                            Row {
                                spacing: ScreenTools.defaultFontPixelWidth
Don Gagne's avatar
Don Gagne committed
142

Don Gagne's avatar
Don Gagne committed
143
                                property Fact fact: controller.getParameterFact(-1, "RC_MAP_RETURN_SW")
Don Gagne's avatar
Don Gagne committed
144

Don Gagne's avatar
Don Gagne committed
145 146 147
                                QGCLabel {
                                    anchors.baseline:   returnCombo.baseline
                                    text:               "Return switch:"
Don Gagne's avatar
Don Gagne committed
148
                                    color:              parent.fact.value == 0 ? qgcPal.text : (controller.rcChannelValues[parent.fact.value - 1] >= 1500 ? "yellow" : qgcPal.text)
Don Gagne's avatar
Don Gagne committed
149
                                }
Don Gagne's avatar
Don Gagne committed
150

Don Gagne's avatar
Don Gagne committed
151 152 153 154 155 156 157
                                FactComboBox {
                                    id:         returnCombo
                                    width:      _channelComboWidth
                                    fact:       parent.fact
                                    indexModel: false
                                }
                            }
Don Gagne's avatar
Don Gagne committed
158

Don Gagne's avatar
Don Gagne committed
159 160 161 162 163 164 165 166
                            Row {
                                spacing: ScreenTools.defaultFontPixelWidth

                                property Fact fact: controller.getParameterFact(-1, "RC_MAP_KILL_SW")

                                QGCLabel {
                                    anchors.baseline:   killCombo.baseline
                                    text:               "Kill switch:"
Don Gagne's avatar
Don Gagne committed
167
                                    color:              parent.fact.value == 0 ? qgcPal.text : (controller.rcChannelValues[parent.fact.value - 1] >= 1500 ? "yellow" : qgcPal.text)
Don Gagne's avatar
Don Gagne committed
168 169 170 171 172 173 174
                                }

                                FactComboBox {
                                    id:         killCombo
                                    width:      _channelComboWidth
                                    fact:       parent.fact
                                    indexModel: false
Don Gagne's avatar
Don Gagne committed
175
                                }
Don Gagne's avatar
Don Gagne committed
176 177 178 179 180 181 182 183 184 185
                            }

                            Row {
                                spacing: ScreenTools.defaultFontPixelWidth

                                property Fact fact: controller.getParameterFact(-1, "RC_MAP_OFFB_SW")

                                QGCLabel {
                                    anchors.baseline:   offboardCombo.baseline
                                    text:               "Offboard switch:"
Don Gagne's avatar
Don Gagne committed
186
                                    color:              parent.fact.value == 0 ? qgcPal.text : (controller.rcChannelValues[parent.fact.value - 1] >= 1500 ? "yellow" : qgcPal.text)
Don Gagne's avatar
Don Gagne committed
187 188 189 190 191 192 193 194 195
                                }

                                FactComboBox {
                                    id:         offboardCombo
                                    width:      _channelComboWidth
                                    fact:       parent.fact
                                    indexModel: false
                                }
                            }
196 197 198 199

                            Row {
                                spacing: ScreenTools.defaultFontPixelWidth

200
                                property Fact fact: controller.getParameterFact(-1, "RC_MAP_TRANS_SW", false)
201
                                visible: (controller.vehicle.vtol && controller.parameterExists(-1, "RC_MAP_TRANS_SW"))
202 203 204 205 206 207 208 209 210 211 212 213 214 215

                                QGCLabel {
                                    anchors.baseline:   vtolCombo.baseline
                                    text:               "VTOL mode switch:"
                                    color:              parent.fact.value == 0 ? qgcPal.text : (controller.rcChannelValues[parent.fact.value - 1] >= 1500 ? "yellow" : qgcPal.text)
                                }

                                FactComboBox {
                                    id:         vtolCombo
                                    width:      _channelComboWidth
                                    fact:       parent.fact
                                    indexModel: false
                                }
                            }
Don Gagne's avatar
Don Gagne committed
216 217
                        } // Column
                    } // Rectangle
Don Gagne's avatar
Don Gagne committed
218 219 220 221

                    RCChannelMonitor {
                        width: switchSettingsRect.width
                    }
Don Gagne's avatar
Don Gagne committed
222 223
                } // Column - Switch settings
            } // Row - Settings
Don Gagne's avatar
Don Gagne committed
224 225

            QGCButton {
Don Gagne's avatar
Don Gagne committed
226
                text: "Use Multi Channel Mode Selection"
Don Gagne's avatar
Don Gagne committed
227 228 229 230 231 232 233 234
                onClicked: {
                    controller.getParameterFact(-1, "RC_MAP_MODE_SW").value = 5
                    controller.getParameterFact(-1, "RC_MAP_FLTMODE").value = 0
                }
            }
        } // Column
    } // QGCFlickable
} // QGCView