summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/main.lua1
-rw-r--r--lua/main_menu.lua47
-rw-r--r--lua/widgets.lua37
3 files changed, 85 insertions, 0 deletions
diff --git a/lua/main.lua b/lua/main.lua
new file mode 100644
index 00000000..2a80a571
--- /dev/null
+++ b/lua/main.lua
@@ -0,0 +1 @@
+require("main_menu"):Create()
diff --git a/lua/main_menu.lua b/lua/main_menu.lua
new file mode 100644
index 00000000..924b51cf
--- /dev/null
+++ b/lua/main_menu.lua
@@ -0,0 +1,47 @@
+local lvgl = require("lvgl")
+local widgets = require("widgets")
+local legacy_ui = require("legacy_ui")
+local database = require("database")
+
+local main_menu = {}
+
+function main_menu:Create()
+ local 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(),
+ })
+ root:center()
+
+ widgets.StatusBar(root, {})
+
+ local list = lvgl.List(root, {
+ w = lvgl.PCT(100),
+ h = lvgl.PCT(100),
+ flex_grow = 1,
+ })
+
+ list:add_btn(nil, "Now Playing"):onClicked(function()
+ legacy_ui.open_now_playing();
+ end)
+
+ local indexes = database.get_indexes()
+ for id, name in ipairs(indexes) do
+ local btn = list:add_btn(nil, name)
+ btn:onClicked(function()
+ legacy_ui.open_browse(id);
+ end)
+ end
+
+ list:add_btn(nil, "Settings"):onClicked(function()
+ legacy_ui.open_settings();
+ end)
+end
+
+return main_menu
diff --git a/lua/widgets.lua b/lua/widgets.lua
new file mode 100644
index 00000000..bcc3ca59
--- /dev/null
+++ b/lua/widgets.lua
@@ -0,0 +1,37 @@
+local lvgl = require("lvgl")
+
+local widgets = {}
+
+function widgets.StatusBar(parent)
+ local container = parent:Object {
+ flex = {
+ flex_direction = "row",
+ justify_content = "flex-start",
+ align_items = "center",
+ align_content = "center",
+ },
+ w = lvgl.HOR_RES(),
+ h = 16,
+ }
+
+ container:Label {
+ w = lvgl.SIZE_CONTENT,
+ h = 12,
+ text = "<",
+ }
+
+ container:Label {
+ w = lvgl.PCT(100),
+ h = 16,
+ text = "cool title",
+ flex_grow = 1,
+ }
+
+ container:Label {
+ w = lvgl.SIZE_CONTENT,
+ h = 16,
+ text = "69%",
+ }
+end
+
+return widgets