@@ -156,65 +156,25 @@ void WatchFaceTerminal::Refresh() {
156156 uint8_t minute = time.minutes ().count ();
157157 uint8_t second = time.seconds ().count ();
158158
159- char minutesChar[6 ];
160- sprintf (minutesChar, " %02d" , static_cast <int >(minute));
161-
162- char hoursChar[8 ];
163-
164- char ampmChar[3 ];
165- if (settingsController.GetClockType () == Controllers::Settings::ClockType::H24) {
166- sprintf (hoursChar, " %02d" , hour);
167- } else {
168- if (hour == 0 && hour != 12 ) {
169- hour = 12 ;
170- sprintf (ampmChar, " AM" );
171- } else if (hour == 12 && hour != 0 ) {
172- hour = 12 ;
173- sprintf (ampmChar, " PM" );
174- } else if (hour < 12 && hour != 0 ) {
175- sprintf (ampmChar, " AM" );
176- } else if (hour > 12 && hour != 0 ) {
177- hour = hour - 12 ;
178- sprintf (ampmChar, " PM" );
179- }
180- sprintf (hoursChar, " %02d" , hour);
181- }
182-
183- char secondsChar[5 ];
184- sprintf (secondsChar, " %02d" , static_cast <int >(second));
185-
186- auto batteryValue = static_cast <uint8_t >(batteryController.PercentRemaining ());
187- char battStr[24 ];
188- sprintf (battStr, " [BATT]#387b54 %d%\%#" , batteryValue);
189- lv_label_set_text (batteryPercent, battStr);
190-
191- if (hoursChar[0 ] != displayedChar[0 ] || hoursChar[1 ] != displayedChar[1 ] || minutesChar[0 ] != displayedChar[2 ] ||
192- minutesChar[1 ] != displayedChar[3 ] || secondsChar[0 ] != displayedChar[4 ] || secondsChar[1 ] != displayedChar[5 ]) {
193- displayedChar[0 ] = hoursChar[0 ];
194- displayedChar[1 ] = hoursChar[1 ];
195- displayedChar[2 ] = minutesChar[0 ];
196- displayedChar[3 ] = minutesChar[1 ];
197- displayedChar[4 ] = secondsChar[0 ];
198- displayedChar[5 ] = secondsChar[1 ];
159+ if (displayedHour != hour || displayedMinute != minute || displayedSecond != second) {
160+ displayedHour = hour;
161+ displayedMinute = minute;
162+ displayedSecond = second;
199163
200164 if (settingsController.GetClockType () == Controllers::Settings::ClockType::H12) {
201- if (hoursChar[0 ] == ' 0' ) {
202- hoursChar[0 ] = ' ' ;
165+ char ampmChar[3 ] = " AM" ;
166+ if (hour == 0 ) {
167+ hour = 12 ;
168+ } else if (hour == 12 ) {
169+ ampmChar[0 ] = ' P' ;
170+ } else if (hour > 12 ) {
171+ hour = hour - 12 ;
172+ ampmChar[0 ] = ' P' ;
203173 }
174+ lv_label_set_text_fmt (label_time, " [TIME]#11cc55 %02d:%02d:%02d %s#" , hour, minute, second, ampmChar);
175+ } else {
176+ lv_label_set_text_fmt (label_time, " [TIME]#11cc55 %02d:%02d:%02d" , hour, minute, second);
204177 }
205-
206- char timeStr[42 ];
207- sprintf (timeStr,
208- " [TIME]#11cc55 %c%c:%c%c:%c%c %s#" ,
209- hoursChar[0 ],
210- hoursChar[1 ],
211- minutesChar[0 ],
212- minutesChar[1 ],
213- secondsChar[0 ],
214- secondsChar[1 ],
215- ampmChar);
216-
217- lv_label_set_text (label_time, timeStr);
218178 }
219179
220180 if ((year != currentYear) || (month != currentMonth) || (dayOfWeek != currentDayOfWeek) || (day != currentDay)) {
0 commit comments