add ui:editDialog

This commit is contained in:
Evgeny
2021-07-30 18:51:37 +03:00
parent 56911fe1a4
commit 46407b5e78
3 changed files with 45 additions and 5 deletions

View File

@@ -15,12 +15,13 @@
* `ui:showProgressBar(text, currentValue, maxValue)` - показывает прогресс бар; * `ui:showProgressBar(text, currentValue, maxValue)` - показывает прогресс бар;
* `ui:showToast(string)` - показывает информационное сообщение в стиле Android; * `ui:showToast(string)` - показывает информационное сообщение в стиле Android;
* `ui:showDialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки; * `ui:showDialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки;
* `ui:showEditDialog(string, [string], [string]) - показать диалог с полем ввода: 1 - заголовок, 2 - подпись, 3 - стандартное значения поля ввода;
* `ui:getPrimaryTextColor()` - возвращает цвет текста темы в формате #XXXXXX; * `ui:getPrimaryTextColor()` - возвращает цвет текста темы в формате #XXXXXX;
* `ui:getSecondaryTextColor()` - возвращает цвет вторичного текста (обычно серый) в формате #XXXXXX; * `ui:getSecondaryTextColor()` - возвращает цвет вторичного текста (обычно серый) в формате #XXXXXX;
При нажатии на любой элемент интерфейса будет выполнен колбек `onClick(number)`, где number - это порядковый номер элемента. Например, если вы используете `ui:showButtons` для показа трех кнопок, то при нажатии первой кнопки будет вызван `onClick` с аргументом 1, второй - с аргументов 2, и так далее. Если элемент на экране всего один - аргумент всегда будет равен единице и его можно будет опустить. При нажатии на любой элемент интерфейса будет выполнен колбек `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. Например: Функции `ui:showText(string)` и `ui:showLines(string)` поддерживают многие теги HTML. Например:
@@ -39,6 +40,8 @@ First line<br/>Second line
* `system:su(string)` - выполняет shell-команду от имени root; * `system:su(string)` - выполняет shell-команду от имени root;
* `system:getLocation()` - возвращает местоположение в таблице с двумя значениями (запрос местоположения НЕ выполняется, используется значение, сохраненное системой ранее). * `system:getLocation()` - возвращает местоположение в таблице с двумя значениями (запрос местоположения НЕ выполняется, используется значение, сохраненное системой ранее).
Результат выполнения shell-команды приходит в колбек `onShellResult(string)`.
# Функции управления лаунчером # Функции управления лаунчером
* `aio:doAction(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html)); * `aio:doAction(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html));

View File

@@ -1,5 +1,9 @@
function onResume() 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 end
function onClick(idx) function onClick(idx)
@@ -7,13 +11,17 @@ function onClick(idx)
ui:showDialog("Dialog title", "This is dialog") ui:showDialog("Dialog title", "This is dialog")
elseif idx == 2 then elseif idx == 2 then
ui:showDialog("Dialog title", "This is dialog", "Button 1", "Button 2") 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
end end
function onDialogClick(idx) function onDialogAction(value)
if idx == 1 then if value == 1 then
ui:showToast("Button 1 clicked!") ui:showToast("Button 1 clicked!")
elseif idx == 2 then elseif value == 2 then
ui:showToast("Button 2 clicked!") ui:showToast("Button 2 clicked!")
elseif type(value) == "string" then
ui:showToast("Text: "..value)
end end
end end

29
shell-widget.lua Normal file
View File

@@ -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