diff --git a/P4_Display_Firmware/Changelog.txt b/P4_Display_Firmware/Changelog.txt index a3f510b..1a331e5 100644 --- a/P4_Display_Firmware/Changelog.txt +++ b/P4_Display_Firmware/Changelog.txt @@ -1,3 +1,15 @@ +Version 1.9.4: +- Die Messung mit Koordinaten hat den Verursacher benannt: Der ungültige Bereich war + „x 0..1279, y 44..719" - also der gesamte Inhalt unterhalb der Kopfleiste, bei jeder + Zustandsmeldung. +- Grund: Die Anzeigewerte hatten keine feste Breite. Wächst oder schrumpft eine Beschriftung + mit ihrem Inhalt - etwa von „92,4 °C" auf „100,1 °C" -, rechnet LVGL das Layout der + gesamten Seite neu und macht sie dabei komplett ungültig. Es genügt also nicht, den Text + nur bei echter Änderung zu setzen; er darf beim Ändern auch die Breite nicht verändern. +- Temperaturwerte, Sollwerte und die Werte der unteren Zeile haben jetzt eine feste Breite + mit zentriertem Text. Sichtbar ändert sich dadurch nichts - die Werte standen ohnehin + mittig. + Version 1.9.3: - Fehlerbehebung: Bei geöffnetem Menü war der Seiteninhalt dahinter verschwunden. Der Vorhang des Menüs war in 1.8.7 deckend gemacht worden, um Zeichenlast zu sparen - dabei diff --git a/P4_Display_Firmware/ui.cpp b/P4_Display_Firmware/ui.cpp index 864bcf4..d4f6df0 100644 --- a/P4_Display_Firmware/ui.cpp +++ b/P4_Display_Firmware/ui.cpp @@ -1056,6 +1056,13 @@ static lv_obj_t* tempField(lv_obj_t* parent, const char* title, lv_color_t accen lv_label_set_text(*big, "--.-"); lv_obj_set_style_text_color(*big, COL_TEXT, 0); lv_obj_set_style_text_font(*big, valueFont, 0); + // Feste Breite, Text zentriert. Waechst oder schrumpft eine Beschriftung mit ihrem + // Inhalt - etwa von "92,4 °C" auf "100,1 °C" -, rechnet LVGL das Flex-Layout der + // gesamten Seite neu und macht sie damit komplett ungueltig. Genau das war im + // Messprotokoll als "x 0..1279, y 44..719" zu sehen: der ganze Inhaltsbereich, bei + // jeder Zustandsmeldung. Mit fester Breite bleibt nur die Beschriftung selbst ungueltig. + lv_obj_set_width(*big, LV_PCT(100)); + lv_obj_set_style_text_align(*big, LV_TEXT_ALIGN_CENTER, 0); // Grosse Zahlen etwas enger setzen. Bei dieser Groesse wirken die Werksabstaende // auseinandergezogen; ein paar Pixel weniger binden die Ziffern zu einer Zahl zusammen. if (valueFont == &lv_font_maven_pro_bold_140) lv_obj_set_style_text_letter_space(*big, -3, 0); @@ -1065,6 +1072,8 @@ static lv_obj_t* tempField(lv_obj_t* parent, const char* title, lv_color_t accen lv_label_set_text(*setp, "Soll --.-"); lv_obj_set_style_text_color(*setp, COL_TEXT_DIM, 0); lv_obj_set_style_text_font(*setp, font_text(), 0); + lv_obj_set_width(*setp, LV_PCT(100)); + lv_obj_set_style_text_align(*setp, LV_TEXT_ALIGN_CENTER, 0); *bar = lv_bar_create(c); lv_obj_set_size(*bar, LV_PCT(92), 8); @@ -1210,6 +1219,9 @@ static lv_obj_t* infoCell(lv_obj_t* parent, const char* title, lv_obj_t** val, l lv_obj_set_style_text_color(*val, COL_TEXT, 0); lv_obj_set_style_text_font(*val, font_title(), 0); lv_obj_set_style_text_align(*val, LV_TEXT_ALIGN_CENTER, 0); // fuer mehrzeilige Werte + // Feste Breite: Sonst aendert der Wert mit seinem Inhalt die Breite, LVGL rechnet das + // Layout der Zeile neu und macht die ganze Seite ungueltig (siehe tempField). + lv_obj_set_width(*val, LV_PCT(100)); return card; } // Tipp auf die Statuszeile: Wartung -> Serviceseite, Reinigung -> Sub-Screen,