QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
JoystickComponentSettings.qml
Go to the documentation of this file.
1import QtQuick
2import QtQuick.Controls
3import QtQuick.Dialogs
4import QtQuick.Layouts
5
6import QGroundControl
7import QGroundControl.Controls
8import QGroundControl.VehicleSetup
9import QGroundControl.FactControls
10
11ColumnLayout {
12 spacing: _margins
13
14 required property var joystick
15
16 readonly property var _joystickSettings: joystick.settings
17 readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2
18 readonly property bool _anyAdvancedSettingsEnabled:
19 _joystickSettings.circleCorrection.rawValue ||
20 _joystickSettings.useDeadband.rawValue ||
21 _joystickSettings.enableManualControlPitchExtension.rawValue ||
22 _joystickSettings.enableManualControlRollExtension.rawValue ||
23 _joystickSettings.enableAdditionalAxis1.rawValue ||
24 _joystickSettings.enableAdditionalAxis2.rawValue ||
25 _joystickSettings.enableAdditionalAxis3.rawValue ||
26 _joystickSettings.enableAdditionalAxis4.rawValue ||
27 _joystickSettings.enableAdditionalAxis5.rawValue ||
28 _joystickSettings.enableAdditionalAxis6.rawValue
29
30 ColumnLayout {
31 Layout.fillWidth: true
32 Layout.leftMargin: _margins
33 Layout.rightMargin: _margins
34 spacing: _margins
35
36 FactCheckBoxSlider {
37 Layout.fillWidth: true
38 text: qsTr("Center stick is zero throttle")
39 fact: _joystickSettings.throttleModeCenterZero
40 visible: fact.userVisible
41 }
42
43 FactCheckBoxSlider {
44 Layout.fillWidth: true
45 text: qsTr("Spring loaded throttle smoothing")
46 fact: _joystickSettings.throttleSmoothing
47 visible: fact.userVisible && _joystickSettings.throttleModeCenterZero.rawValue
48 }
49
50 FactTextFieldSlider {
51 Layout.fillWidth: true
52 label: fact.shortDescription
53 fact: _joystickSettings.exponentialPct
54 }
55
56 FactCheckBoxSlider {
57 Layout.fillWidth: true
58 text: qsTr("Negative Thrust")
59 fact: _joystickSettings.negativeThrust
60 visible: globals.activeVehicle.supports.negativeThrust && fact.userVisible
61 }
62
63 QGCCheckBoxSlider {
64 id: advancedSettingsCheckbox
65 Layout.fillWidth: true
66 text: qsTr("Advanced Settings")
67 Component.onCompleted: checked = _anyAdvancedSettingsEnabled
68 }
69 }
70
71 SettingsGroupLayout {
72 Layout.fillWidth: true
73 heading: qsTr("Advanced Settings")
74 visible: advancedSettingsCheckbox.checked
75
76 FactCheckBoxSlider {
77 Layout.fillWidth: true
78 text: qsTr("Circle Correction")
79 fact: _joystickSettings.circleCorrection
80 visible: fact.userVisible
81 }
82
83 FactTextFieldSlider {
84 Layout.fillWidth: true
85 label: fact.shortDescription
86 fact: _joystickSettings.axisFrequencyHz
87 visible: fact.userVisible
88 }
89
90 FactTextFieldSlider {
91 Layout.fillWidth: true
92 label: fact.shortDescription
93 fact: _joystickSettings.buttonFrequencyHz
94 visible: fact.userVisible
95 }
96
97 ColumnLayout {
98 Layout.fillWidth: true
99 spacing: 0
100
101 FactCheckBoxSlider {
102 text: qsTr("Deadband")
103 fact: _joystickSettings.useDeadband
104 visible: fact.userVisible
105 }
106
107 QGCLabel{
108 Layout.fillWidth: true
109 Layout.maximumWidth: additionalAxesRcChannelsOverride.x + additionalAxesRcChannelsOverride.width
110 font.pointSize: ScreenTools.smallFontPointSize
111 wrapMode: Text.WordWrap
112 text: qsTr("Deadband can be set during the first step of calibration by gently wiggling each axis. ")
113 }
114 }
115
116 ColumnLayout {
117 Layout.fillWidth: true
118 spacing: ScreenTools.defaultFontPixelWidth / 2
119
120 QGCLabel { text: qsTr("MANUAL_CONTROL Extensions") }
121
122 ColumnLayout {
123 Layout.leftMargin: ScreenTools.defaultFontPixelWidth
124 Layout.fillWidth: true
125 spacing: ScreenTools.defaultFontPixelWidth / 2
126
127 FactCheckBoxSlider {
128 Layout.fillWidth: true
129 text: qsTr("Pitch")
130 fact: _joystickSettings.enableManualControlPitchExtension
131 visible: fact.userVisible
132 }
133
134 FactCheckBoxSlider {
135 Layout.fillWidth: true
136 text: qsTr("Roll")
137 fact: _joystickSettings.enableManualControlRollExtension
138 visible: fact.userVisible
139 }
140 }
141 }
142
143 ColumnLayout {
144 Layout.fillWidth: true
145 spacing: ScreenTools.defaultFontPixelWidth / 2
146
147 QGCLabel { text: qsTr("Additional Axes") }
148
149 ColumnLayout {
150 Layout.leftMargin: ScreenTools.defaultFontPixelWidth
151 Layout.fillWidth: true
152 spacing: ScreenTools.defaultFontPixelWidth / 2
153
154 ColumnLayout {
155 spacing: 0
156
157 QGCRadioButton {
158 id: additionalAxesManualControl
159 text: qsTr("Send using MANUAL_CONTROL")
160 checked: _joystickSettings.additionalAxesFunction.rawValue == 0
161 onClicked: _joystickSettings.additionalAxesFunction.rawValue = 0
162 }
163
164 QGCRadioButton {
165 id: additionalAxesRcChannelsOverride
166 text: qsTr("Send using RC_CHANNELS_OVERRIDE")
167 checked: _joystickSettings.additionalAxesFunction.rawValue == 1
168 onClicked: _joystickSettings.additionalAxesFunction.rawValue = 1
169 }
170 }
171
172 FactCheckBoxSlider {
173 Layout.fillWidth: true
174 text: additionalAxesManualControl.checked ? qsTr("Aux1") : qsTr("Channel 5")
175 fact: _joystickSettings.enableAdditionalAxis1
176 visible: fact.userVisible
177 }
178
179 FactCheckBoxSlider {
180 Layout.fillWidth: true
181 text: additionalAxesManualControl.checked ? qsTr("Aux2") : qsTr("Channel 6")
182 fact: _joystickSettings.enableAdditionalAxis2
183 visible: fact.userVisible
184 }
185
186 FactCheckBoxSlider {
187 Layout.fillWidth: true
188 text: additionalAxesManualControl.checked ? qsTr("Aux3") : qsTr("Channel 7")
189 fact: _joystickSettings.enableAdditionalAxis3
190 visible: fact.userVisible
191 }
192
193 FactCheckBoxSlider {
194 Layout.fillWidth: true
195 text: additionalAxesManualControl.checked ? qsTr("Aux4") : qsTr("Channel 8")
196 fact: _joystickSettings.enableAdditionalAxis4
197 visible: fact.userVisible
198 }
199
200 FactCheckBoxSlider {
201 Layout.fillWidth: true
202 text: additionalAxesManualControl.checked ? qsTr("Aux5") : qsTr("Channel 9")
203 fact: _joystickSettings.enableAdditionalAxis5
204 visible: fact.userVisible
205 }
206
207 FactCheckBoxSlider {
208 Layout.fillWidth: true
209 text: additionalAxesManualControl.checked ? qsTr("Aux6") : qsTr("Channel 10")
210 fact: _joystickSettings.enableAdditionalAxis6
211 visible: fact.userVisible
212 }
213 }
214 }
215 }
216}