Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions src/displayapp/widgets/Counter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,17 @@ namespace {
widget->DownBtnPressed();
}
}
constexpr int digitCount(int number) {
int digitCount = 0;
while (number > 0) {
digitCount++;
number /= 10;
}
return digitCount;
}
}

Counter::Counter(int min, int max, lv_font_t& font) : min {min}, max {max}, value {min}, font {font} {
Counter::Counter(int min, int max, lv_font_t& font) : min {min}, max {max}, value {min}, font {font}, leadingZeroCount {digitCount(max)} {
}

void Counter::UpBtnPressed() {
Expand Down Expand Up @@ -71,14 +79,14 @@ void Counter::UpdateLabel() {
if (value == 0) {
lv_label_set_text_static(number, "12");
} else if (value <= 12) {
lv_label_set_text_fmt(number, "%.2i", value);
lv_label_set_text_fmt(number, "%.*i", leadingZeroCount, value);
} else {
lv_label_set_text_fmt(number, "%.2i", value - 12);
lv_label_set_text_fmt(number, "%.*i", leadingZeroCount, value - 12);
}
} else if (monthMode) {
lv_label_set_text(number, Controllers::DateTime::MonthShortToStringLow(static_cast<Controllers::DateTime::Months>(value)));
} else {
lv_label_set_text_fmt(number, "%.2i", value);
lv_label_set_text_fmt(number, "%.*i", leadingZeroCount, value);
}
}

Expand All @@ -94,6 +102,8 @@ void Counter::EnableMonthMode() {
monthMode = true;
}

// Counter cannot be resized after creation,
// so the newMax value must have the same number of digits as the old one
void Counter::SetMax(int newMax) {
max = newMax;
if (value > max) {
Expand Down
1 change: 1 addition & 0 deletions src/displayapp/widgets/Counter.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ namespace Pinetime {
int min;
int max;
int value;
const int leadingZeroCount;
bool twelveHourMode = false;
bool monthMode = false;
lv_font_t& font;
Expand Down