summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/settings.lua56
-rw-r--r--lua/widgets.lua16
2 files changed, 66 insertions, 6 deletions
diff --git a/lua/settings.lua b/lua/settings.lua
index 49a826af..79572ee9 100644
--- a/lua/settings.lua
+++ b/lua/settings.lua
@@ -485,6 +485,59 @@ local DatabaseSettings = SettingsScreen:new {
end
}
+local PowerSettings = SettingsScreen:new {
+ title = "Power",
+ createUi = function(self)
+ SettingsScreen.createUi(self)
+ local power = require("power")
+
+ local charge_pct = widgets.Row(self.content, "Charge").right
+ local charge_volts = widgets.Row(self.content, "Voltage").right
+ local charge_state = widgets.Row(self.content, "Status").right
+
+ self.bindings = self.bindings + {
+ power.battery_pct:bind(function(pct)
+ charge_pct:set { text = string.format("%d%%", pct) }
+ end),
+ power.battery_millivolts:bind(function(mv)
+ charge_volts:set { text = string.format("%.2fV", mv / 1000) }
+ end),
+ power.charge_state:bind(function(state)
+ charge_state:set { text = state }
+ end),
+ }
+
+ local fast_charge_container = self.content:Object {
+ flex = {
+ flex_direction = "row",
+ justify_content = "flex-start",
+ align_items = "center",
+ align_content = "flex-start",
+ },
+ w = lvgl.PCT(100),
+ h = lvgl.SIZE_CONTENT,
+ pad_bottom = 4,
+ }
+ fast_charge_container:add_style(styles.list_item)
+ fast_charge_container:Label { text = "Fast Charging", flex_grow = 1 }
+ local fast_charge_sw = fast_charge_container:Switch {}
+
+ fast_charge_sw:onevent(lvgl.EVENT.VALUE_CHANGED, function()
+ power.fast_charge:set(fast_charge_sw:enabled())
+ end)
+
+ self.bindings = self.bindings + {
+ power.fast_charge:bind(function(en)
+ if en then
+ fast_charge_sw:add_state(lvgl.STATE.CHECKED)
+ else
+ fast_charge_sw:clear_state(lvgl.STATE.CHECKED)
+ end
+ end),
+ }
+ end
+}
+
local SamdConfirmation = SettingsScreen:new {
title = "Are you sure?",
createUi = function(self)
@@ -696,6 +749,9 @@ return widgets.MenuScreen:new {
section("System")
submenu("Database", DatabaseSettings)
+ submenu("Power", PowerSettings)
+
+ section("About")
submenu("Firmware", FirmwareSettings)
submenu("Licenses", LicensesScreen)
submenu("Regulatory", RegulatoryScreen)
diff --git a/lua/widgets.lua b/lua/widgets.lua
index 78d53a57..f830390f 100644
--- a/lua/widgets.lua
+++ b/lua/widgets.lua
@@ -58,7 +58,7 @@ widgets.MenuScreen = screen:new {
end
}
-function widgets.Row(parent, left, right)
+function widgets.Row(parent, left_text, right_text)
local container = parent:Object {
flex = {
flex_direction = "row",
@@ -70,12 +70,16 @@ function widgets.Row(parent, left, right)
h = lvgl.SIZE_CONTENT
}
container:add_style(styles.list_item)
- container:Label {
- text = left,
- flex_grow = 1
+ local left = container:Label {
+ text = left_text,
+ flex_grow = 1,
+ }
+ local right = container:Label {
+ text = right_text or "",
}
- container:Label {
- text = right
+ return {
+ left = left,
+ right = right,
}
end