Use a more familiar lua snake_hour

This commit is contained in:
Evgeny
2021-08-01 19:57:41 +03:00
parent 6e24536f99
commit f24288af99
26 changed files with 208 additions and 184 deletions

View File

@@ -1,28 +1,28 @@
# Функции (колбеки) жизненного цикла # Функции (колбеки) жизненного цикла
* `onResume()` - вызывается при каждом возврате на рабочий стол; * `on_resume()` - вызывается при каждом возврате на рабочий стол;
* `onAlarm()` - вызывается при возврате на рабочий стол при условии, что с прошлого вызова прошло больше 30 минут; * `on_alarm()` - вызывается при возврате на рабочий стол при условии, что с прошлого вызова прошло больше 30 минут;
* `onTick()` - вызывается каждую секунду пока лаунчер находится на экране. * `on_tick()` - вызывается каждую секунду пока лаунчер находится на экране.
Для большинства сетевых скриптов (загрузка и показ значений) следует использовать `onAlarm`. Использование других функций может привести к блокировке вашего IP. Для большинства сетевых скриптов (загрузка и показ значений) следует использовать `onAlarm`. Использование других функций может привести к блокировке вашего IP.
# Функции показа данных # Функции показа данных
* `ui:showText(string)` - выводит в виджет обычный текст; повторный вызов стирает предыдущий текст; * `ui:show_text(string)` - выводит в виджет обычный текст; повторный вызов стирает предыдущий текст;
* `ui:showLines(table, [table])` - выводит список строк с отправителем (на манер почтового виджета), второй аргумент (необязательный) - соответствующие им отправители (форматирование в стиле почтового виджета); * `ui:show_lines(table, [table])` - выводит список строк с отправителем (на манер почтового виджета), второй аргумент (необязательный) - соответствующие им отправители (форматирование в стиле почтового виджета);
* `ui:showButtons(table, [table])` - выводит список кнопок, первый аргумент - таблица строк, второй опциональный аргумент, таблица цветов в формате #XXXXXX; * `ui:show_buttons(table, [table])` - выводит список кнопок, первый аргумент - таблица строк, второй опциональный аргумент, таблица цветов в формате #XXXXXX;
* `ui:showProgressBar(text, currentValue, maxValue)` - показывает прогресс бар; * `ui:show_progress_bar(text, current_value, max_value)` - показывает прогресс бар;
* `ui:showToast(string)` - показывает информационное сообщение в стиле Android; * `ui:show_toast(string)` - показывает информационное сообщение в стиле Android;
* `ui:showDialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки; * `ui:show_dialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки;
* `ui:showEditDialog(string, [string], [string])` - показать диалог с полем ввода: 1 - заголовок, 2 - подпись, 3 - стандартное значения поля ввода; * `ui:show_edit_dialog(string, [string], [string])` - показать диалог с полем ввода: 1 - заголовок, 2 - подпись, 3 - стандартное значения поля ввода;
* `ui:getPrimaryTextColor()` - возвращает цвет текста темы в формате #XXXXXX; * `ui:get_primary_text_color()` - возвращает цвет текста темы в формате #XXXXXX;
* `ui:getSecondaryTextColor()` - возвращает цвет вторичного текста (обычно серый) в формате #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 First line<br/>Second line
@@ -33,33 +33,34 @@ First line<br/>Second line
# Системные функции # Системные функции
* `system:openApp(string)` - открывает приложение, имя пакета которого указано в аргументе; * `system:open_app(string)` - открывает приложение, имя пакета которого указано в аргументе;
* `system:openBrowser(string)` - открывает указанный URL в браузере или в приложении, умеющем обрабатывать данный тип URL; * `system:open_browser(string)` - открывает указанный URL в браузере или в приложении, умеющем обрабатывать данный тип URL;
* `system:exec(string)` - выполняет shell-команду; * `system:exec(string)` - выполняет shell-команду;
* `system:su(string)` - выполняет shell-команду от имени root; * `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:do_action(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html));
* `aio:addWidget(string)` - добавляет на экран встроенный виджет, виджет-скрипт или клон существующего виджета; * `aio:add_widget(string)` - добавляет на экран встроенный виджет, виджет-скрипт или клон существующего виджета;
* `aio:removeWidget(string)` - удаляет с экрана встроенный виджет или виджет-скрипт (внимание: доп. виджеты тоже будут удалены); * `aio:remove_widget(string)` - удаляет с экрана встроенный виджет или виджет-скрипт (внимание: доп. виджеты тоже будут удалены);
* `aio:isWidgetAdded(string)` - проверяет, добавлен ли виджет на экран; * `aio:isWidget_added(string)` - проверяет, добавлен ли виджет на экран;
* `aio:getArgs()` - возвращает таблицу аргументов, которые пользователь указал нажав на иконку настроек в режиме редактирования виджета; * `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)`. В нем следует обрабатывать результат. Функция не возвращает никакого значения, а вместо этого вызывает колбек `onNetworkResult(string)`. В нем следует обрабатывать результат.
# Функции обработки данных # Функции обработки данных
* `json:getValue(string, string)` - получает указанное значение из JSON; первый аргумент - JSON-строка, второй - инструкция для получения значения. * `ajson:get_value(string, string)` - получает указанное значение из JSON; первый аргумент - JSON-строка, второй - инструкция для получения значения.
В отличие от классических парзеров JSON, эта функция предназначена не для парзинга, а именно для извлечения одиночных значений. Например, есть следующий JSON: В отличие от классических парзеров JSON, эта функция предназначена не для парзинга, а именно для извлечения одиночных значений. Например, есть следующий JSON:
@@ -77,19 +78,19 @@ First line<br/>Second line
Необходимо извлечь из него строку "joke". По тексту JSON видно, что эта строка содержится внутри объекта "value", а сам этот объект находится внутри основного объекта JSON. Другими словами чтобы извлечь нужную строку необходимо "открыть" основной объект JSON, затем "открыть" объект "value" и найти в нем строку "joke". В коде это будет выглядеть так: Необходимо извлечь из него строку "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() function on_alarm()
net:getText("http://api.icndb.com/jokes/random") net:get_text("http://api.icndb.com/jokes/random")
end end
function onNetworkResult(result) function on_network_result(result)
local joke = json:getValue(result, "object object:value string:joke") local joke = ajson:get_value(result, "object object:value string:joke")
aio:showText(joke) aio:show_text(joke)
end end
``` ```
@@ -105,7 +106,13 @@ end
AIO Launcher включает в себя интерпретатор LuaJ 3.0.1 (совместимый с Lua 5.2) со стандартным набором библиотек: `base`, `bit32`, `coroutine`, `io`, `math`, `os`, `package`, `string table`. 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" -- name = "Covid info"
-- description = "Cases of illness and death from covid (covid19api.com)" -- description = "Cases of illness and death from covid (covid19api.com)"
-- argumentsHelp = "Specify the country code" -- arguments_help = "Specify the country code"
-- argumentsDefault = "RU" -- arguments_default = "RU"
-- type = "widget" -- type = "widget"
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"

12
actions-widget.lua Normal file
View 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

View File

@@ -1,11 +1,11 @@
function onResume() function on_resume()
appsNames = { "Telegram", "WhatsApp", "Google PLay" } apps_names = { "Telegram", "WhatsApp", "Google PLay" }
appsPkgs = { "org.telegram.messenger.web", "com.whatsapp", "com.android.vending" } apps_pkgs = { "org.telegram.messenger.web", "com.whatsapp", "com.android.vending" }
appsColors = { "#0000ff", "#00ff00" } apps_colors = { "#0000ff", "#00ff00" }
ui:showButtons(appsNames, appsColors) ui:show_buttons(apps_names, apps_colors)
end end
function onClick(idx) function on_click(idx)
system:openApp(appsPkgs[idx]) system:open_app(apps_pkgs[idx])
end end

View File

@@ -1,11 +1,12 @@
-- argumentsHelp = "The word recorded here will be displayed on the screen." -- arguments_help = "The word recorded here will be displayed on the screen."
-- argumentsDefault = "Word" -- arguments_default = "Word"
function on_resume()
local args = aio:get_args()
function onResume()
local args = aio:getArgs()
if args == nil then if args == nil then
ui:showText("args is empty") ui:show_text("args is empty")
else else
ui:showText("arg1: "..args[1]) ui:show_text("arg1: "..args[1])
end end
end end

View File

@@ -4,11 +4,13 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() equals = "<font color=\""..ui:get_secondary_text_color().."\"> = </font>"
net:getText("https://api.blockchain.info/ticker")
function on_alarm()
net:get_text("https://api.blockchain.info/ticker")
end end
function onNetworkResult(result) function on_network_result(result)
local price = json:getValue(result, "object object:USD string:last") local price = ajson:get_value(result, "object object:USD string:last")
ui:showText("BTC = "..price.." USD") ui:show_text("BTC"..equals..price.." USD")
end end

View File

@@ -1,10 +1,10 @@
buttons = { "Disabled", "Disabled", "Disabled" } buttons = { "Disabled", "Disabled", "Disabled" }
function onResume() function on_resume()
redraw() redraw()
end end
function onClick(idx) function on_click(idx)
if buttons[idx] == "Disabled" then if buttons[idx] == "Disabled" then
buttons[idx] = "Enabled" buttons[idx] = "Enabled"
else else
@@ -15,5 +15,5 @@ function onClick(idx)
end end
function redraw() function redraw()
ui:showButtons(buttons) ui:show_buttons(buttons)
end end

View File

@@ -1,4 +1,4 @@
function onTick() function on_tick()
local timeStr = os.date('%Y-%m-%d %H:%M:%S') local time_str = os.date('%Y-%m-%d %H:%M:%S')
ui:showText(timeStr) ui:show_text(time_str)
end end

View File

@@ -4,19 +4,19 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
equals = "<font color=\""..ui:getSecondaryTextColor().."\"> = </font>" equals = "<font color=\""..ui:get_secondary_text_color().."\"> = </font>"
function onAlarm() function on_alarm()
net:getText("https://api.covid19api.com/summary") net:get_text("https://api.covid19api.com/summary")
end end
function onNetworkResult(result) function on_network_result(result)
local new = json:getValue(result, "object object:Global int:NewConfirmed") local new = ajson:get_value(result, "object object:Global int:NewConfirmed")
local total = json:getValue(result, "object object:Global int:TotalConfirmed") local total = ajson:get_value(result, "object object:Global int:TotalConfirmed")
local newDeaths = json:getValue(result, "object object:Global int:NewDeaths") local newDeaths = ajson:get_value(result, "object object:Global int:NewDeaths")
local totalDeaths = json:getValue(result, "object object:Global int:TotalDeaths") 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>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) "<b>Deaths</b> | total"..equals..comma_value(totalDeaths).." | new"..equals..comma_value(newDeaths)
}) })

View File

@@ -7,52 +7,54 @@
-- argumentsHelp = "Введите список валютных пар в формате usd:rub btc:usd" -- argumentsHelp = "Введите список валютных пар в формате usd:rub btc:usd"
-- argumentsDefault = "usd:rub eur:rub" -- argumentsDefault = "usd:rub eur:rub"
stringx = require 'pl.stringx' sx = require 'pl.stringx'
function onAlarm() function on_alarm()
curs = aio:getArgs() curs = aio:get_args()
if curs == nil then if curs == nil then
curs = {"usd:rub", "eur:rub"} curs = {"usd:rub", "eur:rub"}
end end
getRates("latest") get_rates("latest")
end end
function getRates(locDate) function get_rates(loc_date)
net:getText("https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/"..locDate.."/currencies/usd.json") net:get_text("https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/"..loc_date.."/currencies/usd.json")
end end
function onNetworkResult(result) function on_network_result(result)
local dat = json:getValue(result, "object string:date") local textColor = ui:get_secondary_text_color()
local dat = ajson:get_value(result, "object string:date")
local tab = {} 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 for idx = 1, #curs, 1 do
local equals = "<font color=\""..ui:getSecondaryTextColor().."\"> = </font>" local equals = "<font color=\""..textColor.."\"> = </font>"
local cur = stringx.split(curs[idx], ":") local cur = sx.split(curs[idx], ":")
local cur1 = cur[1] local cur1 = cur[1]
local cur2 = cur[2] local cur2 = cur[2]
local rate1 = json:getValue(result, "object object:usd double:"..cur1) local rate1 = ajson:get_value(result, "object object:usd double:"..cur1)
local rate2 = json:getValue(result, "object object:usd double:"..cur2) local rate2 = ajson:get_value(result, "object object:usd double:"..cur2)
local rate = math.floor(rate2/rate1*10000+0.5)/10000 local rate = math.floor(rate2/rate1*10000+0.5)/10000
table.insert(tab, "1 "..string.upper(cur1)..equals..rate.." "..string.upper(cur2)) table.insert(tab, "1 "..string.upper(cur1)..equals..rate.." "..string.upper(cur2))
end end
ui:showLines(tab) ui:show_lines(tab)
end end
function onClick(idx) function on_click(idx)
if idx == 1 then if idx == 1 then
ui:showEditDialog("Введите дату курсов", "Введите дату курсов в формате 2020-12-31. Пустое значение - текущая дата.") ui:show_edit_dialog("Введите дату курсов", "Введите дату курсов в формате 2020.12.31. Пустое значение - текущая дата.")
end end
end end
function onDialogAction(text) function on_dialog_action(date)
if text == "" then if date == "" then
text = "latest" date = "latest"
end end
getRates(text) get_rates(sx.replace(date, ".", "-"))
end end

View File

@@ -1,27 +1,27 @@
function onResume() function on_resume()
ui:showLines({ ui:show_lines({
"Click to open dialog", "Click to open dialog",
"Click to open dialog with custom buttons", "Click to open dialog with custom buttons",
"Click to open edit dialog", "Click to open edit dialog",
}) })
end end
function onClick(idx) function on_click(idx)
if idx == 1 then if idx == 1 then
ui:showDialog("Dialog title", "This is dialog") ui:show_dialog("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:show_dialog("Dialog title", "This is dialog", "Button 1", "Button 2")
elseif idx == 3 then 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
end end
function onDialogAction(value) function on_dialog_action(value)
if value == 1 then if value == 1 then
ui:showToast("Button 1 clicked!") ui:show_toast("Button 1 clicked!")
elseif value == 2 then elseif value == 2 then
ui:showToast("Button 2 clicked!") ui:show_toast("Button 2 clicked!")
elseif type(value) == "string" then elseif type(value) == "string" then
ui:showToast("Text: "..value) ui:show_toast("Text: "..value)
end end
end end

View File

@@ -4,32 +4,32 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
net:getText("https://api.trending-github.com/github/repositories") net:get_text("https://api.trending-github.com/github/repositories")
end end
function onNetworkResult(result) function on_network_result(result)
local names = { local names = {
json:getValue(result, "array object:0 string:name"), ajson:get_value(result, "array object:0 string:name"),
json:getValue(result, "array object:1 string:name"), ajson:get_value(result, "array object:1 string:name"),
json:getValue(result, "array object:2 string:name"), ajson:get_value(result, "array object:2 string:name"),
} }
local descriptions = { local descriptions = {
json:getValue(result, "array object:0 string:description"), ajson:get_value(result, "array object:0 string:description"),
json:getValue(result, "array object:1 string:description"), ajson:get_value(result, "array object:1 string:description"),
json:getValue(result, "array object:2 string:description"), ajson:get_value(result, "array object:2 string:description"),
} }
urls = { urls = {
json:getValue(result, "array object:0 string:url"), ajson:get_value(result, "array object:0 string:url"),
json:getValue(result, "array object:1 string:url"), ajson:get_value(result, "array object:1 string:url"),
json:getValue(result, "array object:2 string:url"), ajson:get_value(result, "array object:2 string:url"),
} }
ui:showLines(names, descriptions) ui:show_lines(names, descriptions)
end end
function onClick(idx) function on_click(idx)
system:openBrowser(urls[idx]) system:open_browser(urls[idx])
end end

View File

@@ -1,3 +1,3 @@
function onResume() function on_resume()
ui:showText("Hello world!") ui:show_text("Hello world!")
end end

View File

@@ -1,3 +1,3 @@
function onResume() function on_resume()
ui:showLines({ "This is <b>bold</b> text" }) ui:show_lines({ "This is <b>bold</b> text" })
end end

View File

@@ -4,11 +4,11 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
net:getText("http://api.icndb.com/jokes/random") net:get_text("http://api.icndb.com/jokes/random")
end end
function onNetworkResult(result) function on_network_result(result)
local joke = json:getValue(result, "object object:value string:joke") local joke = ajson:get_value(result, "object object:value string:joke")
ui:showText(joke) ui:show_text(joke)
end end

View File

@@ -4,13 +4,13 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
net:getText("https://inspiration.goprogram.ai/") net:get_text("https://inspiration.goprogram.ai/")
end end
function onNetworkResult(result) function on_network_result(result)
local quote = json:getValue(result, "object string:quote") local quote = ajson:get_value(result, "object string:quote")
local author = json:getValue(result, "object string:author") local author = ajson:get_value(result, "object string:author")
ui:showLines({ quote }, { author }) ui:show_lines({ quote }, { author })
end end

View File

@@ -1,3 +1,3 @@
function onResume() function on_resume()
ui:showText("Mail widget on the screen: " .. tostring(aio:isWidgetAdded("mail"))) ui:show_text("Mail widget on the screen: " .. tostring(aio:is_widget_added("mail")))
end end

View File

@@ -4,17 +4,17 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
local dateStr = os.date('%Y%m%d') local dateStr = os.date('%Y%m%d')
net:getText("https://isdayoff.ru/"..dateStr) net:get_text("https://isdayoff.ru/"..dateStr)
end end
function onNetworkResult(result) function on_network_result(result)
if result == "0" then if result == "0" then
ui:showText("Сегодня рабочий день") ui:show_text("Сегодня рабочий день")
elseif result == "1" then elseif result == "1" then
ui:showText("Сегодня выходной") ui:show_text("Сегодня выходной")
else else
ui:showText("Ошибка") ui:show_text("Ошибка")
end end
end end

View File

@@ -1,4 +1,4 @@
function onResume() function on_resume()
local location = system:getLocation() local location = system:get_location()
ui:showText(location[1].." "..location[2]) ui:show_text(location[1].." "..location[2])
end end

View File

@@ -1,7 +1,7 @@
stringx = require 'pl.stringx' sx = require 'pl.stringx'
function onResume() function on_resume()
local string = "String with spaces" local string = "String with spaces"
local sList = stringx.split(string, " ") local s_list = sx.split(string, " ")
ui:showText(sList[3]) ui:show_text(s_list[3])
end end

View File

@@ -4,10 +4,10 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
net:getText("https://api.ipify.org") net:get_text("https://api.ipify.org")
end end
function onNetworkResult(result) function on_network_result(result)
ui:showText(result) ui:show_text(result)
end end

View File

@@ -4,13 +4,13 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
net:getText("http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=ru") net:get_text("http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=ru")
end end
function onNetworkResult(result) function on_network_result(result)
local quote = json:getValue(result, "object string:quoteText") local quote = ajson:get_value(result, "object string:quoteText")
local author = json:getValue(result, "object string:quoteAuthor") local author = ajson:get_value(result, "object string:quoteAuthor")
ui:showLines({ quote }, { author }) ui:show_lines({ quote }, { author })
end end

View File

@@ -4,13 +4,13 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
net:getText("https://api.quotable.io/random") net:get_text("https://api.quotable.io/random")
end end
function onNetworkResult(result) function on_network_result(result)
local quote = json:getValue(result, "object string:content") local quote = ajson:get_value(result, "object string:content")
local author = json:getValue(result, "object string:author") local author = ajson:get_value(result, "object string:author")
ui:showLines({ quote }, { author }) ui:show_lines({ quote }, { author })
end end

View File

@@ -4,12 +4,12 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onAlarm() function on_alarm()
net:getText("https://official-joke-api.appspot.com/random_joke") net:get_text("https://official-joke-api.appspot.com/random_joke")
end end
function onNetworkResult(result) function on_network_result(result)
local setup = json:getValue(result, "object string:setup") local setup = ajson:get_value(result, "object string:setup")
local punchline = json:getValue(result, "object string:punchline") local punchline = ajson:get_value(result, "object string:punchline")
ui:showLines({setup, punchline}) ui:show_lines({setup, punchline})
end end

View File

@@ -4,26 +4,26 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
currentOutput = "Click to enter command" current_output = "Click to enter command"
function onResume() function on_resume()
redraw() redraw()
end end
function redraw() function redraw()
ui:showText(currentOutput) ui:show_text(current_output)
end end
function onClick(idx) function on_click(idx)
ui:showEditDialog("Enter command") ui:show_edit_dialog("Enter command")
end end
function onDialogAction(text) function on_dialog_action(text)
system:exec(text) system:exec(text)
end end
function onShellResult(text) function on_shell_result(text)
currentOutput = text current_output = text
redraw() redraw()
end end

View File

@@ -1,11 +1,11 @@
function onResume() function on_resume()
ui:showButtons({ "Add clock widget", "Remove clock widget" }) ui:show_buttons({ "Add clock widget", "Remove clock widget" })
end end
function onClick(idx) function on_click(idx)
if idx == 1 then if idx == 1 then
aio:addWidget("clock") aio:add_widget("clock")
else else
aio:removeWidget("clock") aio:remove_widget("clock")
end end
end end

View File

@@ -4,9 +4,9 @@
-- author = "Evgeny Zobnin (zobnin@gmail.com)" -- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0" -- version = "1.0"
function onResume() function on_resume()
local yearDays = 365 local year_days = 365
local currentDay = os.date("*t").yday local current_day = os.date("*t").yday
local percent = math.floor(currentDay / (yearDays / 100)) local percent = math.floor(current_day / (year_days / 100))
ui:showProgressBar("Year progress: "..percent.."%", currentDay, yearDays) ui:show_progress_bar("Year progress: "..percent.."%", current_day, year_days)
end end