lqml/examples/meshtastic/lisp/group.lisp
2023-09-02 12:15:39 +02:00

48 lines
1.4 KiB
Common Lisp

(in-package :group)
(defun ini ()
(q> |model| ui:*modem*
(mapcar (lambda (kw) (string-downcase (symbol-name kw)))
(lora:keywords :modem-preset)))
(x:when-it (app:setting :modem-preset)
(q> |currentIndex| ui:*modem*
(q! |indexOfValue| ui:*modem*
(string-downcase (symbol-name x:it))))))
(defun add-person (person)
"Adds passed PERSON (a PLIST) to QML item model.
The model keys are:
:radio-name :custom-name :node-num :unread :current"
(qjs |addPerson| ui:*group* person))
(defun clear ()
(setf lora:*schedule-clear* nil)
(q! |clear| ui:*group*))
(defun radio-names ()
(qjs |radioNames| ui:*group*))
(defun name-edited (radio name) ; see QML
(app:change-setting radio (if (string= (tr "Anonym") name) "" name)
:sub-key :custom-name)
(values))
(defun set-unread-state (state)
(q> |visible| ui:*unread-messages* state))
(defun set-unread (name n)
(qjs |setUnread| ui:*group*
name n)
(when (plusp n)
(set-unread-state t)))
(defun receiver-changed ()
(let ((curr-name (app:setting :latest-receiver)))
(app:change-setting curr-name 0 :sub-key :unread-messages)
(set-unread curr-name 0)
(dolist (name (radio-names))
(x:when-it (app:setting name :unread-messages)
(unless (zerop x:it)
(return-from receiver-changed))))
(set-unread-state nil)))