diff options
| author | Michele Bini <michele.bini@gmail.com> | 2022-03-29 23:17:33 (GMT) |
|---|---|---|
| committer | Michele Bini <michele.bini@gmail.com> | 2022-03-29 23:17:33 (GMT) |
| commit | 5c1de7b675743496bf1c943ebc5b16f93938c6f4 (patch) | |
| tree | 7e774fc883aa2af9676a323f6429ead99d9e2232 | |
| parent | 20c50a32535a26257009d11a72bf884fec7df482 (diff) | |
Improved digital display, simplified AM/PM indication
| -rw-r--r-- | src/displayapp/screens/WatchFaceDigital.cpp | 45 | ||||
| -rw-r--r-- | src/displayapp/screens/WatchFaceDigital.h | 4 |
2 files changed, 33 insertions, 16 deletions
diff --git a/src/displayapp/screens/WatchFaceDigital.cpp b/src/displayapp/screens/WatchFaceDigital.cpp index 4bb465b..68c6acb 100644 --- a/src/displayapp/screens/WatchFaceDigital.cpp +++ b/src/displayapp/screens/WatchFaceDigital.cpp @@ -61,18 +61,30 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, label_time = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_font(label_time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont3); - lv_label_set_text_fmt(label_time, "??:??"); + lv_label_set_text_fmt(label_time, hhmm_label_text); lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + lv_label_set_long_mode(label_time, LV_LABEL_LONG_CROP); + lv_label_set_align(label_time, LV_LABEL_ALIGN_RIGHT); +#if 0 label_time_sec = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(label_time_sec, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFFFFFF)); lv_obj_set_style_local_text_font(label_time_sec, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont2); lv_label_set_text_fmt(label_time_sec, ":??"); lv_obj_align(label_time_sec, label_time, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 0); +#else + label_time_sec = lv_label_create(lv_scr_act(), nullptr); + // lv_obj_set_style_local_text_color(label_time_sec, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFFFFFF)); + lv_obj_set_style_local_text_font(label_time_sec, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont15); + lv_label_set_text_fmt(label_time_sec, ":??"); + lv_obj_align(label_time_sec, label_time, LV_ALIGN_OUT_RIGHT_BOTTOM, 0, 0); // -2 +#endif - label_time_ampm = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(label_time_ampm, ""); - lv_obj_align(label_time_ampm, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, -30, -55); + label_time_pm = lv_label_create(lv_scr_act(), nullptr); + lv_label_set_text_static(label_time_pm, "PM"); + lv_obj_set_style_local_text_font(label_time_pm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont1); + lv_obj_align(label_time_pm, label_time, LV_ALIGN_OUT_LEFT_TOP, 0, 0); + lv_obj_set_hidden(label_time_pm, 1); label_date_dd = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(label_date_dd, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); @@ -184,24 +196,27 @@ void WatchFaceDigital::Refresh() { if (displayedHour != hour || displayedMinute != minute) { displayedHour = hour; displayedMinute = minute; - + bool hide_pm = true; + uint8_t h0; if (settingsController.GetClockType() == Controllers::Settings::ClockType::H12) { - char ampmChar[3] = "AM"; if (hour == 0) { hour = 12; } else if (hour == 12) { - ampmChar[0] = 'P'; + hide_pm = false; } else if (hour > 12) { - hour = hour - 12; - ampmChar[0] = 'P'; + hour -= 12; + hide_pm = false; } - lv_label_set_text(label_time_ampm, ampmChar); - lv_label_set_text_fmt(label_time, "%2d:%02d", hour, minute); - // lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, 0, 0); + h0 = hour < 10 ? ' ' : '0' + (hour-10); } else { - lv_label_set_text_fmt(label_time, "%02d:%02d", hour, minute); - // lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + h0 = '0' + (hour / 10); } + hhmm_label_text[0] = h0; + hhmm_label_text[1] = '0' + (hour%10); + hhmm_label_text[3] = '0' + (minute / 10); + hhmm_label_text[4] = '0' + (minute % 10); + lv_label_set_text_static(label_time, hhmm_label_text); + lv_obj_set_hidden(label_time_pm, hide_pm); } if (displayedSecond != second) { @@ -218,7 +233,7 @@ void WatchFaceDigital::Refresh() { // label_date, "%s %s %d %d", dateTimeController.DayOfWeekShortToString(), dateTimeController.MonthShortToString(), day, year); // } // lv_obj_realign(label_date); - lv_label_set_text_static(label_date, ""); + // lv_label_set_text_static(label_date, ""); lv_label_set_text_fmt(label_date_dd, "%d", day); // should rather extract info from the timestamp lv_label_set_text_static(label_date_dow, dateTimeController.DayOfWeekShortToString()); diff --git a/src/displayapp/screens/WatchFaceDigital.h b/src/displayapp/screens/WatchFaceDigital.h index 12ffe0b..8382996 100644 --- a/src/displayapp/screens/WatchFaceDigital.h +++ b/src/displayapp/screens/WatchFaceDigital.h @@ -46,6 +46,8 @@ namespace Pinetime { Controllers::DateTime::Days currentDayOfWeek = Pinetime::Controllers::DateTime::Days::Unknown; uint8_t currentDay = 0; + char hhmm_label_text[6] = { '?', '?', ':', '?', '?', 0 }; + DirtyValue<uint8_t> batteryPercentRemaining {}; DirtyValue<bool> powerPresent {}; DirtyValue<bool> bleState {}; @@ -57,7 +59,7 @@ namespace Pinetime { lv_obj_t* label_temp; lv_obj_t* label_time; lv_obj_t* label_time_sec; - lv_obj_t* label_time_ampm; + lv_obj_t* label_time_pm; lv_obj_t* label_date_dd; lv_obj_t* label_date_dow; lv_obj_t* label_date_mmm; |
