QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
NmeaGpsSettings.qml
Go to the documentation of this file.
1import QtQuick
2import QtQuick.Layouts
3
4import QGroundControl
5import QGroundControl.Controls
6import QGroundControl.FactControls
7
8SettingsGroupLayout {
9 heading: qsTr("NMEA GPS")
10 visible: QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaPort.userVisible && QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.userVisible
11
12 LabelledComboBox {
13 id: nmeaPortCombo
14 label: qsTr("Device")
15
16 model: ListModel {}
17
18 onActivated: (index) => {
19 if (index !== -1) {
20 QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaPort.value = comboBox.textAt(index);
21 }
22 }
23
24 Component.onCompleted: {
25 var model = []
26
27 model.push(qsTr("Disabled"))
28 model.push(qsTr("UDP Port"))
29
30 if (QGroundControl.linkManager.serialPorts.length === 0) {
31 model.push(qsTr("Serial <none available>"))
32 } else {
33 for (var i in QGroundControl.linkManager.serialPorts) {
34 model.push(QGroundControl.linkManager.serialPorts[i])
35 }
36 }
37 nmeaPortCombo.model = model
38
39 const index = nmeaPortCombo.comboBox.find(QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaPort.valueString);
40 nmeaPortCombo.currentIndex = index;
41 }
42 }
43
44 LabelledComboBox {
45 id: nmeaBaudCombo
46 visible: nmeaPortCombo.currentIndex > 1
47 label: qsTr("Baudrate")
48
49 readonly property string _customLabel: qsTr("Custom")
50 readonly property bool isCustomBaud: currentText === _customLabel
51
52 onActivated: (index) => {
53 if (index !== -1 && !isCustomBaud) {
54 QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.value = parseInt(comboBox.textAt(index));
55 }
56 }
57
58 Component.onCompleted: {
59 var rates = QGroundControl.linkManager.serialBaudRates.slice()
60 rates.push(_customLabel)
61 nmeaBaudCombo.model = rates
62
63 var baud = QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.valueString
64 const index = nmeaBaudCombo.comboBox.find(baud);
65 if (index === -1) {
66 nmeaBaudCombo.currentIndex = nmeaBaudCombo.comboBox.count - 1
67 customNmeaBaudField.text = baud
68 } else {
69 nmeaBaudCombo.currentIndex = index;
70 }
71 }
72 }
73
74 RowLayout {
75 visible: nmeaBaudCombo.visible && nmeaBaudCombo.isCustomBaud
76 spacing: ScreenTools.defaultFontPixelWidth
77
78 QGCLabel {
79 text: qsTr("Custom Baud Rate")
80 Layout.fillWidth: true
81 }
82 QGCTextField {
83 id: customNmeaBaudField
84 numericValuesOnly: true
85 validator: IntValidator { bottom: 1 }
86 onEditingFinished: {
87 if (!nmeaBaudCombo.isCustomBaud) return
88 var baud = parseInt(text)
89 if (baud > 0) {
90 QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.value = baud
91 }
92 }
93 }
94 }
95
96 LabelledFactTextField {
97 visible: nmeaPortCombo.currentIndex === 1
98 label: qsTr("NMEA stream UDP port")
99 fact: QGroundControl.settingsManager.autoConnectSettings.nmeaUdpPort
100 }
101}