Unify dashboard page title styling

This commit is contained in:
2026-11-06 09:50:37 +01:00
parent c2032c4365
commit 78aaed0d25
+11 -7
View File
@@ -455,6 +455,10 @@ display:
}
it.printf(312, 8, id(font_icon), wifi_color, TextAlign::TOP_RIGHT, "%s", wifi_icon);
auto draw_page_title = [&](const char *title) {
it.print(12, 10, id(font_small), Color(143, 190, 223), title);
};
// Round live gauges up to a 1/2/5 scale, with a unit-specific minimum.
auto gauge_maximum = [](float value, float minimum) -> float {
const float peak = fmaxf(value, minimum);
@@ -465,7 +469,7 @@ display:
};
if (id(page_index) == 0 && !id(page_one_gauge_view)) {
it.printf(12, 12, id(font_small), Color::WHITE, "Netzleistung");
draw_page_title("Netzleistung");
if (id(grid_power).has_state()) {
const Color grid_power_color = id(grid_power).state >= 0
? Color(143, 190, 223) // #8FBEDF: positive grid power
@@ -507,7 +511,7 @@ display:
"-- W");
}
} else if (id(page_index) == 0) {
it.print(12, 10, id(font_small), Color::WHITE, "Energie");
draw_page_title("Energie");
// One shared gauge with two parallel curved bars: grid on the outside, solar inside.
const Color gauge_background = Color(42, 42, 42);
const int gauge_center_x = 160;
@@ -594,7 +598,7 @@ display:
Color(111, 167, 229), Color(190, 137, 226)};
// The title uses the free area to the left of the status indicators.
it.printf(12, 10, id(font_device), Color::WHITE, "Geräteverbrauch");
draw_page_title("Geräteverbrauch");
for (int display_index = 0; display_index < 9; display_index++) {
const int index = page_start + display_index;
const int column = display_index % 2;
@@ -643,7 +647,7 @@ display:
const Color accent(143, 190, 223);
const Color gold(255, 170, 40);
const Color muted(55, 65, 80);
it.print(12, 10, id(font_device), accent, "Uhr · Berlin");
draw_page_title("Uhr · Berlin");
if (!now.is_valid()) {
it.print(160, 100, id(font_title), accent, TextAlign::TOP_CENTER, "--:--:--");
it.print(160, 190, id(font_small), Color::WHITE, TextAlign::TOP_CENTER,
@@ -746,7 +750,7 @@ display:
};
if (id(internet_view) == 0) {
it.print(12, 10, id(font_small), Color::WHITE, "Internet");
draw_page_title("Internet");
const int cx = 160, cy = 188;
const float download_maximum = gauge_maximum(download_valid ? download : 0.0f, 0.001f);
const float upload_maximum = gauge_maximum(upload_valid ? upload : 0.0f, 0.001f);
@@ -770,7 +774,7 @@ display:
download_valid ? format_rate(download_maximum).c_str() : "--",
upload_valid ? format_rate(upload_maximum).c_str() : "--");
} else if (id(internet_view) == 1) {
it.print(12, 10, id(font_device), Color::WHITE, "Internet · 1 h");
draw_page_title("Internet · 1 h");
const int left = 28, right = 308, top = 62, zero = 122, bottom = 182;
const int count = id(internet_history_count);
// A shared symmetric scale keeps upload/download magnitudes comparable.
@@ -837,7 +841,7 @@ display:
"Warte auf Messwerte");
}
} else {
it.print(12, 10, id(font_device), Color::WHITE, "Internet · Volumen");
draw_page_title("Internet · Volumen");
auto format_volume = [&](sensor::Sensor *source) -> std::string {
if (!connected || !source->has_state() || !std::isfinite(source->state)
|| source->state < 0.0f) return "--";