1
0
Fork 0

Replace airplane mode with a bluetooth toggle

This commit is contained in:
Riku Isokoski 2022-04-02 16:03:20 +03:00 committed by JF
parent 8f436e1d74
commit 78365548f7
14 changed files with 72 additions and 90 deletions

View file

@ -449,7 +449,7 @@ list(APPEND SOURCE_FILES
displayapp/screens/settings/SettingSetTime.cpp displayapp/screens/settings/SettingSetTime.cpp
displayapp/screens/settings/SettingChimes.cpp displayapp/screens/settings/SettingChimes.cpp
displayapp/screens/settings/SettingShakeThreshold.cpp displayapp/screens/settings/SettingShakeThreshold.cpp
displayapp/screens/settings/SettingAirplaneMode.cpp displayapp/screens/settings/SettingBluetooth.cpp
## Watch faces ## Watch faces
displayapp/icons/bg_clock.c displayapp/icons/bg_clock.c

View file

@ -237,7 +237,7 @@ namespace Pinetime {
uint8_t appMenu = 0; uint8_t appMenu = 0;
uint8_t settingsMenu = 0; uint8_t settingsMenu = 0;
/* airplaneMode is intentionally not saved with the other watch settings and initialized /* ble state is intentionally not saved with the other watch settings and initialized
* to off (false) on every boot because we always want ble to be enabled on startup * to off (false) on every boot because we always want ble to be enabled on startup
*/ */
bool bleRadioEnabled = true; bool bleRadioEnabled = true;

View file

@ -38,7 +38,7 @@ namespace Pinetime {
SettingSetTime, SettingSetTime,
SettingChimes, SettingChimes,
SettingShakeThreshold, SettingShakeThreshold,
SettingAirplaneMode, SettingBluetooth,
Error Error
}; };
} }

View file

@ -49,7 +49,7 @@
#include "displayapp/screens/settings/SettingSetTime.h" #include "displayapp/screens/settings/SettingSetTime.h"
#include "displayapp/screens/settings/SettingChimes.h" #include "displayapp/screens/settings/SettingChimes.h"
#include "displayapp/screens/settings/SettingShakeThreshold.h" #include "displayapp/screens/settings/SettingShakeThreshold.h"
#include "displayapp/screens/settings/SettingAirplaneMode.h" #include "displayapp/screens/settings/SettingBluetooth.h"
#include "libs/lv_conf.h" #include "libs/lv_conf.h"
@ -434,8 +434,8 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
currentScreen = std::make_unique<Screens::SettingShakeThreshold>(this, settingsController, motionController, *systemTask); currentScreen = std::make_unique<Screens::SettingShakeThreshold>(this, settingsController, motionController, *systemTask);
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
break; break;
case Apps::SettingAirplaneMode: case Apps::SettingBluetooth:
currentScreen = std::make_unique<Screens::SettingAirplaneMode>(this, settingsController); currentScreen = std::make_unique<Screens::SettingBluetooth>(this, settingsController);
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
break; break;
case Apps::BatteryInfo: case Apps::BatteryInfo:

View file

