diff --git a/res/layouts/pages/content_menu.xml b/res/layouts/pages/content_menu.xml index 322a3dd9..af15b32c 100644 --- a/res/layouts/pages/content_menu.xml +++ b/res/layouts/pages/content_menu.xml @@ -1,9 +1,13 @@ - - + + - - + + + + + + diff --git a/res/layouts/pages/content_menu.xml.lua b/res/layouts/pages/content_menu.xml.lua index e601b01e..130b7387 100644 --- a/res/layouts/pages/content_menu.xml.lua +++ b/res/layouts/pages/content_menu.xml.lua @@ -1,3 +1,5 @@ +local packs_installed = {} + function on_open(params) refresh() end @@ -13,11 +15,33 @@ function place_pack(panel, packinfo, callback) end packinfo.callback = callback panel:add(gui.template("pack", packinfo)) - if not callback then - document["pack_"..packinfo.id].enabled = false +end + +function refresh_search() + local search_text = document.search_textbox.text:lower() + local visible = 0 + local interval = 4 + local step = -1 + + for i, v in ipairs(packs_installed) do + local id = v[1] + local title = v[2] + local content = document["pack_" .. id] + local pos = content.pos + local size = content.size + + if title:lower():find(search_text) or search_text == '' then + content.enabled = true + content.pos = {pos[1], visible * (size[2] + interval) - step} + visible = visible + 1 + else + content.enabled = false + content.pos = {pos[1], (visible + #packs_installed - i) * (size[2] + interval) - step} + end end end + function open_pack(id) local packinfo = pack.get_info(id) @@ -28,8 +52,8 @@ function open_pack(id) end function refresh() - local packs_installed = pack.get_installed() local packs_available = pack.get_available() + packs_installed = pack.get_installed() for i,k in ipairs(packs_available) do table.insert(packs_installed, k) @@ -41,7 +65,8 @@ function refresh() for i,id in ipairs(packs_installed) do local packinfo = pack.get_info(id) - packinfo.index = i + packinfo.id = id + packs_installed[i] = {packinfo.id, packinfo.title} local callback = string.format('open_pack("%s")', id) place_pack(contents, packinfo, callback) end