summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorcooljqln <cooljqln@noreply.codeberg.org>2025-02-03 23:45:28 +0000
committercooljqln <cooljqln@noreply.codeberg.org>2025-02-03 23:45:28 +0000
commit38cb3d8219da0d26077d238c3e633f75a11055a3 (patch)
tree7279ecbf1be6e7384e3a90c15153863ae1cf994f /lua
parent28846b989b75ca6fe513462c209ce95bce2a46b7 (diff)
parent546daf71c1b04284848c4b5edfbaa3c5b4a284f4 (diff)
downloadtangara-fw-38cb3d8219da0d26077d238c3e633f75a11055a3.tar.gz
Merge pull request 'Add optional support for adjusting volume while locked' (#230) from teisenbe/tangara-fw:locked_input into main
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/230
Diffstat (limited to 'lua')
-rw-r--r--lua/settings.lua78
1 files changed, 46 insertions, 32 deletions
diff --git a/lua/settings.lua b/lua/settings.lua
index 4f1e36f8..74bd2103 100644
--- a/lua/settings.lua
+++ b/lua/settings.lua
@@ -385,44 +385,58 @@ settings.InputSettings = SettingsScreen:new {
create_ui = function(self)
SettingsScreen.create_ui(self)
- theme.set_subject(self.content:Label {
- text = "Control scheme",
- }, "settings_title")
+ -- Use the control scheme enum lists to generate the relevant dropdowns
+ local make_scheme_control = function(self, scheme_list, control_scheme)
+ local option_to_scheme = {}
+ local scheme_to_option = {}
+ local option_idx = 0
+ local options = ""
+
+ -- Sort the keys to order the dropdowns the same as the enums
+ keys = {}
+ for i in pairs(scheme_list) do table.insert(keys, i) end
+ table.sort(keys)
+
+ for i, k in pairs(keys) do
+ v = scheme_list[k]
+
+ option_to_scheme[option_idx] = k
+ scheme_to_option[k] = option_idx
+ if option_idx > 0 then
+ options = options .. "\n"
+ end
+ options = options .. v
+ option_idx = option_idx + 1
+ end
- local schemes = controls.schemes()
- local option_to_scheme = {}
- local scheme_to_option = {}
+ local controls_chooser = self.content:Dropdown {
+ options = options,
+ symbol = img.chevron,
+ }
- local option_idx = 0
- local options = ""
+ self.bindings = self.bindings + {
+ control_scheme:bind(function(s)
+ local option = scheme_to_option[s]
+ controls_chooser:set({ selected = option })
+ end)
+ }
- for i, v in pairs(schemes) do
- option_to_scheme[option_idx] = i
- scheme_to_option[i] = option_idx
- if option_idx > 0 then
- options = options .. "\n"
- end
- options = options .. v
- option_idx = option_idx + 1
+ controls_chooser:onevent(lvgl.EVENT.VALUE_CHANGED, function()
+ local option = controls_chooser:get('selected')
+ local scheme = option_to_scheme[option]
+ control_scheme:set(scheme)
+ end)
end
- local controls_chooser = self.content:Dropdown {
- options = options,
- symbol = img.chevron,
- }
-
- self.bindings = self.bindings + {
- controls.scheme:bind(function(s)
- local option = scheme_to_option[s]
- controls_chooser:set({ selected = option })
- end)
- }
+ theme.set_subject(self.content:Label {
+ text = "Control scheme",
+ }, "settings_title")
+ make_scheme_control(self, controls.schemes(), controls.scheme)
- controls_chooser:onevent(lvgl.EVENT.VALUE_CHANGED, function()
- local option = controls_chooser:get('selected')
- local scheme = option_to_scheme[option]
- controls.scheme:set(scheme)
- end)
+ theme.set_subject(self.content:Label {
+ text = "Control scheme when locked",
+ }, "settings_title")
+ make_scheme_control(self, controls.locked_schemes(), controls.locked_scheme)
controls_chooser:focus()