@ -31,7 +31,7 @@ static constexpr const char* newSymbol = "\xEF\x86\x85";
* Do not enable font compression or horizontal subpixel rendering * Do not enable font compression or horizontal subpixel rendering
* Load the file `JetBrainsMono-Bold.tff` (use the file in this repo to ensure the version matches) and specify the following range: `0x20-0x7e, 0x410-0x44f` * Load the file `JetBrainsMono-Bold.tff` (use the file in this repo to ensure the version matches) and specify the following range: `0x20-0x7e, 0x410-0x44f`
* Add a 2nd font, load the file `FontAwesome5-Solid+Brands+Regular.woff` and specify the following * Add a 2nd font, load the file `FontAwesome5-Solid+Brands+Regular.woff` and specify the following
range: `0xf293, 0xf294, 0xf244, 0xf240, 0xf242, 0xf243, 0xf241, 0xf54b, 0xf21e, 0xf1e6, 0xf54b, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf069, 0xf1fc, 0xf45d, 0xf59f, 0xf5a0, 0xf029, 0xf027, 0xf028, 0xf6a9, 0xf04b, 0xf04c, 0xf048, 0xf051, 0xf095, 0xf3dd, 0xf04d, 0xf2f2, 0xf024, 0xf252, 0xf569, 0xf201, 0xf06e, 0xf015, 0xf072` range: `0xf293, 0xf294, 0xf244, 0xf240, 0xf242, 0xf243, 0xf241, 0xf54b, 0xf21e, 0xf1e6, 0xf54b, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf069, 0xf1fc, 0xf45d, 0xf59f, 0xf5a0, 0xf029, 0xf027, 0xf028, 0xf6a9, 0xf04b, 0xf04c, 0xf048, 0xf051, 0xf095, 0xf3dd, 0xf04d, 0xf2f2, 0xf024, 0xf252, 0xf569, 0xf201, 0xf06e, 0xf015`
* Fix an error in the font conversion. * Fix an error in the font conversion.
Replace the following: Replace the following:

View file

