/* Copyright (C) 2019-2021 Doug McLain This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ import QtQuick import QtQuick.Controls Item { id: settingsTab property alias callsignEdit: csedit property alias dmridEdit: dmridedit property alias comboEssid: comboessid property alias bmpwEdit: bmpwedit property alias tgifpwEdit: tgifpwedit property alias latEdit: latedit property alias lonEdit: lonedit property alias locEdit: locedit property alias descEdit: descedit property alias urlEdit: urledit property alias swidEdit: swidedit property alias pkgidEdit: pkgidedit property alias dmroptsEdit: dmroptsedit property alias m173200: m17_3200 property alias m171600: m17_1600 property alias mycallEdit: mycalledit property alias urcallEdit: urcalledit property alias rptr1Edit: rptr1edit property alias rptr2Edit: rptr2edit property alias usrtxtEdit: usrtxtedit property alias txtimerEdit: txtimeredit property alias toggleTX: toggletx property alias xrf2ref: xrf2Ref property alias ipv6: ipV6 property alias comboVocoder: _comboVocoder property alias comboModem: _comboModem property alias comboPlayback: _comboPlayback property alias comboCapture: _comboCapture property alias modemRXFreqEdit: _modemRXFreqEdit property alias modemTXFreqEdit: _modemTXFreqEdit property alias modemRXOffsetEdit: _modemRXOffsetEdit property alias modemTXOffsetEdit: _modemTXOffsetEdit property alias modemRXDCOffsetEdit: _modemRXDCOffsetEdit property alias modemTXDCOffsetEdit: _modemTXDCOffsetEdit property alias modemRXLevelEdit: _modemRXLevelEdit property alias modemTXLevelEdit: _modemTXLevelEdit property alias modemRFLevelEdit: _modemRFLevelEdit property alias modemTXDelayEdit: _modemTXDelayEdit property alias modemCWIdTXLevelEdit: _modemCWIdTXLevelEdit property alias modemDStarTXLevelEdit: _modemDStarTXLevelEdit property alias modemDMRTXLevelEdit: _modemDMRTXLevelEdit property alias modemYSFTXLevelEdit: _modemYSFTXLevelEdit property alias modemP25TXLevelEdit: _modemP25TXLevelEdit property alias modemNXDNTXLevelEdit: _modemNXDNTXLevelEdit property alias modemBaudEdit: _modemBaudEdit property alias mmdvmBox: _mmdvmBox property alias debugBox: _debugBox Flickable { id: flickable anchors.fill: parent contentWidth: parent.width contentHeight: _debugBox.y + _debugBox.height + 10 flickableDirection: Flickable.VerticalFlick clip: true ScrollBar.vertical: ScrollBar {} Text { id: vocoderLabel x: 10 y: 0 width: 80 height: 25 text: qsTr("Vocoder") color: "white" verticalAlignment: Text.AlignVCenter } ComboBox { id: _comboVocoder x: 100 y: vocoderLabel.y width: parent.width - 110 height: 30 } Text { id: modemLabel x: 10 y: 30 width: 80 height: 25 text: qsTr("Modem") color: "white" verticalAlignment: Text.AlignVCenter } ComboBox { id: _comboModem x: 100 y: modemLabel.y width: parent.width - 110 height: 30 } Text { id: playbackLabel x: 10 y: 60 width: 80 height: 25 text: qsTr("Playback") color: "white" verticalAlignment: Text.AlignVCenter } ComboBox { id: _comboPlayback x: 100 y: playbackLabel.y width: parent.width - 110 height: 30 } Text { id: captureLabel x: 10 y: 90 width: 80 height: 25 text: qsTr("Capture") color: "white" verticalAlignment: Text.AlignVCenter } ComboBox { id: _comboCapture x: 100 y: captureLabel.y width: parent.width - 110 height: 30 } Text { id: csLabel x: 10 y: 120 width: 80 height: 25 text: qsTr("Callsign") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: csedit x: 100 y: csLabel.y width: 125 height: 25 text: qsTr("") font.capitalization: Font.AllUppercase selectByMouse: true } Text { id: dmridLabel x: 10 y: 150 width: 80 height: 25 text: qsTr("DMRID") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: dmridedit x: 100 y: dmridLabel.y width: 125 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: essidLabel x: 10 y: 180 width: 80 height: 25 text: qsTr("ESSID") color: "white" verticalAlignment: Text.AlignVCenter } ComboBox { id: comboessid x: 100 y: essidLabel.y width: 80 height: 30 function build_model(){ console.log("build_model() called"); var ids = ["None"]; for(var i = 0; i < 100; ++i){ ids[i+1] = i.toString().padStart(2, "0"); } comboessid.model = ids; comboessid.currentIndex = comboessid.find(droidstar.get_essid()); } Component.onCompleted: build_model(); onCurrentTextChanged: { //console.log("set essid called"); //droidstar.set_essid(comboessid.currentText); } } Text { id: bmpwLabel x: 10 y: 210 width: 80 height: 25 text: qsTr("BM Pass") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: bmpwedit x: 100 y: bmpwLabel.y width: parent.width - 110 height: 25 selectByMouse: true echoMode: TextInput.Password } Text { id: tgifpwLabel x: 10 y: 240 width: 80 height: 25 text: qsTr("TGIF Pass") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: tgifpwedit x: 100 y: tgifpwLabel.y width: parent.width - 110 height: 25 selectByMouse: true echoMode: TextInput.Password } Text { id: latLabel x: 10 y: 270 width: 80 height: 25 text: qsTr("Latitude") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: latedit x: 100 y: latLabel.y width: 125 height: 25 selectByMouse: true } Text { id: lonLabel x: 10 y: 300 width: 80 height: 25 text: qsTr("Longitude") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: lonedit x: 100 y: lonLabel.y width: 125 height: 25 selectByMouse: true } Text { id: locLabel x: 10 y: 330 width: 80 height: 25 text: qsTr("Location") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: locedit x: 100 y: locLabel.y width: 125 height: 25 selectByMouse: true } Text { id: descLabel x: 10 y: 360 width: 80 height: 25 text: qsTr("Description") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: descedit x: 100 y: descLabel.y width: 125 height: 25 selectByMouse: true } Text { id: urlLabel x: 10 y: 390 width: 80 height: 25 text: qsTr("URL") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: urledit x: 100 y: urlLabel.y width: 125 height: 25 selectByMouse: true } Text { id: swidLabel x: 10 y: 420 width: 80 height: 25 text: qsTr("SoftwareID") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: swidedit x: 100 y: swidLabel.y width: 125 height: 25 selectByMouse: true } Text { id: pkgidLabel x: 10 y: 450 width: 80 height: 25 text: qsTr("PackageID") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: pkgidedit x: 100 y: pkgidLabel.y width: parent.width - 110 height: 25 selectByMouse: true } Text { id: dmroptslabel x: 10 y: 480 width: 80 height: 25 text: qsTr("DMR+ Opts") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: dmroptsedit x: 100 y: dmroptslabel.y width: parent.width - 110 height: 25 selectByMouse: true } Text { id: mycallLabel x: 10 y: 660 width: 80 height: 25 text: qsTr("MYCALL") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: mycalledit x: 100 y: mycallLabel.y width: 125 height: 25 selectByMouse: true font.capitalization: Font.AllUppercase onEditingFinished: { droidstar.set_mycall(mycalledit.text.toUpperCase()) } } Text { id: urcallLabel x: 10 y: 690 width: 80 height: 25 text: qsTr("URCALL") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: urcalledit x: 100 y: urcallLabel.y width: 125 height: 25 selectByMouse: true font.capitalization: Font.AllUppercase onEditingFinished: { droidstar.set_urcall(urcalledit.text.toUpperCase()) } } Text { id: rptr1Label x: 10 y: 720 width: 80 height: 25 text: qsTr("RPTR1") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: rptr1edit x: 100 y: rptr1Label.y width: 125 height: 25 selectByMouse: true font.capitalization: Font.AllUppercase onEditingFinished: { droidstar.set_rptr1(rptr1edit.text.toUpperCase()) } } Text { id: rptr2Label x: 10 y: 750 width: 80 height: 25 text: qsTr("RPTR2") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: rptr2edit x: 100 y: rptr2Label.y width: 125 height: 25 selectByMouse: true font.capitalization: Font.AllUppercase onEditingFinished: { droidstar.set_rptr2(rptr2edit.text.toUpperCase()) } } Text { id: usrtxtLabel x: 10 y: 780 width: 80 height: 25 text: qsTr("USRTXT") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: usrtxtedit x: 100 y: usrtxtLabel.y width: parent.width - 110 height: 25 selectByMouse: true onEditingFinished: { droidstar.set_usrtxt(usrtxtedit.text) } } Text { id: txtimerLabel x: 10 y: 810 width: 80 height: 25 text: qsTr("TX Timeout") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: txtimeredit x: 100 y: txtimerLabel.y width: 125 height: 25 selectByMouse: true } Text { id: m17rateLabel x: 10 y: 840 width: 100 height: 25 text: qsTr("M17/YSF rate") color: "white" verticalAlignment: Text.AlignVCenter } ButtonGroup { id: m17rateGroup onClicked: { button.text == "Voice Full" ? droidstar.m17_rate_changed(true) : droidstar.m17_rate_changed(false) } } CheckBox { id: m17_3200 x: 120 y: m17rateLabel.y //width: 100 height: 25 spacing: 1 text: qsTr("Voice Full") checked: true ButtonGroup.group: m17rateGroup } CheckBox { id: m17_1600 x: 220 y: m17rateLabel.y //width: 100 height: 25 spacing: 1 text: qsTr("Voice/Data") ButtonGroup.group: m17rateGroup } Button { id: updatehostsButton x: 10 y: 870 width: 150 height: 30 text: qsTr("Update hosts") onClicked: { droidstar.update_host_files() updateDialog.open() } } Button { id: updatedmridsButton x: 170 y: updatehostsButton.y width: 150 height: 30 text: qsTr("Update ID files") onClicked: { droidstar.update_dmr_ids() updateDialog.open() } } CheckBox { id: toggletx x: 10 y: 900 //width: 100 height: 25 spacing: 1 text: qsTr("Enable TX toggle mode") onClicked:{ droidstar.set_toggletx(toggleTX.checked); } } CheckBox { id: xrf2Ref x: 10 y: 930 //width: 100 height: 25 spacing: 1 text: qsTr("Use REF for XRF") } CheckBox { id: ipV6 x: 10 y: 960 //width: 100 height: 25 spacing: 1 text: qsTr("Use IPv6 when available") } Text { id: _vocoderURLlabel x: 10 y: 990 width: 80 height: 25 text: qsTr("Vocoder URL") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _vocoderURLEdit x: 100 y: _vocoderURLlabel.y width: parent.width - 110 height: 25 selectByMouse: true } Button { id: vocoderButton x: 10 y: 1020 width: 150 height: 30 text: qsTr("Download vocoder") onClicked: { droidstar.download_file(_vocoderURLEdit.text, true); updateDialog.open(); } } Text { id: _modemRXFreqLabel x: 10 y: 1090 width: 60 height: 25 text: qsTr("RX Freq") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemRXFreqEdit x: _modemRXFreqLabel.width+20 y: _modemRXFreqLabel.y width: 100 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemTXFreqLabel x: _modemRXFreqEdit.x + _modemRXFreqEdit.width + 10 y: _modemRXFreqLabel.y width: 60 height: 25 text: qsTr("TX Freq") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemTXFreqEdit x: _modemTXFreqLabel.x + _modemTXFreqLabel.width y: _modemRXFreqLabel.y width: 100 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemRXOffsetLabel x: 10 y: 1120 width: 100 height: 25 text: qsTr("RX Offset") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemRXOffsetEdit x: _modemRXOffsetLabel.x + _modemRXOffsetLabel.width y: _modemRXOffsetLabel.y width: 60 height: 25 selectByMouse: true //inputMethodHints: "ImhPreferNumbers" } Text { id: _modemTXOffsetLabel x: _modemRXOffsetEdit.x + _modemRXOffsetEdit.width + 10 y: _modemRXOffsetLabel.y width: 100 height: 25 text: qsTr("TX Offset") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemTXOffsetEdit x: _modemTXOffsetLabel.x + _modemTXOffsetLabel.width y: _modemRXOffsetLabel.y width: 60 height: 25 selectByMouse: true //inputMethodHints: "ImhPreferNumbers" } Text { id: _modemRXLevelLabel x: 10 y: 1150 width: 100 height: 25 text: qsTr("RX Level") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemRXLevelEdit x: _modemRXLevelLabel.x + _modemRXLevelLabel.width y: _modemRXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemTXLevelLabel x: _modemRXLevelEdit.x + _modemRXLevelEdit.width + 10 y: _modemRXLevelLabel.y width: 100 height: 25 text: qsTr("TX Level") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemTXLevelEdit x: _modemTXLevelLabel.x + _modemTXLevelLabel.width y: _modemRXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemRXDCOffsetLabel x: 10 y: 1180 width: 100 height: 25 text: qsTr("RX DC Offset") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemRXDCOffsetEdit x: _modemRXDCOffsetLabel.x + _modemRXDCOffsetLabel.width y: _modemRXDCOffsetLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemTXDCOffsetLabel x: _modemRXDCOffsetEdit.x + _modemRXDCOffsetEdit.width + 10 y: _modemRXDCOffsetLabel.y width: 100 height: 25 text: qsTr("TX DC Offset") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemTXDCOffsetEdit x: _modemTXDCOffsetLabel.x + _modemTXDCOffsetLabel.width y: _modemRXDCOffsetLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemRFLevelLabel x: 10 y: 1210 width: 100 height: 25 text: qsTr("RF Level") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemRFLevelEdit x: _modemRFLevelLabel.x + _modemRFLevelLabel.width y: _modemRFLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemTXDelayLabel x: _modemRFLevelEdit.x + _modemRFLevelEdit.width + 10 y: _modemRFLevelLabel.y width: 100 height: 25 text: qsTr("TX Delay") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemTXDelayEdit x: _modemTXDelayLabel.x + _modemTXDelayLabel.width y: _modemRFLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemCWIdTXLevelLabel x: 10 y: 1240 width: 100 height: 25 text: qsTr("CWIdTXLevel") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemCWIdTXLevelEdit x: _modemCWIdTXLevelLabel.x + _modemCWIdTXLevelLabel.width y: _modemCWIdTXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemDStarTXLevelLabel x: _modemCWIdTXLevelEdit.x + _modemCWIdTXLevelEdit.width + 10 y: _modemCWIdTXLevelLabel.y width: 100 height: 25 text: qsTr("DStarTXLevel") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemDStarTXLevelEdit x: _modemDStarTXLevelLabel.x + _modemDStarTXLevelLabel.width y: _modemCWIdTXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemDMRTXLevelLabel x: 10 y: 1270 width: 100 height: 25 text: qsTr("DMRTXLevel") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemDMRTXLevelEdit x: _modemDMRTXLevelLabel.x + _modemDMRTXLevelLabel.width y: _modemDMRTXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemYSFTXLevelLabel x: _modemDMRTXLevelEdit.x + _modemDMRTXLevelEdit.width + 10 y: _modemDMRTXLevelLabel.y width: 100 height: 25 text: qsTr("YSFTXLevel") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemYSFTXLevelEdit x: _modemYSFTXLevelLabel.x + _modemYSFTXLevelLabel.width y: _modemDMRTXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemP25TXLevelLabel x: 10 y: 1300 width: 100 height: 25 text: qsTr("P25TXLevel") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemP25TXLevelEdit x: _modemP25TXLevelLabel.x + _modemP25TXLevelLabel.width y: _modemP25TXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemNXDNTXLevelLabel x: _modemP25TXLevelEdit.x + _modemP25TXLevelEdit.width + 10 y: _modemP25TXLevelLabel.y width: 100 height: 25 text: qsTr("NXDNTXLevel") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemNXDNTXLevelEdit x: _modemNXDNTXLevelLabel.x + _modemNXDNTXLevelLabel.width y: _modemP25TXLevelLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } Text { id: _modemBaudLabel x: 10 y: 1330 width: 100 height: 25 text: qsTr("Baud") color: "white" verticalAlignment: Text.AlignVCenter } TextField { id: _modemBaudEdit x: _modemBaudLabel.x + _modemBaudLabel.width y: _modemBaudLabel.y width: 60 height: 25 selectByMouse: true inputMethodHints: "ImhPreferNumbers" } CheckBox { id: _mmdvmBox x: 10 y: 1360 width: parent.width height: 25 text: qsTr("MMDVM_DIRECT") onClicked:{ droidstar.set_mmdvm_direct(_mmdvmBox.checked) } } CheckBox { id: _debugBox x: 10 y: 1390 width: parent.width height: 25 text: qsTr("Debug output to stderr") onClicked:{ droidstar.set_debug(_debugBox.checked) } } } }