Determine the number of digits from the max value. (#1271)
This commit is contained in:
parent
c2b6a8de3e
commit
62c4ff9c2d
|
@ -18,9 +18,17 @@ namespace {
|
||||||
widget->DownBtnPressed();
|
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() {
|
void Counter::UpBtnPressed() {
|
||||||
|
@ -72,14 +80,14 @@ void Counter::UpdateLabel() {
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
lv_label_set_text_static(number, "12");
|
lv_label_set_text_static(number, "12");
|
||||||
} else if (value <= 12) {
|
} else if (value <= 12) {
|
||||||
lv_label_set_text_fmt(number, "%.2i", value);
|
lv_label_set_text_fmt(number, "%.*i", leadingZeroCount, value);
|
||||||
} else {
|
} else {
|
||||||
lv_label_set_text_fmt(number, "%.2i", value - 12);
|
lv_label_set_text_fmt(number, "%.*i", leadingZeroCount, value - 12);
|
||||||
}
|
}
|
||||||
} else if (monthMode) {
|
} else if (monthMode) {
|
||||||
lv_label_set_text(number, Controllers::DateTime::MonthShortToStringLow(static_cast<Controllers::DateTime::Months>(value)));
|
lv_label_set_text(number, Controllers::DateTime::MonthShortToStringLow(static_cast<Controllers::DateTime::Months>(value)));
|
||||||
} else {
|
} else {
|
||||||
lv_label_set_text_fmt(number, "%.2i", value);
|
lv_label_set_text_fmt(number, "%.*i", leadingZeroCount, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +103,8 @@ void Counter::EnableMonthMode() {
|
||||||
monthMode = true;
|
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) {
|
void Counter::SetMax(int newMax) {
|
||||||
max = newMax;
|
max = newMax;
|
||||||
if (value > max) {
|
if (value > max) {
|
||||||
|
|
|
@ -41,6 +41,7 @@ namespace Pinetime {
|
||||||
int min;
|
int min;
|
||||||
int max;
|
int max;
|
||||||
int value;
|
int value;
|
||||||
|
const int leadingZeroCount;
|
||||||
bool twelveHourMode = false;
|
bool twelveHourMode = false;
|
||||||
bool monthMode = false;
|
bool monthMode = false;
|
||||||
lv_font_t& font;
|
lv_font_t& font;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user