From 46407b5e78dd270aae1d4eeff6721b748947a159 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Fri, 30 Jul 2021 18:51:37 +0300 Subject: [PATCH] add ui:editDialog --- README_ru.md | 5 ++++- dialog_sample.lua | 16 ++++++++++++---- shell-widget.lua | 29 +++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 shell-widget.lua diff --git a/README_ru.md b/README_ru.md index e7cdf24..cf90a15 100644 --- a/README_ru.md +++ b/README_ru.md @@ -15,12 +15,13 @@ * `ui:showProgressBar(text, currentValue, maxValue)` - показывает прогресс бар; * `ui:showToast(string)` - показывает информационное сообщение в стиле Android; * `ui:showDialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки; +* `ui:showEditDialog(string, [string], [string]) - показать диалог с полем ввода: 1 - заголовок, 2 - подпись, 3 - стандартное значения поля ввода; * `ui:getPrimaryTextColor()` - возвращает цвет текста темы в формате #XXXXXX; * `ui:getSecondaryTextColor()` - возвращает цвет вторичного текста (обычно серый) в формате #XXXXXX; При нажатии на любой элемент интерфейса будет выполнен колбек `onClick(number)`, где number - это порядковый номер элемента. Например, если вы используете `ui:showButtons` для показа трех кнопок, то при нажатии первой кнопки будет вызван `onClick` с аргументом 1, второй - с аргументов 2, и так далее. Если элемент на экране всего один - аргумент всегда будет равен единице и его можно будет опустить. -Нажатия на кнопки диалога должны обрабатываться в колбеке `onDialogClick(number)`, где 1 - это первая кнопка, 2 - вторая, а -1 - нажатие кнопки "закрыть", если никакие кнопки не были указаны. +Нажатия на кнопки диалога должны обрабатываться в колбеке `onDialogAction(number)`, где 1 - это первая кнопка, 2 - вторая, а -1 - нажатие кнопки "закрыть", если никакие кнопки не были указаны. `ui:editDialog()` возвращает текст в колбек `onDialogAction(text)`. Функции `ui:showText(string)` и `ui:showLines(string)` поддерживают многие теги HTML. Например: @@ -39,6 +40,8 @@ First line
Second line * `system:su(string)` - выполняет shell-команду от имени root; * `system:getLocation()` - возвращает местоположение в таблице с двумя значениями (запрос местоположения НЕ выполняется, используется значение, сохраненное системой ранее). +Результат выполнения shell-команды приходит в колбек `onShellResult(string)`. + # Функции управления лаунчером * `aio:doAction(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html)); diff --git a/dialog_sample.lua b/dialog_sample.lua index eacf077..3fc4468 100644 --- a/dialog_sample.lua +++ b/dialog_sample.lua @@ -1,5 +1,9 @@ function onResume() - ui:showLines({ "Click to open dialog", "Click to open dialog with custom buttons" }) + ui:showLines({ + "Click to open dialog", + "Click to open dialog with custom buttons", + "Click to open edit dialog", + }) end function onClick(idx) @@ -7,13 +11,17 @@ function onClick(idx) ui:showDialog("Dialog title", "This is dialog") elseif idx == 2 then ui:showDialog("Dialog title", "This is dialog", "Button 1", "Button 2") + elseif idx == 3 then + ui:showEditDialog("Dialog title", "Write any text", "default text") end end -function onDialogClick(idx) - if idx == 1 then +function onDialogAction(value) + if value == 1 then ui:showToast("Button 1 clicked!") - elseif idx == 2 then + elseif value == 2 then ui:showToast("Button 2 clicked!") + elseif type(value) == "string" then + ui:showToast("Text: "..value) end end diff --git a/shell-widget.lua b/shell-widget.lua new file mode 100644 index 0000000..50c3b30 --- /dev/null +++ b/shell-widget.lua @@ -0,0 +1,29 @@ +-- name = "Shell widget" +-- description = "Shows the result of executing console commands" +-- type = "widget" +-- author = "Evgeny Zobnin (zobnin@gmail.com)" +-- version = "1.0" + +currentOutput = "empty" + +function onResume() + redraw() +end + +function redraw() + ui:showText(currentOutput) +end + +function onClick(idx) + ui:showEditDialog("Enter command") +end + +function onDialogAction(text) + system:exec(text) +end + +function onShellResult(text) + currentOutput = text + redraw() +end +