summaryrefslogtreecommitdiffstats
path: root/apps/plugins/lua_scripts/submenu_demo.lua
blob: 75fec1197989b53c7d15fa7536092d84992b06ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
--Bilgus 4/2021 Menu with subitems and context demo
require("printsubmenu")

local scrpath = rb.current_path()

local function get_ctx_menu(parent, sel, menu_t, func_t)
    local mt = {"Context menu " .. (menu_t[parent] or "ROOT") ..
            " : " .. menu_t[sel], "Quit", "Action 1", "Action 2"}
    local ft = {false, function() menu_ctx.quit = true return true end}
    return mt, ft
end

local function ITEM_MENU()

    local function flung(i, menu_t, func_t)
        local parent = get_parent() or 0
        rb.splash(100, "flung " .. (menu_t[parent] or "?"))
    end

    local function foo(i, menu_t, func_t)
        local parent = get_parent() or 0
        rb.splash(100, "FOO " .. menu_t[parent])
    end

    local function far(i, menu_t, func_t)
        local parent = get_parent() or 0
        rb.splash(100, "far" .. menu_t[parent])
    end

    return {"Flung", "FOO", "Far"},
            {flung, foo, far}
end

local function USERITEMS()

        return {"Item_1", "Item_2", "Item_3"},
               {create_sub_menu(2, ITEM_MENU()), create_sub_menu(2, ITEM_MENU()),
                create_sub_menu(2, ITEM_MENU()), function() end}
end

local function MAIN_MENU()

    local function go_back(i, m, f)
        local parent = get_parent() or 0
        if parent > 0 then
            f[parent](parent, m, f)
        else
            menu_ctx.quit = true
        end
        menu_ctx.start = parent - 1
        return true
    end

    local mt =  {
        [1] = "lua Menu Demo",
        [2] = "Items",
        [3] = "Back",
        }

    local ft =  {
        [0]  = go_back, --if user cancels do this function
        [1]  = false, -- shouldn't happen title occupies this slot
        [2]  = create_sub_menu(1, USERITEMS()),
        [3]  = go_back,
        }
    return mt, ft, get_ctx_menu
end

function ShowMain()
    set_menu(MAIN_MENU())
end

--ShowMainMenu()
ShowMain()
rb.lcd_clear_display()
rb.lcd_update()
local lu = collectgarbage("collect")
local used, allocd, free = rb.mem_stats()
local lu = collectgarbage("count")
local fmt = function(t, v) return string.format("%s: %d Kb\n", t, v /1024) end

-- this is how lua recommends to concat strings rather than ..
local s_t = {}
s_t[1] = "rockbox:\n"
s_t[2] = fmt("Used  ", used)
s_t[3] = fmt("Allocd ", allocd)
s_t[4] = fmt("Free  ", free)
s_t[5] = "\nlua:\n"
s_t[6] = fmt("Used", lu * 1024)
s_t[7] = "\n\nNote that the rockbox used count is a high watermark"
rb.splash_scroller(5 * rb.HZ, table.concat(s_t))
--require("print_lua_func")
os.exit(1, "Goodbye")