aboutsummaryrefslogtreecommitdiffstats
path: root/src/displayapp/screens/WatchFaceCasioStyleG7710.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/displayapp/screens/WatchFaceCasioStyleG7710.cpp')
-rw-r--r--src/displayapp/screens/WatchFaceCasioStyleG7710.cpp31
1 files changed, 11 insertions, 20 deletions
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 <date/date.h>
#include <lvgl/lvgl.h>
#include <cstdio>
#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<date::days>(newDateTime);
- auto time = date::make_time(newDateTime - dp);
- auto yearMonthDay = date::year_month_day(dp);
-
- auto year = static_cast<int>(yearMonthDay.year());
- auto month = static_cast<Pinetime::Controllers::DateTime::Months>(static_cast<unsigned>(yearMonthDay.month()));
- auto day = static_cast<unsigned>(yearMonthDay.day());
- auto dayOfWeek = static_cast<Pinetime::Controllers::DateTime::Days>(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<std::chrono::system_clock::duration>(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);