Emit the message BleRadioEnableToggle to DisplayApp only if the enable state of the radio has actually changed. (#2037)

This fixes an issue where the BLE connected logo would disappear when opening and closing the BLE setting (without changing it) while InfiniTime was already connected to a companion app.

Co-authored-by: JustScott <development@justscott.me>
This commit is contained in:
JF 2024-03-15 09:20:19 +01:00 committed by GitHub
parent 7dbb8f54c6
commit 4ca2112890
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 3 deletions

View file

@ -36,17 +36,19 @@ namespace {
SettingBluetooth::SettingBluetooth(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController) SettingBluetooth::SettingBluetooth(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController)
: app {app}, : app {app},
settings {settingsController},
checkboxList( checkboxList(
0, 0,
1, 1,
"Bluetooth", "Bluetooth",
Symbols::bluetooth, Symbols::bluetooth,
settingsController.GetBleRadioEnabled() ? 0 : 1, settingsController.GetBleRadioEnabled() ? 0 : 1,
[&settings = settingsController](uint32_t index) { [this](uint32_t index) {
const bool priorMode = settings.GetBleRadioEnabled(); const bool priorMode = settings.GetBleRadioEnabled();
const bool newMode = options[index].radioEnabled; const bool newMode = options[index].radioEnabled;
if (newMode != priorMode) { if (newMode != priorMode) {
settings.SetBleRadioEnabled(newMode); settings.SetBleRadioEnabled(newMode);
this->app->PushMessage(Pinetime::Applications::Display::Messages::BleRadioEnableToggle);
} }
}, },
CreateOptionArray()) { CreateOptionArray()) {
@ -54,6 +56,4 @@ SettingBluetooth::SettingBluetooth(Pinetime::Applications::DisplayApp* app, Pine
SettingBluetooth::~SettingBluetooth() { SettingBluetooth::~SettingBluetooth() {
lv_obj_clean(lv_scr_act()); lv_obj_clean(lv_scr_act());
// Pushing the message in the OnValueChanged function causes a freeze?
app->PushMessage(Pinetime::Applications::Display::Messages::BleRadioEnableToggle);
} }

View file

@ -20,6 +20,7 @@ namespace Pinetime {
private: private:
DisplayApp* app; DisplayApp* app;
Pinetime::Controllers::Settings& settings;
CheckboxList checkboxList; CheckboxList checkboxList;
}; };
} }