Files
aiolauncher_scripts/samples/android-widget-sample.lua

70 lines
1.5 KiB
Lua

-- name = "Android widgets sample (Gmail)"
local prefs = require "prefs"
local max_mails = 1
local curr_tab = {}
local w_bridge = nil
function on_resume()
if not widgets:bound(prefs.wid) then
setup_app_widget()
end
widgets:request_updates(prefs.wid)
end
function on_app_widget_updated(bridge)
local tab = bridge:dump_strings().values
-- Removing redunant elements like widget title
tab = skip(tab, 4)
-- Each mail consists of 4 text elements:
-- 1. from, 2. time, 3. subject, 4. text
tab = take(tab, max_mails * 4)
-- Concatenate "from" and "time"
tab = concat(tab, {1, 2}, ", ")
curr_tab = tab
w_bridge = bridge
ui:show_lines(tab)
end
function on_click(idx)
w_bridge:click(curr_tab[idx])
end
function setup_app_widget()
local id = widgets:setup("com.google.android.gm/com.google.android.gm.widget.GmailWidgetProvider")
if (id ~= nil) then
prefs.wid = id
else
ui:show_text("Can't add widget")
return
end
end
-- Utils
function concat(tbl, indicesToConcatenate, delimiter)
local resultTable = {}
if #indicesToConcatenate > 0 then
local concatenatedString = {}
for _, index in ipairs(indicesToConcatenate) do
table.insert(concatenatedString, tbl[index])
end
table.insert(resultTable, table.concat(concatenatedString, delimiter))
end
for i = 1, #tbl do
if not contains(indicesToConcatenate, i) then
table.insert(resultTable, tbl[i])
end
end
return resultTable
end