summaryrefslogtreecommitdiff
path: root/src/ui/ui_fsm.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-02-22 12:37:01 +1100
committerjacqueline <me@jacqueline.id.au>2024-02-22 12:37:01 +1100
commit4b2003c78a5e4270f384283f72d185cd4a40f30e (patch)
tree6db70733ece111762f5aaf178d082716d8bd702a /src/ui/ui_fsm.cpp
parent2a250855036047f4e3e37e51600276746d1c302a (diff)
downloadtangara-fw-4b2003c78a5e4270f384283f72d185cd4a40f30e.tar.gz
Make property bindings shared amongst all lua threads
Diffstat (limited to 'src/ui/ui_fsm.cpp')
-rw-r--r--src/ui/ui_fsm.cpp132
1 files changed, 65 insertions, 67 deletions
diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp
index 24145ead..e46832ba 100644
--- a/src/ui/ui_fsm.cpp
+++ b/src/ui/ui_fsm.cpp
@@ -128,29 +128,29 @@ lua::Property UiState::sPlaybackPosition{0};
lua::Property UiState::sQueuePosition{0};
lua::Property UiState::sQueueSize{0};
lua::Property UiState::sQueueRepeat{false, [](const lua::LuaValue& val) {
- if (!std::holds_alternative<bool>(val)) {
- return false;
- }
- bool new_val = std::get<bool>(val);
- sServices->track_queue().repeat(new_val);
- return true;
-}};
+ if (!std::holds_alternative<bool>(val)) {
+ return false;
+ }
+ bool new_val = std::get<bool>(val);
+ sServices->track_queue().repeat(new_val);
+ return true;
+ }};
lua::Property UiState::sQueueReplay{false, [](const lua::LuaValue& val) {
- if (!std::holds_alternative<bool>(val)) {
- return false;
- }
- bool new_val = std::get<bool>(val);
- sServices->track_queue().replay(new_val);
- return true;
-}};
+ if (!std::holds_alternative<bool>(val)) {
+ return false;
+ }
+ bool new_val = std::get<bool>(val);
+ sServices->track_queue().replay(new_val);
+ return true;
+ }};
lua::Property UiState::sQueueRandom{false, [](const lua::LuaValue& val) {
- if (!std::holds_alternative<bool>(val)) {
- return false;
- }
- bool new_val = std::get<bool>(val);
- sServices->track_queue().random(new_val);
- return true;
-}};
+ if (!std::holds_alternative<bool>(val)) {
+ return false;
+ }
+ bool new_val = std::get<bool>(val);
+ sServices->track_queue().random(new_val);
+ return true;
+ }};
lua::Property UiState::sVolumeCurrentPct{
0, [](const lua::LuaValue& val) {
@@ -442,27 +442,26 @@ void Lua::entry() {
alert_timer_callback);
sAlertContainer = lv_obj_create(sCurrentScreen->alert());
- sLua.reset(lua::LuaThread::Start(*sServices, sCurrentScreen->content()));
- sLua->bridge().AddPropertyModule("power",
- {
- {"battery_pct", &sBatteryPct},
- {"battery_millivolts", &sBatteryMv},
- {"plugged_in", &sBatteryCharging},
- });
- sLua->bridge().AddPropertyModule(
- "bluetooth", {
- {"enabled", &sBluetoothEnabled},
- {"connected", &sBluetoothConnected},
- {"paired_device", &sBluetoothPairedDevice},
- {"devices", &sBluetoothDevices},
- });
- sLua->bridge().AddPropertyModule("playback",
- {
- {"playing", &sPlaybackPlaying},
- {"track", &sPlaybackTrack},
- {"position", &sPlaybackPosition},
- });
- sLua->bridge().AddPropertyModule(
+ auto& registry = lua::Registry::instance(*sServices);
+ sLua = registry.uiThread();
+ registry.AddPropertyModule("power", {
+ {"battery_pct", &sBatteryPct},
+ {"battery_millivolts", &sBatteryMv},
+ {"plugged_in", &sBatteryCharging},
+ });
+ registry.AddPropertyModule("bluetooth",
+ {
+ {"enabled", &sBluetoothEnabled},
+ {"connected", &sBluetoothConnected},
+ {"paired_device", &sBluetoothPairedDevice},
+ {"devices", &sBluetoothDevices},
+ });
+ registry.AddPropertyModule("playback", {
+ {"playing", &sPlaybackPlaying},
+ {"track", &sPlaybackTrack},
+ {"position", &sPlaybackPosition},
+ });
+ registry.AddPropertyModule(
"queue",
{
{"next", [&](lua_State* s) { return QueueNext(s); }},
@@ -473,40 +472,39 @@ void Lua::entry() {
{"repeat_track", &sQueueRepeat},
{"random", &sQueueRandom},
});
- sLua->bridge().AddPropertyModule("volume",
- {
- {"current_pct", &sVolumeCurrentPct},
- {"current_db", &sVolumeCurrentDb},
- {"left_bias", &sVolumeLeftBias},
- {"limit_db", &sVolumeLimit},
- });
-
- sLua->bridge().AddPropertyModule("display",
- {
- {"brightness", &sDisplayBrightness},
- });
-
- sLua->bridge().AddPropertyModule("controls",
- {
- {"scheme", &sControlsScheme},
- {"scroll_sensitivity", &sScrollSensitivity},
- });
-
- sLua->bridge().AddPropertyModule(
+ registry.AddPropertyModule("volume",
+ {
+ {"current_pct", &sVolumeCurrentPct},
+ {"current_db", &sVolumeCurrentDb},
+ {"left_bias", &sVolumeLeftBias},
+ {"limit_db", &sVolumeLimit},
+ });
+
+ registry.AddPropertyModule("display",
+ {
+ {"brightness", &sDisplayBrightness},
+ });
+
+ registry.AddPropertyModule("controls",
+ {
+ {"scheme", &sControlsScheme},
+ {"scroll_sensitivity", &sScrollSensitivity},
+ });
+
+ registry.AddPropertyModule(
"backstack",
{
{"push", [&](lua_State* s) { return PushLuaScreen(s); }},
{"pop", [&](lua_State* s) { return PopLuaScreen(s); }},
});
- sLua->bridge().AddPropertyModule(
+ registry.AddPropertyModule(
"alerts", {
{"show", [&](lua_State* s) { return ShowAlert(s); }},
{"hide", [&](lua_State* s) { return HideAlert(s); }},
});
- sLua->bridge().AddPropertyModule("database",
- {
- {"updating", &sDatabaseUpdating},
- });
+ registry.AddPropertyModule("database", {
+ {"updating", &sDatabaseUpdating},
+ });
auto bt = sServices->bluetooth();
sBluetoothEnabled.Update(bt.IsEnabled());