From 8a0a167adbf3d9b6f8b6f16aaf20ca39ad5549de Mon Sep 17 00:00:00 2001 From: jacqueline Date: Sun, 12 Nov 2023 19:14:09 +1100 Subject: Convert the main menu screen to lua lol --- lua/main.lua | 1 + lua/main_menu.lua | 47 +++++++++++++++++++++++++++++++++++++++++++++++ lua/widgets.lua | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 lua/main.lua create mode 100644 lua/main_menu.lua create mode 100644 lua/widgets.lua (limited to 'lua') 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 -- cgit v1.2.3