summaryrefslogtreecommitdiff
path: root/lua/main_menu.lua
blob: c2d052a34bb508db4dbe9debd22c5f9c40382f03 (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
local lvgl = require("lvgl")
local widgets = require("widgets")
local legacy_ui = require("legacy_ui")
local database = require("database")
local backstack = require("backstack")
local browser = require("browser")
local playing = require("playing")

return function()
  local menu = {}
  menu.root = lvgl.Object(nil, {
    flex = {
      flex_direction = "column",
      flex_wrap = "wrap",
      justify_content = "flex-start",
      align_items = "flex-start",
      align_content = "flex-start",
    },
    w = lvgl.HOR_RES(),
    h = lvgl.VER_RES(),
  })
  menu.root:center()

  menu.status_bar = widgets.StatusBar(menu.root, {transparent_bg = true})

  menu.list = lvgl.List(menu.root, {
    w = lvgl.PCT(100),
    h = lvgl.PCT(100),
    flex_grow = 1,
  })

  menu.list:add_btn(nil, "Now Playing"):onClicked(function()
    backstack.push(playing)
  end)

  local indexes = database.indexes()
  for id, idx in ipairs(indexes) do
    local btn = menu.list:add_btn(nil, tostring(idx))
    btn:onClicked(function()
      backstack.push(function()
        return browser {
          title = tostring(idx),
          iterator = idx:iter()
        }
      end)
    end)
  end

  menu.list:add_btn(nil, "Settings"):onClicked(function()
    legacy_ui.open_settings();
  end)

  return menu
end