aboutsummaryrefslogtreecommitdiffstats
path: root/src/displayapp/screens
diff options
context:
space:
mode:
Diffstat (limited to 'src/displayapp/screens')
-rw-r--r--src/displayapp/screens/StopWatch.cpp15
-rw-r--r--src/displayapp/screens/StopWatch.h2
2 files changed, 10 insertions, 7 deletions
diff --git a/src/displayapp/screens/StopWatch.cpp b/src/displayapp/screens/StopWatch.cpp
index 5d77fdcc..ef5ee6f5 100644
--- a/src/displayapp/screens/StopWatch.cpp
+++ b/src/displayapp/screens/StopWatch.cpp
@@ -57,7 +57,7 @@ StopWatch::StopWatch(System::SystemTask& systemTask, StopWatchController& stopWa
lapText = lv_label_create(lv_scr_act(), nullptr);
lv_obj_set_style_local_text_color(lapText, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, Colors::lightGray);
- lv_label_set_text_static(lapText, "\n");
+ lv_label_set_text_static(lapText, "");
lv_label_set_long_mode(lapText, LV_LABEL_LONG_BREAK);
lv_label_set_align(lapText, LV_LABEL_ALIGN_CENTER);
lv_obj_set_width(lapText, LV_HOR_RES_MAX);
@@ -170,24 +170,23 @@ void StopWatch::RenderPause() {
void StopWatch::RenderLaps() {
lv_label_set_text(lapText, "");
- for (int i = 0; i < displayedLaps; i++) {
+ for (int i = displayedLaps - 1; i >= 0; i--) {
std::optional<LapInfo> lap = stopWatchController.GetLapFromHistory(i);
if (lap) {
TimeSeparated laptime = ConvertTicksToTimeSegments(lap->timeSinceStart);
char buffer[19];
if (laptime.hours == 0) {
- snprintf(buffer, sizeof(buffer), "#%-3d %2d:%02d.%02d\n",
+ snprintf(buffer, sizeof(buffer), "\n#%-3d %2d:%02d.%02d",
lap->number, laptime.mins, laptime.secs, laptime.hundredths);
} else {
- snprintf(buffer, sizeof(buffer), "#%-3d %3d:%02d:%02d.%02d\n",
+ snprintf(buffer, sizeof(buffer), "\n#%-3d %3d:%02d:%02d.%02d",
lap->number, laptime.hours, laptime.mins, laptime.secs, laptime.hundredths);
}
lv_label_ins_text(lapText, LV_LABEL_POS_LAST, buffer);
- } else {
- lv_label_ins_text(lapText, LV_LABEL_POS_LAST, "\n");
}
}
+ lv_obj_realign(lapText);
}
void StopWatch::SetHoursVisible(bool visible) {
@@ -196,7 +195,11 @@ void StopWatch::SetHoursVisible(bool visible) {
lv_obj_set_style_local_text_font(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font);
lv_obj_set_height(time, font->line_height);
lv_obj_realign(msecTime);
+ displayedLaps = visible ? 4 : 3;
hoursVisible = visible;
+ if (stopWatchController.GetLapFromHistory(0)) {
+ RenderLaps();
+ }
}
}
diff --git a/src/displayapp/screens/StopWatch.h b/src/displayapp/screens/StopWatch.h
index dc69d5b4..51920f8b 100644
--- a/src/displayapp/screens/StopWatch.h
+++ b/src/displayapp/screens/StopWatch.h
@@ -44,7 +44,7 @@ namespace Pinetime::Applications {
Pinetime::System::WakeLock wakeLock;
Controllers::StopWatchController& stopWatchController;
TickType_t blinkTime = 0;
- static constexpr int displayedLaps = 2;
+ int displayedLaps = 3;
lv_obj_t *time, *msecTime, *btnPlayPause, *btnStopLap, *txtPlayPause, *txtStopLap;
lv_obj_t* lapText;
bool hoursVisible = false;