From 8baa317e7e5de0e8358b9a604a96620ed24b3bf8 Mon Sep 17 00:00:00 2001 From: Riku Isokoski Date: Thu, 23 Feb 2023 20:00:58 +0200 Subject: date: Remove date lib DateTimeController can provide everything we need. --- .../screens/WatchFaceCasioStyleG7710.cpp | 31 ++++++++-------------- 1 file changed, 11 insertions(+), 20 deletions(-) (limited to 'src/displayapp/screens/WatchFaceCasioStyleG7710.cpp') diff --git a/src/displayapp/screens/WatchFaceCasioStyleG7710.cpp b/src/displayapp/screens/WatchFaceCasioStyleG7710.cpp index d6f66ed0..b030e3b0 100644 --- a/src/displayapp/screens/WatchFaceCasioStyleG7710.cpp +++ b/src/displayapp/screens/WatchFaceCasioStyleG7710.cpp @@ -1,6 +1,5 @@ #include "displayapp/screens/WatchFaceCasioStyleG7710.h" -#include #include #include #include "displayapp/screens/BatteryIcon.h" @@ -225,19 +224,14 @@ void WatchFaceCasioStyleG7710::Refresh() { currentDateTime = dateTimeController.CurrentDateTime(); if (currentDateTime.IsUpdated()) { - auto newDateTime = currentDateTime.Get(); + auto hour = dateTimeController.Hours(); + auto minute = dateTimeController.Minutes(); + auto year = dateTimeController.Year(); + auto month = dateTimeController.Month(); + auto dayOfWeek = dateTimeController.DayOfWeek(); + auto day = dateTimeController.Day(); + auto dayOfYear = dateTimeController.DayOfYear(); - auto dp = date::floor(newDateTime); - auto time = date::make_time(newDateTime - dp); - auto yearMonthDay = date::year_month_day(dp); - - auto year = static_cast(yearMonthDay.year()); - auto month = static_cast(static_cast(yearMonthDay.month())); - auto day = static_cast(yearMonthDay.day()); - auto dayOfWeek = static_cast(date::weekday(yearMonthDay).iso_encoding()); - - uint8_t hour = time.hours().count(); - uint8_t minute = time.minutes().count(); auto weekNumberFormat = "%V"; if (displayedHour != hour || displayedMinute != minute) { @@ -278,22 +272,19 @@ void WatchFaceCasioStyleG7710::Refresh() { // first day of week 1; days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday] } - uint8_t weekNumber; - uint16_t dayOfYearNumber, daysTillEndOfYearNumber; - time_t ttTime = std::chrono::system_clock::to_time_t(std::chrono::time_point_cast(currentDateTime.Get())); tm* tmTime = std::localtime(&ttTime); - dayOfYearNumber = tmTime->tm_yday + 1; // tm_yday day of year [0,365] => yday+1 - daysTillEndOfYearNumber = (yearMonthDay.year().is_leap() ? 366 : 365) - dayOfYearNumber; + int daysInCurrentYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? 366 : 365; + uint16_t daysTillEndOfYearNumber = daysInCurrentYear - dayOfYear; char buffer[8]; strftime(buffer, 8, weekNumberFormat, tmTime); - weekNumber = atoi(buffer); + uint8_t weekNumber = atoi(buffer); lv_label_set_text_fmt(label_day_of_week, "%s", dateTimeController.DayOfWeekShortToString()); - lv_label_set_text_fmt(label_day_of_year, "%3d-%3d", dayOfYearNumber, daysTillEndOfYearNumber); + lv_label_set_text_fmt(label_day_of_year, "%3d-%3d", dayOfYear, daysTillEndOfYearNumber); lv_label_set_text_fmt(label_week_number, "WK%02d", weekNumber); lv_obj_realign(label_day_of_week); -- cgit v1.2.3-70-g09d2