QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
SetupPage.qml
Go to the documentation of this file.
1import QtQuick
2import QtQuick.Controls
3import QtQuick.Dialogs
4import QtQuick.Layouts
5
6import QGroundControl
7import QGroundControl.FactControls
8import QGroundControl.Controls
9
10/// Base view control for all Setup pages
11Item {
12 id: setupView
13 enabled: !_disableDueToArmed && !_disableDueToFlying
14
15 property alias pageComponent: pageLoader.sourceComponent
16 property string pageName: vehicleComponent ? vehicleComponent.name : ""
17 property string pageDescription: vehicleComponent ? vehicleComponent.description : ""
18 property real availableWidth: width - pageLoader.x
19 property real availableHeight: height - pageLoader.y
20 property bool showAdvanced: false
21 property alias advanced: advancedCheckBox.checked
22 property string sectionIdFilter: ""
23
24 function sectionVisible(sectionId) {
25 if (pageLoader.item && typeof pageLoader.item.sectionVisible === "function") {
26 return pageLoader.item.sectionVisible(sectionId)
27 }
28 return true
29 }
30
31 onSectionIdFilterChanged: {
32 if (pageLoader.item && typeof pageLoader.item.sectionIdFilter !== "undefined") {
33 pageLoader.item.sectionIdFilter = sectionIdFilter
34 }
35 }
36
37 property bool _vehicleArmed: globals.activeVehicle ? globals.activeVehicle.armed : false
38 property bool _vehicleAirborne: globals.activeVehicle ? globals.activeVehicle.airborne : false
39 property bool _disableDueToArmed: vehicleComponent ? (!vehicleComponent.allowSetupWhileArmed && _vehicleArmed) : false
40 property bool _disableDueToFlying: vehicleComponent ? (!vehicleComponent.allowSetupWhileFlying && _vehicleAirborne) : false
41 property string _disableReason: _disableDueToArmed ? qsTr("armed") : qsTr("flying")
42 property real _margins: ScreenTools.defaultFontPixelHeight * 0.5
43
44 Component.onCompleted: {
45 if(pageLoader.item && pageLoader.item.setupPageCompleted) {
46 pageLoader.item.setupPageCompleted()
47 }
48 if (pageLoader.item && typeof pageLoader.item.sectionIdFilter !== "undefined") {
49 pageLoader.item.sectionIdFilter = sectionIdFilter
50 }
51 }
52
53 QGCFlickable {
54 anchors.fill: parent
55 contentWidth: Math.max(availableWidth, pageLoader.x + pageLoader.item.width)
56 contentHeight: Math.max(availableHeight, pageLoader.y + pageLoader.item.height)
57 clip: true
58
59 RowLayout {
60 id: headingRow
61 width: availableWidth
62 spacing: _margins
63 layoutDirection: Qt.RightToLeft
64 visible: showAdvanced || (pageDescription !== "" && !ScreenTools.isShortScreen)
65
66 QGCCheckBox {
67 id: advancedCheckBox
68 text: qsTr("Advanced")
69 visible: showAdvanced
70 }
71
72 ColumnLayout {
73 spacing: _margins
74 Layout.fillWidth: true
75
76 QGCLabel {
77 Layout.fillWidth: true
78 wrapMode: Text.WordWrap
79 text: pageDescription
80 visible: pageDescription !== "" && !ScreenTools.isShortScreen
81 }
82
83 QGCLabel {
84 Layout.fillWidth: true
85 wrapMode: Text.WordWrap
86 text: qsTr("Disabled while the vehicle is %1").arg(_disableReason)
87 color: qgcPal.warningText
88 visible: !setupView.enabled && !ScreenTools.isShortScreen
89 }
90 }
91 }
92
93 Loader {
94 id: pageLoader
95 objectName: "setupPage_contentLoader"
96 anchors.topMargin: _margins
97 anchors.top: headingRow.bottom
98 }
99
100 // Overlay to display when vehicle is armed and this setup page needs
101 // to be disabled
102 Rectangle {
103 visible: !setupView.enabled
104 anchors.fill: parent
105 color: "black"
106 opacity: 0.5
107 }
108 }
109}