Use a more familiar lua snake_hour
This commit is contained in:
79
README_ru.md
79
README_ru.md
@@ -1,28 +1,28 @@
|
||||
# Функции (колбеки) жизненного цикла
|
||||
|
||||
* `onResume()` - вызывается при каждом возврате на рабочий стол;
|
||||
* `onAlarm()` - вызывается при возврате на рабочий стол при условии, что с прошлого вызова прошло больше 30 минут;
|
||||
* `onTick()` - вызывается каждую секунду пока лаунчер находится на экране.
|
||||
* `on_resume()` - вызывается при каждом возврате на рабочий стол;
|
||||
* `on_alarm()` - вызывается при возврате на рабочий стол при условии, что с прошлого вызова прошло больше 30 минут;
|
||||
* `on_tick()` - вызывается каждую секунду пока лаунчер находится на экране.
|
||||
|
||||
Для большинства сетевых скриптов (загрузка и показ значений) следует использовать `onAlarm`. Использование других функций может привести к блокировке вашего IP.
|
||||
|
||||
# Функции показа данных
|
||||
|
||||
* `ui:showText(string)` - выводит в виджет обычный текст; повторный вызов стирает предыдущий текст;
|
||||
* `ui:showLines(table, [table])` - выводит список строк с отправителем (на манер почтового виджета), второй аргумент (необязательный) - соответствующие им отправители (форматирование в стиле почтового виджета);
|
||||
* `ui:showButtons(table, [table])` - выводит список кнопок, первый аргумент - таблица строк, второй опциональный аргумент, таблица цветов в формате #XXXXXX;
|
||||
* `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;
|
||||
* `ui:show_text(string)` - выводит в виджет обычный текст; повторный вызов стирает предыдущий текст;
|
||||
* `ui:show_lines(table, [table])` - выводит список строк с отправителем (на манер почтового виджета), второй аргумент (необязательный) - соответствующие им отправители (форматирование в стиле почтового виджета);
|
||||
* `ui:show_buttons(table, [table])` - выводит список кнопок, первый аргумент - таблица строк, второй опциональный аргумент, таблица цветов в формате #XXXXXX;
|
||||
* `ui:show_progress_bar(text, current_value, max_value)` - показывает прогресс бар;
|
||||
* `ui:show_toast(string)` - показывает информационное сообщение в стиле Android;
|
||||
* `ui:show_dialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки;
|
||||
* `ui:show_edit_dialog(string, [string], [string])` - показать диалог с полем ввода: 1 - заголовок, 2 - подпись, 3 - стандартное значения поля ввода;
|
||||
* `ui:get_primary_text_color()` - возвращает цвет текста темы в формате #XXXXXX;
|
||||
* `ui:get_secondary_text_color()` - возвращает цвет вторичного текста (обычно серый) в формате #XXXXXX;
|
||||
|
||||
При нажатии на любой элемент интерфейса будет выполнен колбек `onClick(number)`, где number - это порядковый номер элемента. Например, если вы используете `ui:showButtons` для показа трех кнопок, то при нажатии первой кнопки будет вызван `onClick` с аргументом 1, второй - с аргументов 2, и так далее. Если элемент на экране всего один - аргумент всегда будет равен единице и его можно будет опустить.
|
||||
При нажатии на любой элемент интерфейса будет выполнен колбек `on_click(number)`, где number - это порядковый номер элемента. Например, если вы используете `ui:show_buttons` для показа трех кнопок, то при нажатии первой кнопки будет вызван `on_click` с аргументом 1, второй - с аргументов 2, и так далее. Если элемент на экране всего один - аргумент всегда будет равен единице и его можно будет опустить.
|
||||
|
||||
Нажатия на кнопки диалога должны обрабатываться в колбеке `onDialogAction(number)`, где 1 - это первая кнопка, 2 - вторая, а -1 - нажатие кнопки "закрыть", если никакие кнопки не были указаны. `ui:editDialog()` возвращает текст в колбек `onDialogAction(text)`.
|
||||
Нажатия на кнопки диалога должны обрабатываться в колбеке `on_dialog_dction(number)`, где 1 - это первая кнопка, 2 - вторая, а -1 - нажатие кнопки "закрыть", если никакие кнопки не были указаны. `ui:edit_dialog()` возвращает текст в колбек `onDialogAction(text)`.
|
||||
|
||||
Функции `ui:showText(string)` и `ui:showLines(string)` поддерживают многие теги HTML. Например:
|
||||
Функции `ui:show_text(string)` и `ui:show_lines(string)` поддерживают многие теги HTML. Например:
|
||||
|
||||
```
|
||||
First line<br/>Second line
|
||||
@@ -33,33 +33,34 @@ First line<br/>Second line
|
||||
|
||||
# Системные функции
|
||||
|
||||
* `system:openApp(string)` - открывает приложение, имя пакета которого указано в аргументе;
|
||||
* `system:openBrowser(string)` - открывает указанный URL в браузере или в приложении, умеющем обрабатывать данный тип URL;
|
||||
* `system:open_app(string)` - открывает приложение, имя пакета которого указано в аргументе;
|
||||
* `system:open_browser(string)` - открывает указанный URL в браузере или в приложении, умеющем обрабатывать данный тип URL;
|
||||
* `system:exec(string)` - выполняет shell-команду;
|
||||
* `system:su(string)` - выполняет shell-команду от имени root;
|
||||
* `system:getLocation()` - возвращает местоположение в таблице с двумя значениями (запрос местоположения НЕ выполняется, используется значение, сохраненное системой ранее).
|
||||
* `system:get_location()` - возвращает местоположение в таблице с двумя значениями (запрос местоположения НЕ выполняется, используется значение, сохраненное системой ранее);
|
||||
* `system:get_tz()` - возвращает текущую временную зону в формате `Europe/Moscow`;
|
||||
|
||||
Результат выполнения shell-команды приходит в колбек `onShellResult(string)`.
|
||||
Результат выполнения shell-команды приходит в колбек `on_shell_result(string)`.
|
||||
|
||||
# Функции управления лаунчером
|
||||
|
||||
* `aio:doAction(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html));
|
||||
* `aio:addWidget(string)` - добавляет на экран встроенный виджет, виджет-скрипт или клон существующего виджета;
|
||||
* `aio:removeWidget(string)` - удаляет с экрана встроенный виджет или виджет-скрипт (внимание: доп. виджеты тоже будут удалены);
|
||||
* `aio:isWidgetAdded(string)` - проверяет, добавлен ли виджет на экран;
|
||||
* `aio:getArgs()` - возвращает таблицу аргументов, которые пользователь указал нажав на иконку настроек в режиме редактирования виджета;
|
||||
* `aio:do_action(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html));
|
||||
* `aio:add_widget(string)` - добавляет на экран встроенный виджет, виджет-скрипт или клон существующего виджета;
|
||||
* `aio:remove_widget(string)` - удаляет с экрана встроенный виджет или виджет-скрипт (внимание: доп. виджеты тоже будут удалены);
|
||||
* `aio:isWidget_added(string)` - проверяет, добавлен ли виджет на экран;
|
||||
* `aio:get_args()` - возвращает таблицу аргументов, которые пользователь указал нажав на иконку настроек в режиме редактирования виджета;
|
||||
|
||||
Если в метаданных виджета есть поле `argumentsArgs`, его значение будет выведено при редактировании аргументов виджета. Если есть поле `argumentsDefault` - оно будет использовано для получения дефолтовых аргументов.
|
||||
Если в метаданных виджета есть поле `arguments_help`, его значение будет выведено при редактировании аргументов виджета. Если есть поле `arguments_default` - оно будет использовано для получения дефолтовых аргументов.
|
||||
|
||||
# Сетевые функции
|
||||
|
||||
* `net:getText(url)` - функция для получения текстовых данных по сети (JSON, XML, plain text).
|
||||
* `net:get_text(url)` - функция для получения текстовых данных по сети (JSON, XML, plain text).
|
||||
|
||||
Функция не возвращает никакого значения, а вместо этого вызывает колбек `onNetworkResult(string)`. В нем следует обрабатывать результат.
|
||||
|
||||
# Функции обработки данных
|
||||
|
||||
* `json:getValue(string, string)` - получает указанное значение из JSON; первый аргумент - JSON-строка, второй - инструкция для получения значения.
|
||||
* `ajson:get_value(string, string)` - получает указанное значение из JSON; первый аргумент - JSON-строка, второй - инструкция для получения значения.
|
||||
|
||||
В отличие от классических парзеров JSON, эта функция предназначена не для парзинга, а именно для извлечения одиночных значений. Например, есть следующий JSON:
|
||||
|
||||
@@ -77,19 +78,19 @@ First line<br/>Second line
|
||||
Необходимо извлечь из него строку "joke". По тексту JSON видно, что эта строка содержится внутри объекта "value", а сам этот объект находится внутри основного объекта JSON. Другими словами чтобы извлечь нужную строку необходимо "открыть" основной объект JSON, затем "открыть" объект "value" и найти в нем строку "joke". В коде это будет выглядеть так:
|
||||
|
||||
```
|
||||
joke = json:getValue(result, "object object:value string:joke")
|
||||
joke = ajson:get_value(result, "object object:value string:joke")
|
||||
```
|
||||
|
||||
При этом полный текст скрипта может выглядеть так:
|
||||
|
||||
```
|
||||
function onAlarm()
|
||||
net:getText("http://api.icndb.com/jokes/random")
|
||||
function on_alarm()
|
||||
net:get_text("http://api.icndb.com/jokes/random")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local joke = json:getValue(result, "object object:value string:joke")
|
||||
aio:showText(joke)
|
||||
function on_network_result(result)
|
||||
local joke = ajson:get_value(result, "object object:value string:joke")
|
||||
aio:show_text(joke)
|
||||
end
|
||||
```
|
||||
|
||||
@@ -105,7 +106,13 @@ end
|
||||
|
||||
AIO Launcher включает в себя интерпретатор LuaJ 3.0.1 (совместимый с Lua 5.2) со стандартным набором библиотек: `base`, `bit32`, `coroutine`, `io`, `math`, `os`, `package`, `string table`.
|
||||
|
||||
В комплект также входят библиотека [LuaJava](https://github.com/luaj/luaj#the-luajava-library) для прямого вызова методов Java, и библиотека [Penlight](http://stevedonovan.github.io/Penlight/api/manual/01-introduction.md.html) с набором портированных из Python функций и структур данных.
|
||||
В комплект также входят:
|
||||
|
||||
* [LuaJava](https://github.com/luaj/luaj#the-luajava-library) - прямой вызов методов Java;
|
||||
* [Penlight](http://stevedonovan.github.io/Penlight/api/manual/01-introduction.md.html) - набор портированных из Python функций и структур данных;
|
||||
* [luatz](https://github.com/daurnimator/luatz) - функции для работы со временем;
|
||||
* [json.lua](https://github.com/rxi/json.lua) - парзер JSON;
|
||||
* [SLAXDOM](https://github.com/Phrogz/SLAXML) - парзер XML.
|
||||
|
||||
# Метаданные
|
||||
|
||||
@@ -114,8 +121,8 @@ AIO Launcher включает в себя интерпретатор LuaJ 3.0.1
|
||||
```
|
||||
-- name = "Covid info"
|
||||
-- description = "Cases of illness and death from covid (covid19api.com)"
|
||||
-- argumentsHelp = "Specify the country code"
|
||||
-- argumentsDefault = "RU"
|
||||
-- arguments_help = "Specify the country code"
|
||||
-- arguments_default = "RU"
|
||||
-- type = "widget"
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
12
actions-widget.lua
Normal file
12
actions-widget.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
-- name = "Actions"
|
||||
|
||||
function on_resume()
|
||||
actions_names = { "Drawer", "Search" }
|
||||
actions = { "apps_menu", "search" }
|
||||
|
||||
ui:show_buttons(actions_names)
|
||||
end
|
||||
|
||||
function on_click(idx)
|
||||
aio:do_action(actions[idx])
|
||||
end
|
||||
@@ -1,11 +1,11 @@
|
||||
function onResume()
|
||||
appsNames = { "Telegram", "WhatsApp", "Google PLay" }
|
||||
appsPkgs = { "org.telegram.messenger.web", "com.whatsapp", "com.android.vending" }
|
||||
appsColors = { "#0000ff", "#00ff00" }
|
||||
function on_resume()
|
||||
apps_names = { "Telegram", "WhatsApp", "Google PLay" }
|
||||
apps_pkgs = { "org.telegram.messenger.web", "com.whatsapp", "com.android.vending" }
|
||||
apps_colors = { "#0000ff", "#00ff00" }
|
||||
|
||||
ui:showButtons(appsNames, appsColors)
|
||||
ui:show_buttons(apps_names, apps_colors)
|
||||
end
|
||||
|
||||
function onClick(idx)
|
||||
system:openApp(appsPkgs[idx])
|
||||
function on_click(idx)
|
||||
system:open_app(apps_pkgs[idx])
|
||||
end
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
-- argumentsHelp = "The word recorded here will be displayed on the screen."
|
||||
-- argumentsDefault = "Word"
|
||||
-- arguments_help = "The word recorded here will be displayed on the screen."
|
||||
-- arguments_default = "Word"
|
||||
|
||||
function on_resume()
|
||||
local args = aio:get_args()
|
||||
|
||||
function onResume()
|
||||
local args = aio:getArgs()
|
||||
if args == nil then
|
||||
ui:showText("args is empty")
|
||||
ui:show_text("args is empty")
|
||||
else
|
||||
ui:showText("arg1: "..args[1])
|
||||
ui:show_text("arg1: "..args[1])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,11 +4,13 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("https://api.blockchain.info/ticker")
|
||||
equals = "<font color=\""..ui:get_secondary_text_color().."\"> = </font>"
|
||||
|
||||
function on_alarm()
|
||||
net:get_text("https://api.blockchain.info/ticker")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local price = json:getValue(result, "object object:USD string:last")
|
||||
ui:showText("BTC = "..price.." USD")
|
||||
function on_network_result(result)
|
||||
local price = ajson:get_value(result, "object object:USD string:last")
|
||||
ui:show_text("BTC"..equals..price.." USD")
|
||||
end
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
buttons = { "Disabled", "Disabled", "Disabled" }
|
||||
|
||||
function onResume()
|
||||
function on_resume()
|
||||
redraw()
|
||||
end
|
||||
|
||||
function onClick(idx)
|
||||
function on_click(idx)
|
||||
if buttons[idx] == "Disabled" then
|
||||
buttons[idx] = "Enabled"
|
||||
else
|
||||
@@ -15,5 +15,5 @@ function onClick(idx)
|
||||
end
|
||||
|
||||
function redraw()
|
||||
ui:showButtons(buttons)
|
||||
ui:show_buttons(buttons)
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
function onTick()
|
||||
local timeStr = os.date('%Y-%m-%d %H:%M:%S')
|
||||
ui:showText(timeStr)
|
||||
function on_tick()
|
||||
local time_str = os.date('%Y-%m-%d %H:%M:%S')
|
||||
ui:show_text(time_str)
|
||||
end
|
||||
|
||||
@@ -4,19 +4,19 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
equals = "<font color=\""..ui:getSecondaryTextColor().."\"> = </font>"
|
||||
equals = "<font color=\""..ui:get_secondary_text_color().."\"> = </font>"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("https://api.covid19api.com/summary")
|
||||
function on_alarm()
|
||||
net:get_text("https://api.covid19api.com/summary")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local new = json:getValue(result, "object object:Global int:NewConfirmed")
|
||||
local total = json:getValue(result, "object object:Global int:TotalConfirmed")
|
||||
local newDeaths = json:getValue(result, "object object:Global int:NewDeaths")
|
||||
local totalDeaths = json:getValue(result, "object object:Global int:TotalDeaths")
|
||||
function on_network_result(result)
|
||||
local new = ajson:get_value(result, "object object:Global int:NewConfirmed")
|
||||
local total = ajson:get_value(result, "object object:Global int:TotalConfirmed")
|
||||
local newDeaths = ajson:get_value(result, "object object:Global int:NewDeaths")
|
||||
local totalDeaths = ajson:get_value(result, "object object:Global int:TotalDeaths")
|
||||
|
||||
ui:showLines({
|
||||
ui:show_lines({
|
||||
"<b>Disease</b> | total"..equals..comma_value(total).." | new"..equals..comma_value(new),
|
||||
"<b>Deaths</b> | total"..equals..comma_value(totalDeaths).." | new"..equals..comma_value(newDeaths)
|
||||
})
|
||||
|
||||
@@ -7,52 +7,54 @@
|
||||
-- argumentsHelp = "Введите список валютных пар в формате usd:rub btc:usd"
|
||||
-- argumentsDefault = "usd:rub eur:rub"
|
||||
|
||||
stringx = require 'pl.stringx'
|
||||
sx = require 'pl.stringx'
|
||||
|
||||
function onAlarm()
|
||||
curs = aio:getArgs()
|
||||
function on_alarm()
|
||||
curs = aio:get_args()
|
||||
|
||||
if curs == nil then
|
||||
curs = {"usd:rub", "eur:rub"}
|
||||
end
|
||||
|
||||
getRates("latest")
|
||||
get_rates("latest")
|
||||
end
|
||||
|
||||
function getRates(locDate)
|
||||
net:getText("https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/"..locDate.."/currencies/usd.json")
|
||||
function get_rates(loc_date)
|
||||
net:get_text("https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/"..loc_date.."/currencies/usd.json")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local dat = json:getValue(result, "object string:date")
|
||||
function on_network_result(result)
|
||||
local textColor = ui:get_secondary_text_color()
|
||||
local dat = ajson:get_value(result, "object string:date")
|
||||
local tab = {}
|
||||
|
||||
table.insert(tab, "<font color=\""..ui:getSecondaryTextColor().."\">"..dat.."</font>")
|
||||
table.insert(tab, "<font color=\""..textColor.."\">"..sx.replace(dat, "-", ".").."</font>")
|
||||
|
||||
for idx = 1, #curs, 1 do
|
||||
local equals = "<font color=\""..ui:getSecondaryTextColor().."\"> = </font>"
|
||||
local cur = stringx.split(curs[idx], ":")
|
||||
local equals = "<font color=\""..textColor.."\"> = </font>"
|
||||
local cur = sx.split(curs[idx], ":")
|
||||
local cur1 = cur[1]
|
||||
local cur2 = cur[2]
|
||||
local rate1 = json:getValue(result, "object object:usd double:"..cur1)
|
||||
local rate2 = json:getValue(result, "object object:usd double:"..cur2)
|
||||
local rate1 = ajson:get_value(result, "object object:usd double:"..cur1)
|
||||
local rate2 = ajson:get_value(result, "object object:usd double:"..cur2)
|
||||
local rate = math.floor(rate2/rate1*10000+0.5)/10000
|
||||
table.insert(tab, "1 "..string.upper(cur1)..equals..rate.." "..string.upper(cur2))
|
||||
end
|
||||
|
||||
ui:showLines(tab)
|
||||
ui:show_lines(tab)
|
||||
end
|
||||
|
||||
function onClick(idx)
|
||||
function on_click(idx)
|
||||
if idx == 1 then
|
||||
ui:showEditDialog("Введите дату курсов", "Введите дату курсов в формате 2020-12-31. Пустое значение - текущая дата.")
|
||||
ui:show_edit_dialog("Введите дату курсов", "Введите дату курсов в формате 2020.12.31. Пустое значение - текущая дата.")
|
||||
end
|
||||
end
|
||||
|
||||
function onDialogAction(text)
|
||||
if text == "" then
|
||||
text = "latest"
|
||||
function on_dialog_action(date)
|
||||
if date == "" then
|
||||
date = "latest"
|
||||
end
|
||||
|
||||
getRates(text)
|
||||
get_rates(sx.replace(date, ".", "-"))
|
||||
end
|
||||
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
function onResume()
|
||||
ui:showLines({
|
||||
function on_resume()
|
||||
ui:show_lines({
|
||||
"Click to open dialog",
|
||||
"Click to open dialog with custom buttons",
|
||||
"Click to open edit dialog",
|
||||
})
|
||||
end
|
||||
|
||||
function onClick(idx)
|
||||
function on_click(idx)
|
||||
if idx == 1 then
|
||||
ui:showDialog("Dialog title", "This is dialog")
|
||||
ui:show_dialog("Dialog title", "This is dialog")
|
||||
elseif idx == 2 then
|
||||
ui:showDialog("Dialog title", "This is dialog", "Button 1", "Button 2")
|
||||
ui:show_dialog("Dialog title", "This is dialog", "Button 1", "Button 2")
|
||||
elseif idx == 3 then
|
||||
ui:showEditDialog("Dialog title", "Write any text", "default text")
|
||||
ui:show_edit_dialog("Dialog title", "Write any text", "default text")
|
||||
end
|
||||
end
|
||||
|
||||
function onDialogAction(value)
|
||||
function on_dialog_action(value)
|
||||
if value == 1 then
|
||||
ui:showToast("Button 1 clicked!")
|
||||
ui:show_toast("Button 1 clicked!")
|
||||
elseif value == 2 then
|
||||
ui:showToast("Button 2 clicked!")
|
||||
ui:show_toast("Button 2 clicked!")
|
||||
elseif type(value) == "string" then
|
||||
ui:showToast("Text: "..value)
|
||||
ui:show_toast("Text: "..value)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,32 +4,32 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("https://api.trending-github.com/github/repositories")
|
||||
function on_alarm()
|
||||
net:get_text("https://api.trending-github.com/github/repositories")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
function on_network_result(result)
|
||||
local names = {
|
||||
json:getValue(result, "array object:0 string:name"),
|
||||
json:getValue(result, "array object:1 string:name"),
|
||||
json:getValue(result, "array object:2 string:name"),
|
||||
ajson:get_value(result, "array object:0 string:name"),
|
||||
ajson:get_value(result, "array object:1 string:name"),
|
||||
ajson:get_value(result, "array object:2 string:name"),
|
||||
}
|
||||
|
||||
local descriptions = {
|
||||
json:getValue(result, "array object:0 string:description"),
|
||||
json:getValue(result, "array object:1 string:description"),
|
||||
json:getValue(result, "array object:2 string:description"),
|
||||
ajson:get_value(result, "array object:0 string:description"),
|
||||
ajson:get_value(result, "array object:1 string:description"),
|
||||
ajson:get_value(result, "array object:2 string:description"),
|
||||
}
|
||||
|
||||
urls = {
|
||||
json:getValue(result, "array object:0 string:url"),
|
||||
json:getValue(result, "array object:1 string:url"),
|
||||
json:getValue(result, "array object:2 string:url"),
|
||||
ajson:get_value(result, "array object:0 string:url"),
|
||||
ajson:get_value(result, "array object:1 string:url"),
|
||||
ajson:get_value(result, "array object:2 string:url"),
|
||||
}
|
||||
|
||||
ui:showLines(names, descriptions)
|
||||
ui:show_lines(names, descriptions)
|
||||
end
|
||||
|
||||
function onClick(idx)
|
||||
system:openBrowser(urls[idx])
|
||||
function on_click(idx)
|
||||
system:open_browser(urls[idx])
|
||||
end
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
function onResume()
|
||||
ui:showText("Hello world!")
|
||||
function on_resume()
|
||||
ui:show_text("Hello world!")
|
||||
end
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
function onResume()
|
||||
ui:showLines({ "This is <b>bold</b> text" })
|
||||
function on_resume()
|
||||
ui:show_lines({ "This is <b>bold</b> text" })
|
||||
end
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("http://api.icndb.com/jokes/random")
|
||||
function on_alarm()
|
||||
net:get_text("http://api.icndb.com/jokes/random")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local joke = json:getValue(result, "object object:value string:joke")
|
||||
ui:showText(joke)
|
||||
function on_network_result(result)
|
||||
local joke = ajson:get_value(result, "object object:value string:joke")
|
||||
ui:show_text(joke)
|
||||
end
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("https://inspiration.goprogram.ai/")
|
||||
function on_alarm()
|
||||
net:get_text("https://inspiration.goprogram.ai/")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local quote = json:getValue(result, "object string:quote")
|
||||
local author = json:getValue(result, "object string:author")
|
||||
function on_network_result(result)
|
||||
local quote = ajson:get_value(result, "object string:quote")
|
||||
local author = ajson:get_value(result, "object string:author")
|
||||
|
||||
ui:showLines({ quote }, { author })
|
||||
ui:show_lines({ quote }, { author })
|
||||
end
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
function onResume()
|
||||
ui:showText("Mail widget on the screen: " .. tostring(aio:isWidgetAdded("mail")))
|
||||
function on_resume()
|
||||
ui:show_text("Mail widget on the screen: " .. tostring(aio:is_widget_added("mail")))
|
||||
end
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
function on_alarm()
|
||||
local dateStr = os.date('%Y%m%d')
|
||||
net:getText("https://isdayoff.ru/"..dateStr)
|
||||
net:get_text("https://isdayoff.ru/"..dateStr)
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
function on_network_result(result)
|
||||
if result == "0" then
|
||||
ui:showText("Сегодня рабочий день")
|
||||
ui:show_text("Сегодня рабочий день")
|
||||
elseif result == "1" then
|
||||
ui:showText("Сегодня выходной")
|
||||
ui:show_text("Сегодня выходной")
|
||||
else
|
||||
ui:showText("Ошибка")
|
||||
ui:show_text("Ошибка")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
function onResume()
|
||||
local location = system:getLocation()
|
||||
ui:showText(location[1].." "..location[2])
|
||||
function on_resume()
|
||||
local location = system:get_location()
|
||||
ui:show_text(location[1].." "..location[2])
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
stringx = require 'pl.stringx'
|
||||
sx = require 'pl.stringx'
|
||||
|
||||
function onResume()
|
||||
function on_resume()
|
||||
local string = "String with spaces"
|
||||
local sList = stringx.split(string, " ")
|
||||
ui:showText(sList[3])
|
||||
local s_list = sx.split(string, " ")
|
||||
ui:show_text(s_list[3])
|
||||
end
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("https://api.ipify.org")
|
||||
function on_alarm()
|
||||
net:get_text("https://api.ipify.org")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
ui:showText(result)
|
||||
function on_network_result(result)
|
||||
ui:show_text(result)
|
||||
end
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=ru")
|
||||
function on_alarm()
|
||||
net:get_text("http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=ru")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local quote = json:getValue(result, "object string:quoteText")
|
||||
local author = json:getValue(result, "object string:quoteAuthor")
|
||||
function on_network_result(result)
|
||||
local quote = ajson:get_value(result, "object string:quoteText")
|
||||
local author = ajson:get_value(result, "object string:quoteAuthor")
|
||||
|
||||
ui:showLines({ quote }, { author })
|
||||
ui:show_lines({ quote }, { author })
|
||||
end
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("https://api.quotable.io/random")
|
||||
function on_alarm()
|
||||
net:get_text("https://api.quotable.io/random")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local quote = json:getValue(result, "object string:content")
|
||||
local author = json:getValue(result, "object string:author")
|
||||
function on_network_result(result)
|
||||
local quote = ajson:get_value(result, "object string:content")
|
||||
local author = ajson:get_value(result, "object string:author")
|
||||
|
||||
ui:showLines({ quote }, { author })
|
||||
ui:show_lines({ quote }, { author })
|
||||
end
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onAlarm()
|
||||
net:getText("https://official-joke-api.appspot.com/random_joke")
|
||||
function on_alarm()
|
||||
net:get_text("https://official-joke-api.appspot.com/random_joke")
|
||||
end
|
||||
|
||||
function onNetworkResult(result)
|
||||
local setup = json:getValue(result, "object string:setup")
|
||||
local punchline = json:getValue(result, "object string:punchline")
|
||||
ui:showLines({setup, punchline})
|
||||
function on_network_result(result)
|
||||
local setup = ajson:get_value(result, "object string:setup")
|
||||
local punchline = ajson:get_value(result, "object string:punchline")
|
||||
ui:show_lines({setup, punchline})
|
||||
end
|
||||
|
||||
@@ -4,26 +4,26 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
currentOutput = "Click to enter command"
|
||||
current_output = "Click to enter command"
|
||||
|
||||
function onResume()
|
||||
function on_resume()
|
||||
redraw()
|
||||
end
|
||||
|
||||
function redraw()
|
||||
ui:showText(currentOutput)
|
||||
ui:show_text(current_output)
|
||||
end
|
||||
|
||||
function onClick(idx)
|
||||
ui:showEditDialog("Enter command")
|
||||
function on_click(idx)
|
||||
ui:show_edit_dialog("Enter command")
|
||||
end
|
||||
|
||||
function onDialogAction(text)
|
||||
function on_dialog_action(text)
|
||||
system:exec(text)
|
||||
end
|
||||
|
||||
function onShellResult(text)
|
||||
currentOutput = text
|
||||
function on_shell_result(text)
|
||||
current_output = text
|
||||
redraw()
|
||||
end
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
function onResume()
|
||||
ui:showButtons({ "Add clock widget", "Remove clock widget" })
|
||||
function on_resume()
|
||||
ui:show_buttons({ "Add clock widget", "Remove clock widget" })
|
||||
end
|
||||
|
||||
function onClick(idx)
|
||||
function on_click(idx)
|
||||
if idx == 1 then
|
||||
aio:addWidget("clock")
|
||||
aio:add_widget("clock")
|
||||
else
|
||||
aio:removeWidget("clock")
|
||||
aio:remove_widget("clock")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
|
||||
-- version = "1.0"
|
||||
|
||||
function onResume()
|
||||
local yearDays = 365
|
||||
local currentDay = os.date("*t").yday
|
||||
local percent = math.floor(currentDay / (yearDays / 100))
|
||||
ui:showProgressBar("Year progress: "..percent.."%", currentDay, yearDays)
|
||||
function on_resume()
|
||||
local year_days = 365
|
||||
local current_day = os.date("*t").yday
|
||||
local percent = math.floor(current_day / (year_days / 100))
|
||||
ui:show_progress_bar("Year progress: "..percent.."%", current_day, year_days)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user