diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/playing.lua | 12 | ||||
| -rw-r--r-- | lua/settings.lua | 52 | ||||
| -rw-r--r-- | lua/widgets.lua | 43 |
3 files changed, 84 insertions, 23 deletions
diff --git a/lua/playing.lua b/lua/playing.lua index a1ba2cc1..3368f590 100644 --- a/lua/playing.lua +++ b/lua/playing.lua @@ -8,12 +8,12 @@ local screen = require("screen") local theme = require("theme") local img = { - play = "//lua/img/play.png", - pause = "//lua/img/pause.png", - next = "//lua/img/next.png", - prev = "//lua/img/prev.png", - shuffle = "//lua/img/shuffle.png", - repeat_src = "//lua/img/repeat.png", -- repeat is a reserved word + play = lvgl.ImgData("//lua/img/play.png"), + pause = lvgl.ImgData("//lua/img/pause.png"), + next = lvgl.ImgData("//lua/img/next.png"), + prev = lvgl.ImgData("//lua/img/prev.png"), + shuffle = lvgl.ImgData("//lua/img/shuffle.png"), + repeat_src = lvgl.ImgData("//lua/img/repeat.png"), -- repeat is a reserved word } local is_now_playing_shown = false diff --git a/lua/settings.lua b/lua/settings.lua index c9103de3..d19a6180 100644 --- a/lua/settings.lua +++ b/lua/settings.lua @@ -9,6 +9,7 @@ local bluetooth = require("bluetooth") local theme = require("theme") local database = require("database") local screen = require("screen") +local usb = require("usb") local function SettingsScreen(title) local menu = widgets.MenuScreen { @@ -277,6 +278,54 @@ local InputSettings = screen:new { end } +local MassStorageSettings = screen:new { + createUi = function(self) + self.menu = SettingsScreen("USB Storage") + local version = require("version").samd() + if tonumber(version) < 2 then + self.menu.content:Label { + w = lvgl.PCT(100), + text = "Usb Mass Storage requires a SAMD21 firmware version >=2." + } + return + end + + local enable_container = self.menu.content:Object { + flex = { + flex_direction = "row", + justify_content = "flex-start", + align_items = "content", + align_content = "flex-start", + }, + w = lvgl.PCT(100), + h = lvgl.SIZE_CONTENT, + pad_bottom = 1, + } + enable_container:Label { text = "Enable", flex_grow = 1 } + local enable_sw = enable_container:Switch {} + + local bind_switch = function() + if usb.msc_enabled:get() then + enable_sw:add_state(lvgl.STATE.CHECKED) + else + enable_sw:clear_state(lvgl.STATE.CHECKED) + end + end + + enable_sw:onevent(lvgl.EVENT.VALUE_CHANGED, function() + usb.msc_enabled:set(enable_sw:enabled()) + bind_switch() + end) + + self.bindings = { + usb.msc_enabled:bind(bind_switch), + } + end, + canPop = function() + return not usb.msc_enabled:get() + end +} + local DatabaseSettings = screen:new { createUi = function(self) self.menu = SettingsScreen("Database") @@ -358,6 +407,9 @@ return screen:new { submenu("Display", DisplaySettings) submenu("Input Method", InputSettings) + section("USB") + submenu("Storage", MassStorageSettings) + section("System") submenu("Database", DatabaseSettings) submenu("Firmware", FirmwareSettings) diff --git a/lua/widgets.lua b/lua/widgets.lua index b9588edb..fa991758 100644 --- a/lua/widgets.lua +++ b/lua/widgets.lua @@ -7,6 +7,20 @@ local styles = require("styles") local database = require("database") local theme = require("theme") +local img = { + db = lvgl.ImgData("//lua/img/db.png"), + chg = lvgl.ImgData("//lua/img/bat/chg.png"), + bat_100 = lvgl.ImgData("//lua/img/bat/100.png"), + bat_80 = lvgl.ImgData("//lua/img/bat/80.png"), + bat_60 = lvgl.ImgData("//lua/img/bat/60.png"), + bat_40 = lvgl.ImgData("//lua/img/bat/40.png"), + bat_20 = lvgl.ImgData("//lua/img/bat/20.png"), + bat_0 = lvgl.ImgData("//lua/img/bat/0.png"), + bat_0chg = lvgl.ImgData("//lua/img/bat/0chg.png"), + bt_conn = lvgl.ImgData("//lua/assets/bt_conn.png"), + bt = lvgl.ImgData("//lua/assets/bt.png") +} + local widgets = {} function widgets.MenuScreen(opts) @@ -91,16 +105,11 @@ function widgets.StatusBar(parent, opts) status_bar.title:set { text = opts.title } end - status_bar.db_updating = status_bar.root:Image { - src = "//lua/img/db.png" - } + status_bar.db_updating = status_bar.root:Image { src = img.db } theme.set_style(status_bar.db_updating, "database_indicator") - status_bar.bluetooth = status_bar.root:Image {} status_bar.battery = status_bar.root:Image {} - status_bar.chg = status_bar.battery:Image { - src = "//lua/img/bat/chg.png" - } + status_bar.chg = status_bar.battery:Image { src = img.chg } status_bar.chg:center() local is_charging = nil @@ -110,20 +119,20 @@ function widgets.StatusBar(parent, opts) if is_charging == nil or percent == nil then return end local src if percent >= 95 then - src = "100.png" + src = img.bat_100 elseif percent >= 75 then - src = "80.png" + src = img.bat_80 elseif percent >= 55 then - src = "60.png" + src = img.bat_60 elseif percent >= 35 then - src = "40.png" + src = img.bat_40 elseif percent >= 15 then - src = "20.png" + src = img.bat_20 else if is_charging then - src = "0chg.png" + src = img.bat_0chg else - src = "0.png" + src = img.bat_0 end end if is_charging then @@ -131,7 +140,7 @@ function widgets.StatusBar(parent, opts) else status_bar.chg:add_flag(lvgl.FLAG.HIDDEN) end - status_bar.battery:set_src("//lua/img/bat/" .. src) + status_bar.battery:set_src(src) end status_bar.bindings = { @@ -159,9 +168,9 @@ function widgets.StatusBar(parent, opts) end), bluetooth.connected:bind(function(connected) if connected then - status_bar.bluetooth:set_src("//lua/assets/bt_conn.png") + status_bar.bluetooth:set_src(img.bt_conn) else - status_bar.bluetooth:set_src("//lua/assets/bt.png") + status_bar.bluetooth:set_src(img.bt) end end), } |
