AirframeComponent.qml 5.81 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
/*=====================================================================

 QGroundControl Open Source Ground Control Station

 (c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>

 This file is part of the QGROUNDCONTROL project

 QGROUNDCONTROL is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 QGROUNDCONTROL is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.

 ======================================================================*/

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 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

34 35
FactPanel {
    id: panel
36

37
    AirframeComponentController { id: controller; factPanel: panel }
38

39
    Rectangle {
40 41
        anchors.fill: parent

42
        QGCPalette { id: qgcPal; colorGroupEnabled: true }
43

44
        color: qgcPal.window
45

46 47
        Column {
            anchors.fill: parent
48 49

            QGCLabel {
50 51
                text: "AIRFRAME CONFIG"
                font.pointSize: 20
52 53
            }

54
            Item { height: 20; width: 10 } // spacer
55

56 57
            Row {
                width: parent.width
58

59 60 61 62 63
                QGCLabel {
                    width:      parent.width - applyButton.width
                    text:       "Select you airframe type and specific vehicle bellow. Click 'Apply and Restart' when ready and your vehicle will be disconnected, rebooted to the new settings and re-connected."
                    wrapMode:   Text.WordWrap
                }
64

65 66 67 68 69
                QGCButton {
                    id:     applyButton
                    text:   "Apply and Restart"
                    onClicked: { controller.changeAutostart() }
                }
70 71
            }

72
            Item { height: 20; width: 10 } // spacer
73

74 75 76
            Flow {
                width: parent.width
                spacing: 10
77

78 79 80 81 82 83
                ExclusiveGroup {
                    id: airframeTypeExclusive
                }

                Repeater {
                    model: controller.airframeTypes
84

85
                    // Outer summary item rectangle
86
                    Rectangle {
87 88
                        readonly property real titleHeight: 30
                        readonly property real innerMargin: 10
89

90 91 92
                        width:  250
                        height: 200
                        color:  qgcPal.windowShade
93

94 95 96 97 98
                        Rectangle {
                            id:     title
                            width:  parent.width
                            height: parent.titleHeight
                            color:  qgcPal.windowShadeDark
99

100 101
                            Text {
                                anchors.fill:   parent
102

103 104 105
                                color:          qgcPal.buttonText
                                font.pixelSize: 12
                                text:           modelData.name
106

107 108 109 110
                                verticalAlignment:      TextEdit.AlignVCenter
                                horizontalAlignment:    TextEdit.AlignHCenter
                            }
                        }
111

112 113 114 115 116 117 118 119 120 121 122
                        Image {
                            id:     image
                            x:      innerMargin
                            width:  parent.width - (innerMargin * 2)
                            height: parent.height - title.height - combo.height - (innerMargin * 3)
                            anchors.topMargin:  innerMargin
                            anchors.top:        title.bottom

                            source:     modelData.imageResource
                            fillMode:   Image.PreserveAspectFit
                            smooth:     true
123

124
                        }
125

126 127 128 129 130 131 132 133 134 135 136
                        QGCCheckBox {
                            id:             airframeCheckBox
                            anchors.bottom: image.bottom
                            anchors.right: image.right
                            checked:        modelData.name == controller.currentAirframeType
                            exclusiveGroup: airframeTypeExclusive

                            onCheckedChanged: {
                                if (checked && combo.currentIndex != -1) {
                                    controller.autostartId = modelData.airframes[combo.currentIndex].autostartId
                                }
137 138 139
                            }
                        }

140 141 142 143 144 145 146 147 148 149 150 151 152 153
                        QGCComboBox {
                            id:     combo
                            objectName: modelData.airframeType + "ComboBox"
                            x:      innerMargin
                            anchors.topMargin: innerMargin
                            anchors.top: image.bottom
                            width:  parent.width - (innerMargin * 2)
                            model:  modelData.airframes
                            currentIndex: (modelData.name == controller.currentAirframeType) ? controller.currentVehicleIndex : 0

                            onCurrentIndexChanged: {
                                if (airframeCheckBox.checked) {
                                    controller.autostartId = modelData.airframes[currentIndex].autostartId
                                }
154 155 156 157 158 159
                            }
                        }
                    }
                }
            }

160
        }
161
    }
162
}