6import QGroundControl.Controls
11 function saveSettings() {
12 if (baudCombo.isCustomBaud) {
13 var baud = parseInt(customBaudField.text)
15 subEditConfig.baud = baud
22 rowSpacing: _rowSpacing
23 columnSpacing: _colSpacing
25 QGCLabel { text: qsTr("Serial Port") }
28 Layout.preferredWidth: _secondColumnWidth
29 enabled: QGroundControl.linkManager.serialPorts.length > 0
31 onActivated: (index) => {
33 if (index >= QGroundControl.linkManager.serialPortStrings.length) {
34 // This item was adding at the end, must use added text as name
35 subEditConfig.portName = commPortCombo.textAt(index)
37 subEditConfig.portName = QGroundControl.linkManager.serialPorts[index]
42 Component.onCompleted: {
45 if (QGroundControl.linkManager.serialPortStrings.length !== 0) {
46 for (var i=0; i<QGroundControl.linkManager.serialPortStrings.length; i++) {
47 serialPorts.push(QGroundControl.linkManager.serialPortStrings[i])
49 if (subEditConfig.portDisplayName === "" && QGroundControl.linkManager.serialPorts.length > 0) {
50 subEditConfig.portName = QGroundControl.linkManager.serialPorts[0]
52 index = serialPorts.indexOf(subEditConfig.portDisplayName)
54 serialPorts.push(subEditConfig.portName)
55 index = serialPorts.indexOf(subEditConfig.portName)
58 if (serialPorts.length === 0) {
59 serialPorts = [ qsTr("None Available") ]
62 commPortCombo.model = serialPorts
63 commPortCombo.currentIndex = index
67 QGCLabel { text: qsTr("Baud Rate") }
70 Layout.preferredWidth: _secondColumnWidth
72 readonly property string _customLabel: qsTr("Custom")
73 readonly property bool isCustomBaud: currentText === _customLabel
75 onActivated: (index) => {
76 if (index !== -1 && !isCustomBaud) {
77 subEditConfig.baud = parseInt(currentText)
81 Component.onCompleted: {
82 var rates = QGroundControl.linkManager.serialBaudRates.slice()
83 rates.push(_customLabel)
86 var baud = subEditConfig ? subEditConfig.baud.toString() : "57600"
87 var index = baudCombo.find(baud)
89 baudCombo.currentIndex = baudCombo.count - 1
90 customBaudField.text = baud
92 baudCombo.currentIndex = index
98 text: qsTr("Custom Baud Rate")
99 visible: baudCombo.isCustomBaud
103 Layout.preferredWidth: _secondColumnWidth
104 visible: baudCombo.isCustomBaud
105 numericValuesOnly: true
106 validator: IntValidator { bottom: 1 }
108 if (!baudCombo.isCustomBaud) return
109 var baud = parseInt(text)
111 subEditConfig.baud = baud
119 text: qsTr("Advanced Settings")
125 rowSpacing: _rowSpacing
126 columnSpacing: _colSpacing
127 visible: advancedSettings.checked
131 text: qsTr("Enable Flow Control")
132 checked: subEditConfig.flowControl !== 0
133 onCheckedChanged: subEditConfig.flowControl = checked ? 1 : 0
138 text: qsTr("Force DTR Low")
139 checked: subEditConfig ? subEditConfig.dtrForceLow : false
140 onCheckedChanged: { if (subEditConfig) subEditConfig.dtrForceLow = checked }
143 QGCLabel { text: qsTr("Parity") }
145 Layout.preferredWidth: _secondColumnWidth
146 model: [qsTr("None"), qsTr("Even"), qsTr("Odd")]
148 onActivated: (index) => {
149 // Hard coded values from qserialport.h
152 subEditConfig.parity = 0
155 subEditConfig.parity = 2
158 subEditConfig.parity = 3
163 Component.onCompleted: {
164 switch (subEditConfig.parity) {
175 console.warn("Unknown parity", subEditConfig.parity)
181 QGCLabel { text: qsTr("Data Bits") }
183 Layout.preferredWidth: _secondColumnWidth
184 model: [ "5", "6", "7", "8" ]
185 currentIndex: Math.max(Math.min(subEditConfig.dataBits - 5, 3), 0)
186 onActivated: (index) => { subEditConfig.dataBits = index + 5 }
189 QGCLabel { text: qsTr("Stop Bits") }
191 Layout.preferredWidth: _secondColumnWidth
193 currentIndex: Math.max(Math.min(subEditConfig.stopBits - 1, 1), 0)
194 onActivated: (index) => { subEditConfig.stopBits = index + 1 }