example 'meshtastic': make device name filter editable

This commit is contained in:
pls.153 2024-01-18 16:19:38 +01:00
parent 7350289076
commit 7cf29c2c8c
6 changed files with 27 additions and 5 deletions

View file

@ -20,7 +20,7 @@ public:
QLowEnergyCharacteristic fromNum; QLowEnergyCharacteristic fromNum;
QLowEnergyCharacteristic toRadio; QLowEnergyCharacteristic toRadio;
QString nameFilter = QStringLiteral("meshtastic"); QString nameFilter = "meshtastic";
QLowEnergyDescriptor notifications; QLowEnergyDescriptor notifications;
bool deviceFilter(const QBluetoothDeviceInfo&) override; bool deviceFilter(const QBluetoothDeviceInfo&) override;

View file

@ -48,6 +48,7 @@ QVariant QT::startDeviceDiscovery(const QVariant& vName) {
QVariant QT::setDeviceFilter(const QVariant& vName) { QVariant QT::setDeviceFilter(const QVariant& vName) {
ble->nameFilter = vName.toString(); ble->nameFilter = vName.toString();
return vName;
} }
QVariant QT::shortNames() { QVariant QT::shortNames() {

View file

@ -419,6 +419,18 @@
(app:change-setting :channel-name name) (app:change-setting :channel-name name)
(config-device))))) (config-device)))))
(defun edit-device-filter () ; see QML
(app:input-dialog
(tr "Device filter:") 'device-filter-changed
:title (tr "Filter")
:text (or (app:setting :device-filter) "meshtastic")))
(defun device-filter-changed (ok)
(when ok
(let ((name (q< |text| ui:*dialog-line-edit*)))
(qt:set-device-filter qt:*cpp* name)
(app:change-setting :device-filter name))))
(defun keywords (name) (defun keywords (name)
(pr:enum-keywords (ecase name (pr:enum-keywords (ecase name
(:modem-preset (:modem-preset

View file

@ -51,6 +51,7 @@
#:change-modem-preset #:change-modem-preset
#:channel-to-url #:channel-to-url
#:edit-channel-name #:edit-channel-name
#:edit-device-filter
#:get-node-config #:get-node-config
#:ini #:ini
#:keywords #:keywords

View file

@ -8,7 +8,9 @@
(x:when-it (app:setting :region) (x:when-it (app:setting :region)
(q> |currentIndex| ui:*region* (q> |currentIndex| ui:*region*
(q! |indexOfValue| ui:*region* (q! |indexOfValue| ui:*region*
(symbol-name x:it))))) (symbol-name x:it))))
(x:when-it (app:setting :device-filter)
(qt:set-device-filter qt:*cpp* x:it)))
(defun device-discovered (name) (defun device-discovered (name)
"Show discovered (cached) device, which may not be reachable / turned on." "Show discovered (cached) device, which may not be reachable / turned on."

View file

@ -39,6 +39,12 @@ Item {
enabled: (view.currentIndex === 0) enabled: (view.currentIndex === 0)
} }
Ext.MenuItem {
text: qsTr("Update group/nodes")
onTriggered: Lisp.call("lora:get-node-config")
enabled: (view.currentIndex === 0)
}
Ext.MenuItem { Ext.MenuItem {
text: qsTr("Message font size...") text: qsTr("Message font size...")
onTriggered: Lisp.call("msg:font-size-dialog") onTriggered: Lisp.call("msg:font-size-dialog")
@ -46,9 +52,9 @@ Item {
} }
Ext.MenuItem { Ext.MenuItem {
text: qsTr("Update group/nodes") text: qsTr("Device filter...")
onTriggered: Lisp.call("lora:get-node-config") onTriggered: Lisp.call("lora:edit-device-filter")
enabled: (view.currentIndex === 0) enabled: (view.currentIndex === 2)
} }
Ext.MenuItem { Ext.MenuItem {