@ -840,16 +840,6 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0xf8, 0xf, 0x80, 0xf8, 0x3e, 0x0, 0xff, 0xf0, 0xf8, 0xf, 0x80, 0xf8, 0x3e, 0x0, 0xff, 0xf0,
0x0, 0x3f, 0x80, 0x0, 0x0, 0x3f, 0x80, 0x0,
/* U+F072 "" */
0x1, 0xc0, 0x0, 0x7, 0xc0, 0x0, 0x7, 0x80,
0x0, 0xf, 0x80, 0x0, 0x1f, 0x0, 0x0, 0x1f,
0x0, 0x38, 0x3e, 0x0, 0x78, 0x7e, 0x0, 0x7f,
0xff, 0xe0, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xe7, 0xff, 0xff, 0xdf, 0xff, 0xfc,
0x3c, 0x3f, 0x0, 0x70, 0x7c, 0x0, 0x1, 0xf0,
0x0, 0x3, 0xe0, 0x0, 0x7, 0x80, 0x0, 0xf,
0x0, 0x0, 0x1c, 0x0, 0x0,
/* U+F095 "" */ /* U+F095 "" */
0x0, 0x0, 0x0, 0x0, 0x3e, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x0, 0x7, 0xf0,
0x0, 0x7f, 0x0, 0x7, 0xf0, 0x0, 0xff, 0x0, 0x0, 0x7f, 0x0, 0x7, 0xf0, 0x0, 0xff, 0x0,
@ -1230,32 +1220,31 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 3027, .adv_w = 280, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = -1}, {.bitmap_index = 3027, .adv_w = 280, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = -1},
{.bitmap_index = 3055, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 3055, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 3103, .adv_w = 360, .box_w = 23, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, {.bitmap_index = 3103, .adv_w = 360, .box_w = 23, .box_h = 15, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 3147, .adv_w = 360, .box_w = 23, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 3147, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 3208, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 3200, .adv_w = 120, .box_w = 8, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 3261, .adv_w = 120, .box_w = 8, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 3219, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 3280, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 3269, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 3330, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 3305, .adv_w = 320, .box_w = 20, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 3366, .adv_w = 320, .box_w = 20, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 3353, .adv_w = 320, .box_w = 21, .box_h = 15, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 3414, .adv_w = 320, .box_w = 21, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, {.bitmap_index = 3393, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 3454, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, {.bitmap_index = 3436, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 3497, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, {.bitmap_index = 3474, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 3535, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, {.bitmap_index = 3512, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 3573, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, {.bitmap_index = 3550, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 3611, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, {.bitmap_index = 3588, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 3649, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, {.bitmap_index = 3626, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 3687, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 3662, .adv_w = 280, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = -3},
{.bitmap_index = 3723, .adv_w = 280, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, {.bitmap_index = 3700, .adv_w = 200, .box_w = 11, .box_h = 21, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 3761, .adv_w = 200, .box_w = 11, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 3729, .adv_w = 280, .box_w = 16, .box_h = 19, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 3790, .adv_w = 280, .box_w = 16, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, {.bitmap_index = 3767, .adv_w = 400, .box_w = 25, .box_h = 21, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 3828, .adv_w = 400, .box_w = 25, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 3833, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 3894, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, {.bitmap_index = 3882, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 3943, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 3932, .adv_w = 400, .box_w = 25, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 3993, .adv_w = 400, .box_w = 25, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 3992, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 4053, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 4045, .adv_w = 360, .box_w = 23, .box_h = 21, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 4106, .adv_w = 360, .box_w = 23, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 4106, .adv_w = 360, .box_w = 22, .box_h = 20, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 4167, .adv_w = 360, .box_w = 22, .box_h = 20, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 4161, .adv_w = 360, .box_w = 22, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 4222, .adv_w = 360, .box_w = 22, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 4214, .adv_w = 320, .box_w = 20, .box_h = 15, .ofs_x = 0, .ofs_y = 0}
{.bitmap_index = 4275, .adv_w = 320, .box_w = 20, .box_h = 15, .ofs_x = 0, .ofs_y = 0}
}; };
/*--------------------- /*---------------------
@ -1264,11 +1253,10 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
static const uint16_t unicode_list_2[] = { static const uint16_t unicode_list_2[] = {
0x0, 0x14, 0x16, 0x23, 0x26, 0x27, 0x28, 0x39, 0x0, 0x14, 0x16, 0x23, 0x26, 0x27, 0x28, 0x39,
0x47, 0x4a, 0x4b, 0x4c, 0x50, 0x68, 0x6d, 0x71, 0x47, 0x4a, 0x4b, 0x4c, 0x50, 0x68, 0x6d, 0x94,
0x94, 0x128, 0x184, 0x1e5, 0x1fb, 0x200, 0x21d, 0x23f, 0x128, 0x184, 0x1e5, 0x1fb, 0x200, 0x21d, 0x23f, 0x240,
0x240, 0x241, 0x242, 0x243, 0x251, 0x292, 0x293, 0x2f1, 0x241, 0x242, 0x243, 0x251, 0x292, 0x293, 0x2f1, 0x3dc,
0x3dc, 0x3fc, 0x45c, 0x54a, 0x55f, 0x568, 0x59e, 0x59f, 0x3fc, 0x45c, 0x54a, 0x55f, 0x568, 0x59e, 0x59f, 0x6a8
0x6a8
}; };
/*Collect the unicode lists and glyph_id offsets*/ /*Collect the unicode lists and glyph_id offsets*/
@ -1284,7 +1272,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
}, },
{ {
.range_start = 61441, .range_length = 1705, .glyph_id_start = 160, .range_start = 61441, .range_length = 1705, .glyph_id_start = 160,
.unicode_list = unicode_list_2, .glyph_id_ofs_list = NULL, .list_length = 41, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY .unicode_list = unicode_list_2, .glyph_id_ofs_list = NULL, .list_length = 40, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
} }
}; };

View file

@ -2,11 +2,7 @@
#include "displayapp/screens/Symbols.h" #include "displayapp/screens/Symbols.h"
using namespace Pinetime::Applications::Screens; using namespace Pinetime::Applications::Screens;
const char* BleIcon::GetIcon(bool isRadioEnabled, bool isConnected) { const char* BleIcon::GetIcon(bool isConnected) {
if(!isRadioEnabled) {
return Symbols::airplane;
}
if (isConnected) { if (isConnected) {
return Symbols::bluetooth; return Symbols::bluetooth;
} }

View file

@ -7,7 +7,7 @@ namespace Pinetime {
namespace Screens { namespace Screens {
class BleIcon { class BleIcon {
public: public:
static const char* GetIcon(bool isRadioEnabled, bool isConnected); static const char* GetIcon(bool isConnected);
}; };
} }
} }

View file

@ -345,11 +345,10 @@ void PineTimeStyle::SetBatteryIcon() {
void PineTimeStyle::AlignIcons() { void PineTimeStyle::AlignIcons() {
bool isBleIconVisible = IsBleIconVisible(bleRadioEnabled.Get(), bleState.Get()); if (notificationState.Get() && bleState.Get()) {
if (notificationState.Get() && isBleIconVisible) {
lv_obj_align(bleIcon, sidebar, LV_ALIGN_IN_TOP_MID, 8, 25); lv_obj_align(bleIcon, sidebar, LV_ALIGN_IN_TOP_MID, 8, 25);
lv_obj_align(notificationIcon, sidebar, LV_ALIGN_IN_TOP_MID, -8, 25); lv_obj_align(notificationIcon, sidebar, LV_ALIGN_IN_TOP_MID, -8, 25);
} else if (notificationState.Get() && !isBleIconVisible) { } else if (notificationState.Get() && !bleState.Get()) {
lv_obj_align(notificationIcon, sidebar, LV_ALIGN_IN_TOP_MID, 0, 25); lv_obj_align(notificationIcon, sidebar, LV_ALIGN_IN_TOP_MID, 0, 25);
} else { } else {
lv_obj_align(bleIcon, sidebar, LV_ALIGN_IN_TOP_MID, 0, 25); lv_obj_align(bleIcon, sidebar, LV_ALIGN_IN_TOP_MID, 0, 25);
@ -375,7 +374,7 @@ void PineTimeStyle::Refresh() {
bleState = bleController.IsConnected(); bleState = bleController.IsConnected();
bleRadioEnabled = bleController.IsRadioEnabled(); bleRadioEnabled = bleController.IsRadioEnabled();
if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) { if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) {
lv_label_set_text(bleIcon, BleIcon::GetIcon(bleRadioEnabled.Get(), bleState.Get())); lv_label_set_text(bleIcon, BleIcon::GetIcon(bleState.Get()));
AlignIcons(); AlignIcons();
} }

View file

@ -44,7 +44,6 @@ namespace Pinetime {
static constexpr const char* chartLine = "\xEF\x88\x81"; static constexpr const char* chartLine = "\xEF\x88\x81";
static constexpr const char* eye = "\xEF\x81\xAE"; static constexpr const char* eye = "\xEF\x81\xAE";
static constexpr const char* home = "\xEF\x80\x95"; static constexpr const char* home = "\xEF\x80\x95";
static constexpr const char* airplane = "\xEF\x81\xB2";
// lv_font_sys_48.c // lv_font_sys_48.c
static constexpr const char* settings = "\xEE\xA4\x82"; // e902 static constexpr const char* settings = "\xEE\xA4\x82"; // e902

View file

@ -121,7 +121,7 @@ void WatchFaceDigital::Refresh() {
bleState = bleController.IsConnected(); bleState = bleController.IsConnected();
bleRadioEnabled = bleController.IsRadioEnabled(); bleRadioEnabled = bleController.IsRadioEnabled();
if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) { if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) {
lv_label_set_text(bleIcon, BleIcon::GetIcon(bleRadioEnabled.Get(), bleState.Get())); lv_label_set_text(bleIcon, BleIcon::GetIcon(bleState.Get()));
} }
lv_obj_realign(batteryIcon); lv_obj_realign(batteryIcon);
lv_obj_realign(batteryPlug); lv_obj_realign(batteryPlug);

View file

@ -1,4 +1,4 @@
#include "displayapp/screens/settings/SettingAirplaneMode.h" #include "displayapp/screens/settings/SettingBluetooth.h"
#include <lvgl/lvgl.h> #include <lvgl/lvgl.h>
#include "displayapp/DisplayApp.h" #include "displayapp/DisplayApp.h"
#include "displayapp/Messages.h" #include "displayapp/Messages.h"
@ -9,18 +9,18 @@
using namespace Pinetime::Applications::Screens; using namespace Pinetime::Applications::Screens;
namespace { namespace {
static void OnAirplaneModeEnabledEvent(lv_obj_t* obj, lv_event_t event) { static void OnBluetoothDisabledEvent(lv_obj_t* obj, lv_event_t event) {
auto* screen = static_cast<SettingAirplaneMode*>(obj->user_data); auto* screen = static_cast<SettingBluetooth*>(obj->user_data);
screen->OnAirplaneModeEnabled(obj, event); screen->OnBluetoothDisabled(obj, event);
} }
static void OnAirplaneModeDisabledEvent(lv_obj_t* obj, lv_event_t event) { static void OnBluetoothEnabledEvent(lv_obj_t* obj, lv_event_t event) {
auto* screen = static_cast<SettingAirplaneMode*>(obj->user_data); auto* screen = static_cast<SettingBluetooth*>(obj->user_data);
screen->OnAirplaneModeDisabled(obj, event); screen->OnBluetoothEnabled(obj, event);
} }
} }
SettingAirplaneMode::SettingAirplaneMode(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController) SettingBluetooth::SettingBluetooth(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController)
: Screen(app), settingsController {settingsController} { : Screen(app), settingsController {settingsController} {
lv_obj_t* container1 = lv_cont_create(lv_scr_act(), nullptr); lv_obj_t* container1 = lv_cont_create(lv_scr_act(), nullptr);
@ -36,38 +36,38 @@ SettingAirplaneMode::SettingAirplaneMode(Pinetime::Applications::DisplayApp* app
lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT); lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT);
lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr); lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr);
lv_label_set_text_static(title, "Airplane mode"); lv_label_set_text_static(title, "Bluetooth");
lv_label_set_align(title, LV_LABEL_ALIGN_CENTER); lv_label_set_align(title, LV_LABEL_ALIGN_CENTER);
lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15); lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15);
lv_obj_t* icon = lv_label_create(lv_scr_act(), nullptr); lv_obj_t* icon = lv_label_create(lv_scr_act(), nullptr);
lv_obj_set_style_local_text_color(icon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE); lv_obj_set_style_local_text_color(icon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE);
lv_label_set_text_static(icon, Symbols::airplane); lv_label_set_text_static(icon, Symbols::bluetooth);
lv_label_set_align(icon, LV_LABEL_ALIGN_CENTER); lv_label_set_align(icon, LV_LABEL_ALIGN_CENTER);
lv_obj_align(icon, title, LV_ALIGN_OUT_LEFT_MID, -10, 0); lv_obj_align(icon, title, LV_ALIGN_OUT_LEFT_MID, -10, 0);
cbEnabled = lv_checkbox_create(container1, nullptr); cbEnabled = lv_checkbox_create(container1, nullptr);
lv_checkbox_set_text(cbEnabled, " Enable"); lv_checkbox_set_text(cbEnabled, " Enabled");
cbEnabled->user_data = this; cbEnabled->user_data = this;
lv_obj_set_event_cb(cbEnabled, OnAirplaneModeEnabledEvent); lv_obj_set_event_cb(cbEnabled, OnBluetoothEnabledEvent);
SetRadioButtonStyle(cbEnabled); SetRadioButtonStyle(cbEnabled);
cbDisabled = lv_checkbox_create(container1, nullptr); cbDisabled = lv_checkbox_create(container1, nullptr);
lv_checkbox_set_text(cbDisabled, " Disable"); lv_checkbox_set_text(cbDisabled, " Disabled");
cbDisabled->user_data = this; cbDisabled->user_data = this;
lv_obj_set_event_cb(cbDisabled, OnAirplaneModeDisabledEvent); lv_obj_set_event_cb(cbDisabled, OnBluetoothDisabledEvent);
SetRadioButtonStyle(cbDisabled); SetRadioButtonStyle(cbDisabled);
if (settingsController.GetBleRadioEnabled()) { if (settingsController.GetBleRadioEnabled()) {
lv_checkbox_set_checked(cbDisabled, true); lv_checkbox_set_checked(cbEnabled, true);
priorMode = true; priorMode = true;
} else { } else {
lv_checkbox_set_checked(cbEnabled, true); lv_checkbox_set_checked(cbDisabled, true);
priorMode = false; priorMode = false;
} }
} }
SettingAirplaneMode::~SettingAirplaneMode() { SettingBluetooth::~SettingBluetooth() {
lv_obj_clean(lv_scr_act()); lv_obj_clean(lv_scr_act());
// Do not call SaveSettings - see src/components/settings/Settings.h // Do not call SaveSettings - see src/components/settings/Settings.h
if (priorMode != settingsController.GetBleRadioEnabled()) { if (priorMode != settingsController.GetBleRadioEnabled()) {
@ -75,18 +75,18 @@ SettingAirplaneMode::~SettingAirplaneMode() {
} }
} }
void SettingAirplaneMode::OnAirplaneModeEnabled(lv_obj_t* object, lv_event_t event) { void SettingBluetooth::OnBluetoothDisabled(lv_obj_t* object, lv_event_t event) {
if (event == LV_EVENT_VALUE_CHANGED) { if (event == LV_EVENT_VALUE_CHANGED) {
lv_checkbox_set_checked(cbEnabled, true); lv_checkbox_set_checked(cbEnabled, false);
lv_checkbox_set_checked(cbDisabled, false); lv_checkbox_set_checked(cbDisabled, true);
settingsController.SetBleRadioEnabled(false); settingsController.SetBleRadioEnabled(false);
} }
} }
void SettingAirplaneMode::OnAirplaneModeDisabled(lv_obj_t* object, lv_event_t event) { void SettingBluetooth::OnBluetoothEnabled(lv_obj_t* object, lv_event_t event) {
if (event == LV_EVENT_VALUE_CHANGED) { if (event == LV_EVENT_VALUE_CHANGED) {
lv_checkbox_set_checked(cbEnabled, false); lv_checkbox_set_checked(cbEnabled, true);
lv_checkbox_set_checked(cbDisabled, true); lv_checkbox_set_checked(cbDisabled, false);
settingsController.SetBleRadioEnabled(true); settingsController.SetBleRadioEnabled(true);
} }
} }

View file

@ -12,13 +12,13 @@ namespace Pinetime {
namespace Applications { namespace Applications {
namespace Screens { namespace Screens {
class SettingAirplaneMode : public Screen { class SettingBluetooth : public Screen {
public: public:
SettingAirplaneMode(DisplayApp* app, Pinetime::Controllers::Settings& settingsController); SettingBluetooth(DisplayApp* app, Pinetime::Controllers::Settings& settingsController);
~SettingAirplaneMode() override; ~SettingBluetooth() override;
void OnAirplaneModeEnabled(lv_obj_t* object, lv_event_t event); void OnBluetoothEnabled(lv_obj_t* object, lv_event_t event);
void OnAirplaneModeDisabled(lv_obj_t* object, lv_event_t event); void OnBluetoothDisabled(lv_obj_t* object, lv_event_t event);
private: private:
Controllers::Settings& settingsController; Controllers::Settings& settingsController;

View file

@ -64,7 +64,7 @@ std::unique_ptr<Screen> Settings::CreateScreen3() {
{Symbols::clock, "Chimes", Apps::SettingChimes}, {Symbols::clock, "Chimes", Apps::SettingChimes},
{Symbols::tachometer, "Shake Calib.", Apps::SettingShakeThreshold}, {Symbols::tachometer, "Shake Calib.", Apps::SettingShakeThreshold},
{Symbols::check, "Firmware", Apps::FirmwareValidation}, {Symbols::check, "Firmware", Apps::FirmwareValidation},
{Symbols::airplane, "Airplane mode", Apps::SettingAirplaneMode} {Symbols::bluetooth, "Bluetooth", Apps::SettingBluetooth}
}}; }};
return std::make_unique<Screens::List>(2, 4, app, settingsController, applications); return std::make_unique<Screens::List>(2, 4, app, settingsController, applications);