You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
9.2 KiB
232 lines
9.2 KiB
/*===================================================================== |
|
|
|
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 QtQuick.Dialogs 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 |
|
|
|
QGCView { |
|
id: qgcView |
|
viewPanel: panel |
|
|
|
QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled } |
|
|
|
AirframeComponentController { |
|
id: controller |
|
factPanel: panel |
|
|
|
Component.onCompleted: { |
|
if (controller.showCustomConfigPanel) { |
|
showDialog(customConfigDialogComponent, "Custom Airframe Config", 50, StandardButton.Reset) |
|
} |
|
} |
|
} |
|
|
|
Component { |
|
id: customConfigDialogComponent |
|
|
|
QGCViewMessage { |
|
id: customConfigDialog |
|
|
|
message: "Your vehicle is using a custom airframe configuration. " + |
|
"This configuration can only be modified through the Parameter Editor.\n\n" + |
|
"If you want to Reset your airframe configuration and select a standard configuration, click 'Reset' above." |
|
|
|
property Fact sys_autostart: controller.getParameterFact(-1, "SYS_AUTOSTART") |
|
|
|
function accept() { |
|
sys_autostart.value = 0 |
|
customConfigDialog.hideDialog() |
|
} |
|
} |
|
} |
|
|
|
Component { |
|
id: applyRestartDialogComponent |
|
|
|
QGCViewDialog { |
|
id: applyRestartDialog |
|
|
|
function accept() { |
|
controller.changeAutostart() |
|
applyRestartDialog.hideDialog() |
|
} |
|
|
|
QGCLabel { |
|
anchors.fill: parent |
|
wrapMode: Text.WordWrap |
|
text: "Clicking Apply will save the changes you have made to your aiframe configuration. " + |
|
"Your vehicle will also be rebooted in order to complete the process. " + |
|
"After your vehicle reboots, you can reconnect it to QGroundControl." |
|
} |
|
} |
|
} |
|
|
|
QGCViewPanel { |
|
id: panel |
|
anchors.fill: parent |
|
|
|
readonly property real spacerHeight: ScreenTools.defaultFontPixelHeight |
|
|
|
Item { |
|
id: helpApplyRow |
|
anchors.top: parent.top |
|
anchors.left: parent.left |
|
anchors.right: parent.right |
|
height: Math.max(helpText.contentHeight, applyButton.height) |
|
|
|
QGCLabel { |
|
id: helpText |
|
width: parent.width - applyButton.width - 5 |
|
text: "Please select your airframe type. Click 'Apply and Restart' to reboot the autopilot. Please re-connect then manually." |
|
font.pixelSize: ScreenTools.mediumFontPixelSize |
|
wrapMode: Text.WordWrap |
|
} |
|
|
|
QGCButton { |
|
id: applyButton |
|
anchors.right: parent.right |
|
text: "Apply and Restart" |
|
|
|
onClicked: showDialog(applyRestartDialogComponent, "Apply and Restart", 50, StandardButton.Apply | StandardButton.Cancel) |
|
} |
|
} |
|
|
|
Item { |
|
id: lastSpacer |
|
anchors.top: helpApplyRow.bottom |
|
height: parent.spacerHeight |
|
width: 10 |
|
} |
|
|
|
ScrollView { |
|
id: scroll |
|
anchors.top: lastSpacer.bottom |
|
anchors.bottom: parent.bottom |
|
width: parent.width |
|
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff |
|
|
|
Flow { |
|
width: scroll.width |
|
spacing: ScreenTools.defaultFontPixelWidth |
|
|
|
ExclusiveGroup { |
|
id: airframeTypeExclusive |
|
} |
|
|
|
Repeater { |
|
model: controller.airframeTypes |
|
|
|
// Outer summary item rectangle |
|
Rectangle { |
|
id: airframeBackground |
|
width: ScreenTools.defaultFontPixelWidth * 30 |
|
height: width * .75 |
|
color: (modelData.name != controller.currentAirframeType) ? qgcPal.windowShade : qgcPal.buttonHighlight |
|
|
|
readonly property real titleHeight: ScreenTools.defaultFontPixelHeight * 1.75 |
|
readonly property real innerMargin: ScreenTools.defaultFontPixelWidth |
|
|
|
MouseArea { |
|
anchors.fill: parent |
|
onClicked: airframeCheckBox.checked = true |
|
} |
|
|
|
Rectangle { |
|
id: title |
|
width: parent.width |
|
height: parent.titleHeight |
|
color: qgcPal.windowShadeDark |
|
|
|
QGCLabel { |
|
anchors.fill: parent |
|
color: qgcPal.buttonText |
|
verticalAlignment: TextEdit.AlignVCenter |
|
horizontalAlignment: TextEdit.AlignHCenter |
|
text: modelData.name |
|
} |
|
} |
|
|
|
Image { |
|
id: image |
|
anchors.topMargin: innerMargin |
|
anchors.top: title.bottom |
|
x: innerMargin |
|
width: parent.width - (innerMargin * 2) |
|
height: parent.height - title.height - combo.height - (innerMargin * 3) |
|
fillMode: Image.PreserveAspectFit |
|
smooth: true |
|
source: modelData.imageResource |
|
|
|
|
|
} |
|
|
|
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 |
|
airframeBackground.color = qgcPal.buttonHighlight; |
|
} else { |
|
airframeBackground.color = qgcPal.windowShade; |
|
} |
|
} |
|
} |
|
|
|
QGCComboBox { |
|
id: combo |
|
objectName: modelData.airframeType + "ComboBox" |
|
x: innerMargin |
|
anchors.topMargin: innerMargin |
|
anchors.top: image.bottom |
|
width: parent.width - (innerMargin * 2) |
|
currentIndex: (modelData.name == controller.currentAirframeType) ? controller.currentVehicleIndex : -1 |
|
model: modelData.airframes |
|
|
|
onActivated: { |
|
if (index != -1) { |
|
currentIndex = index |
|
controller.autostartId = modelData.airframes[index].autostartId |
|
airframeCheckBox.checked = true; |
|
} |
|
} |
|
} |
|
} |
|
} // Repeater - summary boxes |
|
} // Flow - summary boxes |
|
} // Scroll View - summary boxes |
|
} // QGCViewPanel |
|
} // QGCView
|
|
|