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: _autoConnectSettings.nmeaSource.userVisible && _autoConnectSettings.autoConnectNmeaBaud.userVisible
11
12 readonly property var _autoConnectSettings: QGroundControl.settingsManager.autoConnectSettings
13 readonly property bool _serialSource: _autoConnectSettings.nmeaSource.rawValue === AutoConnectSettings.NmeaSourceSerial
14
15 LabelledFactComboBox {
16 label: qsTr("Source")
17 fact: _autoConnectSettings.nmeaSource
18 }
19
20 LabelledComboBox {
21 id: nmeaPortCombo
22 visible: _serialSource
23 label: qsTr("Device")
24
25 model: ListModel {}
26
27 onActivated: (index) => {
28 if (index !== -1 && QGroundControl.linkManager.serialPorts.length !== 0) {
29 _autoConnectSettings.autoConnectNmeaPort.value = comboBox.textAt(index)
30 }
31 }
32
33 Component.onCompleted: {
34 var model = []
35
36 if (QGroundControl.linkManager.serialPorts.length === 0) {
37 model.push(qsTr("<none available>"))
38 } else {
39 for (var i in QGroundControl.linkManager.serialPorts) {
40 model.push(QGroundControl.linkManager.serialPorts[i])
41 }
42 }
43 nmeaPortCombo.model = model
44
45 nmeaPortCombo.currentIndex = nmeaPortCombo.comboBox.find(_autoConnectSettings.autoConnectNmeaPort.valueString)
46 }
47 }
48
49 LabelledComboBox {
50 id: nmeaBaudCombo
51 visible: _serialSource
52 label: qsTr("Baudrate")
53
54 readonly property string _customLabel: qsTr("Custom")
55 readonly property bool isCustomBaud: currentText === _customLabel
56
57 onActivated: (index) => {
58 if (index !== -1 && !isCustomBaud) {
59 QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.value = parseInt(comboBox.textAt(index));
60 }
61 }
62
63 Component.onCompleted: {
64 var rates = QGroundControl.linkManager.serialBaudRates.slice()
65 rates.push(_customLabel)
66 nmeaBaudCombo.model = rates
67
68 var baud = _autoConnectSettings.autoConnectNmeaBaud.valueString
69 const index = nmeaBaudCombo.comboBox.find(baud);
70 if (index === -1) {
71 nmeaBaudCombo.currentIndex = nmeaBaudCombo.comboBox.count - 1
72 customNmeaBaudField.text = baud
73 } else {
74 nmeaBaudCombo.currentIndex = index;
75 }
76 }
77 }
78
79 RowLayout {
80 visible: nmeaBaudCombo.visible && nmeaBaudCombo.isCustomBaud
81 spacing: ScreenTools.defaultFontPixelWidth
82
83 QGCLabel {
84 text: qsTr("Custom Baud Rate")
85 Layout.fillWidth: true
86 }
87 QGCTextField {
88 id: customNmeaBaudField
89 numericValuesOnly: true
90 validator: IntValidator { bottom: 1 }
91 onEditingFinished: {
92 if (!nmeaBaudCombo.isCustomBaud) return
93 var baud = parseInt(text)
94 if (baud > 0) {
95 _autoConnectSettings.autoConnectNmeaBaud.value = baud
96 }
97 }
98 }
99 }
100
101 LabelledFactTextField {
102 visible: _autoConnectSettings.nmeaSource.rawValue === AutoConnectSettings.NmeaSourceUdp
103 label: qsTr("NMEA stream UDP port")
104 fact: _autoConnectSettings.nmeaUdpPort
105 }
106}