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 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29


import QtQuick                  2.5
import QtQuick.Controls         1.2

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