WatchFaceTerminal: Simplify time update check
This commit is contained in:
parent
d251a47828
commit
56fe2e4c43
|
@ -104,45 +104,33 @@ void WatchFaceTerminal::Refresh() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
currentDateTime = dateTimeController.CurrentDateTime();
|
currentDateTime = std::chrono::time_point_cast<std::chrono::seconds>(dateTimeController.CurrentDateTime());
|
||||||
|
|
||||||
if (currentDateTime.IsUpdated()) {
|
if (currentDateTime.IsUpdated()) {
|
||||||
auto hour = dateTimeController.Hours();
|
uint8_t hour = dateTimeController.Hours();
|
||||||
auto minute = dateTimeController.Minutes();
|
uint8_t minute = dateTimeController.Minutes();
|
||||||
auto second = dateTimeController.Seconds();
|
uint8_t second = dateTimeController.Seconds();
|
||||||
auto year = dateTimeController.Year();
|
|
||||||
auto month = dateTimeController.Month();
|
|
||||||
auto dayOfWeek = dateTimeController.DayOfWeek();
|
|
||||||
auto day = dateTimeController.Day();
|
|
||||||
|
|
||||||
if (displayedHour != hour || displayedMinute != minute || displayedSecond != second) {
|
if (settingsController.GetClockType() == Controllers::Settings::ClockType::H12) {
|
||||||
displayedHour = hour;
|
char ampmChar[3] = "AM";
|
||||||
displayedMinute = minute;
|
if (hour == 0) {
|
||||||
displayedSecond = second;
|
hour = 12;
|
||||||
|
} else if (hour == 12) {
|
||||||
if (settingsController.GetClockType() == Controllers::Settings::ClockType::H12) {
|
ampmChar[0] = 'P';
|
||||||
char ampmChar[3] = "AM";
|
} else if (hour > 12) {
|
||||||
if (hour == 0) {
|
hour = hour - 12;
|
||||||
hour = 12;
|
ampmChar[0] = 'P';
|
||||||
} else if (hour == 12) {
|
|
||||||
ampmChar[0] = 'P';
|
|
||||||
} else if (hour > 12) {
|
|
||||||
hour = hour - 12;
|
|
||||||
ampmChar[0] = 'P';
|
|
||||||
}
|
|
||||||
lv_label_set_text_fmt(label_time, "[TIME]#11cc55 %02d:%02d:%02d %s#", hour, minute, second, ampmChar);
|
|
||||||
} else {
|
|
||||||
lv_label_set_text_fmt(label_time, "[TIME]#11cc55 %02d:%02d:%02d", hour, minute, second);
|
|
||||||
}
|
}
|
||||||
|
lv_label_set_text_fmt(label_time, "[TIME]#11cc55 %02d:%02d:%02d %s#", hour, minute, second, ampmChar);
|
||||||
|
} else {
|
||||||
|
lv_label_set_text_fmt(label_time, "[TIME]#11cc55 %02d:%02d:%02d", hour, minute, second);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((year != currentYear) || (month != currentMonth) || (dayOfWeek != currentDayOfWeek) || (day != currentDay)) {
|
currentDate = std::chrono::time_point_cast<days>(currentDateTime.Get());
|
||||||
|
if (currentDate.IsUpdated()) {
|
||||||
|
uint16_t year = dateTimeController.Year();
|
||||||
|
Controllers::DateTime::Months month = dateTimeController.Month();
|
||||||
|
uint8_t day = dateTimeController.Day();
|
||||||
lv_label_set_text_fmt(label_date, "[DATE]#007fff %04d-%02d-%02d#", short(year), char(month), char(day));
|
lv_label_set_text_fmt(label_date, "[DATE]#007fff %04d-%02d-%02d#", short(year), char(month), char(day));
|
||||||
|
|
||||||
currentYear = year;
|
|
||||||
currentMonth = month;
|
|
||||||
currentDayOfWeek = dayOfWeek;
|
|
||||||
currentDay = day;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,25 +35,18 @@ namespace Pinetime {
|
||||||
void Refresh() override;
|
void Refresh() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint8_t displayedHour = -1;
|
|
||||||
uint8_t displayedMinute = -1;
|
|
||||||
uint8_t displayedSecond = -1;
|
|
||||||
|
|
||||||
uint16_t currentYear = 1970;
|
|
||||||
Pinetime::Controllers::DateTime::Months currentMonth = Pinetime::Controllers::DateTime::Months::Unknown;
|
|
||||||
Pinetime::Controllers::DateTime::Days currentDayOfWeek = Pinetime::Controllers::DateTime::Days::Unknown;
|
|
||||||
uint8_t currentDay = 0;
|
|
||||||
|
|
||||||
Utility::DirtyValue<int> batteryPercentRemaining {};
|
Utility::DirtyValue<int> batteryPercentRemaining {};
|
||||||
Utility::DirtyValue<bool> powerPresent {};
|
Utility::DirtyValue<bool> powerPresent {};
|
||||||
Utility::DirtyValue<bool> bleState {};
|
Utility::DirtyValue<bool> bleState {};
|
||||||
Utility::DirtyValue<bool> bleRadioEnabled {};
|
Utility::DirtyValue<bool> bleRadioEnabled {};
|
||||||
Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds>> currentDateTime {};
|
Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds>> currentDateTime {};
|
||||||
Utility::DirtyValue<bool> motionSensorOk {};
|
Utility::DirtyValue<bool> motionSensorOk {};
|
||||||
Utility::DirtyValue<uint32_t> stepCount {};
|
Utility::DirtyValue<uint32_t> stepCount {};
|
||||||
Utility::DirtyValue<uint8_t> heartbeat {};
|
Utility::DirtyValue<uint8_t> heartbeat {};
|
||||||
Utility::DirtyValue<bool> heartbeatRunning {};
|
Utility::DirtyValue<bool> heartbeatRunning {};
|
||||||
Utility::DirtyValue<bool> notificationState {};
|
Utility::DirtyValue<bool> notificationState {};
|
||||||
|
using days = std::chrono::duration<int32_t, std::ratio<86400>>; // TODO: days is standard in c++20
|
||||||
|
Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, days>> currentDate;
|
||||||
|
|
||||||
lv_obj_t* label_time;
|
lv_obj_t* label_time;
|
||||||
lv_obj_t* label_date;
|
lv_obj_t* label_date;
|
||||||
|
|
Loading…
Reference in a new issue