diff options
Diffstat (limited to 'src/DisplayApp/Screens')
-rw-r--r-- | src/DisplayApp/Screens/BatteryIcon.cpp | 62 | ||||
-rw-r--r-- | src/DisplayApp/Screens/BatteryIcon.h | 15 | ||||
-rw-r--r-- | src/DisplayApp/Screens/BleIcon.cpp | 12 | ||||
-rw-r--r-- | src/DisplayApp/Screens/BleIcon.h | 14 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Clock.cpp | 60 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Clock.h | 3 |
6 files changed, 143 insertions, 23 deletions
diff --git a/src/DisplayApp/Screens/BatteryIcon.cpp b/src/DisplayApp/Screens/BatteryIcon.cpp new file mode 100644 index 00000000..575aa092 --- /dev/null +++ b/src/DisplayApp/Screens/BatteryIcon.cpp @@ -0,0 +1,62 @@ +#include "BatteryIcon.h" + +using namespace Pinetime::Applications::Screens; + + +extern lv_img_dsc_t os_battery_error; +extern lv_img_dsc_t os_batterycharging_100; +extern lv_img_dsc_t os_batterycharging_090; +extern lv_img_dsc_t os_batterycharging_080; +extern lv_img_dsc_t os_batterycharging_070; +extern lv_img_dsc_t os_batterycharging_060; +extern lv_img_dsc_t os_batterycharging_050; +extern lv_img_dsc_t os_batterycharging_040; +extern lv_img_dsc_t os_batterycharging_030; +extern lv_img_dsc_t os_batterycharging_020; +extern lv_img_dsc_t os_batterycharging_010; +extern lv_img_dsc_t os_batterycharging_005; + +extern lv_img_dsc_t os_battery_100; +extern lv_img_dsc_t os_battery_090; +extern lv_img_dsc_t os_battery_080; +extern lv_img_dsc_t os_battery_070; +extern lv_img_dsc_t os_battery_060; +extern lv_img_dsc_t os_battery_050; +extern lv_img_dsc_t os_battery_040; +extern lv_img_dsc_t os_battery_030; +extern lv_img_dsc_t os_battery_020; +extern lv_img_dsc_t os_battery_010; +extern lv_img_dsc_t os_battery_005; + + +lv_img_dsc_t *BatteryIcon::GetIcon(bool isCharging, float batteryPercent) { + if(isCharging) { + if(batteryPercent > 90.0f) return &os_batterycharging_100; + else if(batteryPercent > 80.0f) return &os_batterycharging_090; + else if(batteryPercent > 70.0f) return &os_batterycharging_080; + else if(batteryPercent > 60.0f) return &os_batterycharging_070; + else if(batteryPercent > 50.0f) return &os_batterycharging_060; + else if(batteryPercent > 40.0f) return &os_batterycharging_050; + else if(batteryPercent > 30.0f) return &os_batterycharging_040; + else if(batteryPercent > 20.0f) return &os_batterycharging_030; + else if(batteryPercent > 10.0f) return &os_batterycharging_020; + else if(batteryPercent > 5.0f) return &os_batterycharging_010; + else return &os_batterycharging_005; + } else { + if(batteryPercent > 90.0f) return &os_battery_100; + else if(batteryPercent > 80.0f) return &os_battery_090; + else if(batteryPercent > 70.0f) return &os_battery_080; + else if(batteryPercent > 60.0f) return &os_battery_070; + else if(batteryPercent > 50.0f) return &os_battery_060; + else if(batteryPercent > 40.0f) return &os_battery_050; + else if(batteryPercent > 30.0f) return &os_battery_040; + else if(batteryPercent > 20.0f) return &os_battery_030; + else if(batteryPercent > 10.0f) return &os_battery_020; + else if(batteryPercent > 5.0f) return &os_battery_010; + else return &os_battery_005; + } +} + +lv_img_dsc_t *BatteryIcon::GetUnknownIcon() { + return &os_battery_error; +} diff --git a/src/DisplayApp/Screens/BatteryIcon.h b/src/DisplayApp/Screens/BatteryIcon.h new file mode 100644 index 00000000..4e2a3a03 --- /dev/null +++ b/src/DisplayApp/Screens/BatteryIcon.h @@ -0,0 +1,15 @@ +#pragma once + +#include <libs/lvgl/src/lv_draw/lv_img_decoder.h> + +namespace Pinetime { + namespace Applications { + namespace Screens { + class BatteryIcon { + public: + static lv_img_dsc_t* GetUnknownIcon(); + static lv_img_dsc_t* GetIcon(bool isCharging, float batteryPercent); + }; + } + } +}
\ No newline at end of file diff --git a/src/DisplayApp/Screens/BleIcon.cpp b/src/DisplayApp/Screens/BleIcon.cpp new file mode 100644 index 00000000..4109b3fd --- /dev/null +++ b/src/DisplayApp/Screens/BleIcon.cpp @@ -0,0 +1,12 @@ +#include "BleIcon.h" + +using namespace Pinetime::Applications::Screens; + + +extern lv_img_dsc_t os_bt_connected; +extern lv_img_dsc_t os_bt_disconnected; + +lv_img_dsc_t *BleIcon::GetIcon(bool isConnected) { + if(isConnected) return &os_bt_connected; + else return &os_bt_disconnected; +}
\ No newline at end of file diff --git a/src/DisplayApp/Screens/BleIcon.h b/src/DisplayApp/Screens/BleIcon.h new file mode 100644 index 00000000..ee090f96 --- /dev/null +++ b/src/DisplayApp/Screens/BleIcon.h @@ -0,0 +1,14 @@ +#pragma once + +#include <libs/lvgl/src/lv_draw/lv_img_decoder.h> + +namespace Pinetime { + namespace Applications { + namespace Screens { + class BleIcon { + public: + static lv_img_dsc_t* GetIcon(bool isConnected); + }; + } + } +}
\ No newline at end of file diff --git a/src/DisplayApp/Screens/Clock.cpp b/src/DisplayApp/Screens/Clock.cpp index abc4d627..00590777 100644 --- a/src/DisplayApp/Screens/Clock.cpp +++ b/src/DisplayApp/Screens/Clock.cpp @@ -5,11 +5,14 @@ #include <libs/lvgl/lvgl.h> #include "Clock.h" #include "../DisplayApp.h" +#include "BatteryIcon.h" +#include "BleIcon.h" using namespace Pinetime::Applications::Screens; extern lv_font_t jetbrains_mono_extrabold_compressed; extern lv_font_t jetbrains_mono_bold_20; + static void event_handler(lv_obj_t * obj, lv_event_t event) { Clock* screen = static_cast<Clock *>(obj->user_data); screen->OnObjectEvent(obj, event); @@ -26,30 +29,47 @@ Clock::Clock(DisplayApp* app, displayedChar[3] = 0; displayedChar[4] = 0; - label_battery = lv_label_create(lv_scr_act(), NULL); - lv_obj_align(label_battery, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, -80, 0); + batteryIcon = lv_img_create(lv_scr_act(), NULL); + lv_img_set_src(batteryIcon, BatteryIcon::GetUnknownIcon()); + lv_obj_align(batteryIcon, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, 0, 0); + + bleIcon = lv_img_create(lv_scr_act(), NULL); + lv_img_set_src(bleIcon, BleIcon::GetIcon(false)); + lv_obj_align(bleIcon, batteryIcon, LV_ALIGN_OUT_LEFT_MID, 0, 0); + +// label_battery = lv_label_create(lv_scr_act(), NULL); +// lv_obj_align(label_battery, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, -80, 0); + +// labelStyle = const_cast<lv_style_t *>(lv_label_get_style(label_battery, LV_LABEL_STYLE_MAIN)); +// labelStyle->text.font = &jetbrains_mono_bold_20; +// +// lv_style_copy(&labelBigStyle, labelStyle); +// labelBigStyle.text.font = &jetbrains_mono_extrabold_compressed; +// +// lv_label_set_style(label_battery, LV_LABEL_STYLE_MAIN, labelStyle); + +// label_ble = lv_label_create(lv_scr_act(), NULL); - labelStyle = const_cast<lv_style_t *>(lv_label_get_style(label_battery, LV_LABEL_STYLE_MAIN)); + +// lv_label_set_style(label_ble, LV_LABEL_STYLE_MAIN, labelStyle); +// lv_obj_align(label_ble, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 10, 0); + + label_date = lv_label_create(lv_scr_act(), NULL); + + lv_obj_align(label_date, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 60); + + labelStyle = const_cast<lv_style_t *>(lv_label_get_style(label_date, LV_LABEL_STYLE_MAIN)); labelStyle->text.font = &jetbrains_mono_bold_20; lv_style_copy(&labelBigStyle, labelStyle); labelBigStyle.text.font = &jetbrains_mono_extrabold_compressed; - lv_label_set_style(label_battery, LV_LABEL_STYLE_MAIN, labelStyle); - - label_ble = lv_label_create(lv_scr_act(), NULL); - lv_label_set_style(label_ble, LV_LABEL_STYLE_MAIN, labelStyle); - lv_obj_align(label_ble, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 10, 0); + lv_label_set_style(label_date, LV_LABEL_STYLE_MAIN, labelStyle); label_time = lv_label_create(lv_scr_act(), NULL); lv_label_set_style(label_time, LV_LABEL_STYLE_MAIN, &labelBigStyle); lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 0); - - label_date = lv_label_create(lv_scr_act(), NULL); - lv_label_set_style(label_date, LV_LABEL_STYLE_MAIN, labelStyle); - lv_obj_align(label_date, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 60); - backgroundLabel = lv_label_create(lv_scr_act(), NULL); backgroundLabel->user_data = this; lv_label_set_style(backgroundLabel, LV_LABEL_STYLE_MAIN, labelStyle); @@ -68,22 +88,16 @@ Clock::~Clock() { bool Clock::Refresh() { batteryPercentRemaining = batteryController.PercentRemaining(); if (batteryPercentRemaining.IsUpdated()) { - char batteryChar[11]; - auto newBatteryValue = batteryPercentRemaining.Get(); - newBatteryValue = (newBatteryValue > 100) ? 100 : newBatteryValue; - newBatteryValue = (newBatteryValue < 0) ? 0 : newBatteryValue; - - sprintf(batteryChar, "BAT: %d%%", newBatteryValue); - lv_label_set_text(label_battery, batteryChar); + auto batteryPercent = batteryPercentRemaining.Get(); + lv_img_set_src(batteryIcon, BatteryIcon::GetIcon(batteryController.IsCharging() || batteryController.IsPowerPresent(), batteryPercent)); } bleState = bleController.IsConnected(); if (bleState.IsUpdated()) { if(bleState.Get() == true) { - lv_obj_set_hidden(label_ble, false); - lv_label_set_text(label_ble, "BLE"); + lv_img_set_src(bleIcon, BleIcon::GetIcon(true)); } else { - lv_obj_set_hidden(label_ble, true); + lv_img_set_src(bleIcon, BleIcon::GetIcon(false)); } } diff --git a/src/DisplayApp/Screens/Clock.h b/src/DisplayApp/Screens/Clock.h index d14595b0..7c4a09df 100644 --- a/src/DisplayApp/Screens/Clock.h +++ b/src/DisplayApp/Screens/Clock.h @@ -76,6 +76,9 @@ namespace Pinetime { lv_obj_t* label_version; lv_obj_t* backgroundLabel; + lv_obj_t * batteryIcon; + lv_obj_t * bleIcon; + Controllers::DateTime& dateTimeController; Controllers::Battery& batteryController; Controllers::Ble& bleController; |