fix(P4): Kachelwerte auf gleicher Höhe, Menü breiter (1.13.1) #93
No files matched your search
@@ -1,3 +1,12 @@
|
||||
Version 1.13.1:
|
||||
- Zahlen und Nebenzeilen der Kacheln stehen in allen Kacheln auf derselben Höhe. Bisher
|
||||
hatten nur Shot, Waage und Dampf einen Fortschrittsbalken - das Layout verteilte die Höhe
|
||||
dadurch je Kachel anders, und Zahlen wie Nebenzeilen saßen unterschiedlich hoch. Der
|
||||
Balken gehört jetzt zu jeder Kachel und bleibt dort durchsichtig, wo er nichts zu sagen
|
||||
hat.
|
||||
- Das Menü ist breiter (400 statt 340 Pixel), damit auch lange Beschriftungen samt
|
||||
Nebenwert bequem in eine Zeile passen.
|
||||
|
||||
Version 1.13.0:
|
||||
- Neue Oberfläche für die Startseite und das Menü. Die Anordnung bleibt, was sie war -
|
||||
Statuszeile, zwei Kessel, darunter die Werte -, aber jede Beschriftung trägt jetzt ihr
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
// -------------------------------------------------------------------------------------
|
||||
// Firmware
|
||||
// -------------------------------------------------------------------------------------
|
||||
#define DISPLAY_FW_VERSION "1.13.0" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
|
||||
#define DISPLAY_FW_VERSION "1.13.1" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
|
||||
|
||||
// -------------------------------------------------------------------------------------
|
||||
// Protokoll
|
||||
|
||||
+22
-19
@@ -1702,7 +1702,8 @@ static void build_temp_row_content() {
|
||||
// Feste Masse in beide Richtungen - siehe die ausfuehrliche Begruendung in tempField.
|
||||
static lv_obj_t* infoCell(lv_obj_t* parent, const char* title, const lv_image_dsc_t* bild,
|
||||
lv_obj_t** val, lv_color_t accent, lv_obj_t** sub = nullptr,
|
||||
lv_obj_t** titleOut = nullptr, lv_obj_t** iconOut = nullptr) {
|
||||
lv_obj_t** bar = nullptr, lv_obj_t** titleOut = nullptr,
|
||||
lv_obj_t** iconOut = nullptr) {
|
||||
lv_obj_t* card = th_card(parent);
|
||||
lv_obj_set_height(card, LV_PCT(100));
|
||||
lv_obj_set_flex_grow(card, 1); // alle Zellen teilen sich die Breite gleichmaessig
|
||||
@@ -1738,11 +1739,10 @@ static lv_obj_t* infoCell(lv_obj_t* parent, const char* title, const lv_image_ds
|
||||
lv_obj_set_height(sl, lv_font_get_line_height(font_small()) + 2);
|
||||
if (sub) *sub = sl;
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
// Zielfortschritt unter einer Kachel (Shot-Zeit, Bezugsgewicht, Dampfzeit).
|
||||
static lv_obj_t* zielBalken(lv_obj_t* card) {
|
||||
// Der Zielbalken gehoert zu JEDER Kachel, auch wenn sie ihn nie benutzt. Haetten nur
|
||||
// manche Kacheln ihn, verteilte das Layout die Hoehe unterschiedlich - Zahlen und
|
||||
// Nebenzeilen staenden dann von Kachel zu Kachel auf verschiedenen Hoehen. Wo er
|
||||
// nichts zu sagen hat, bleibt er durchsichtig.
|
||||
lv_obj_t* b = lv_bar_create(card);
|
||||
lv_obj_set_width(b, LV_PCT(100));
|
||||
lv_obj_set_height(b, 6);
|
||||
@@ -1753,12 +1753,12 @@ static lv_obj_t* zielBalken(lv_obj_t* card) {
|
||||
lv_obj_set_style_radius(b, 3, LV_PART_INDICATOR);
|
||||
lv_bar_set_range(b, 0, 100);
|
||||
lv_bar_set_value(b, 0, LV_ANIM_OFF);
|
||||
// Ausserhalb eines Bezugs durchsichtig, NICHT versteckt: Ein verstecktes Element
|
||||
// faellt aus dem Flex-Layout heraus, und die Zahl darueber rueckte dann bei jedem
|
||||
// Bezugsbeginn ein Stueck nach unten.
|
||||
lv_obj_set_style_opa(b, LV_OPA_TRANSP, 0);
|
||||
return b;
|
||||
if (bar) *bar = b;
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
// Tipp auf die Statuszeile: Wartung -> Serviceseite, Reinigung -> Sub-Screen,
|
||||
// PID-Tuning -> Verlauf-Seite (dort liegen Live-Karte und Schwingungskurve)
|
||||
static void status_line_cb(lv_event_t*) {
|
||||
@@ -1841,13 +1841,13 @@ static void build_dashboard(lv_obj_t* p) {
|
||||
lv_obj_set_flex_flow(ir, LV_FLEX_FLOW_ROW);
|
||||
lv_obj_set_flex_align(ir, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
|
||||
lv_obj_clear_flag(ir, LV_OBJ_FLAG_SCROLLABLE);
|
||||
cellShot = infoCell(ir, "SHOT", &sym_stoppuhr, &lblShotTimer, COL_ACCENT, &lblShotSub);
|
||||
g_bbtBar = zielBalken(cellShot); // Brew-by-Time: verstrichen/Ziel
|
||||
cellShot = infoCell(ir, "SHOT", &sym_stoppuhr, &lblShotTimer, COL_ACCENT,
|
||||
&lblShotSub, &g_bbtBar); // Balken: verstrichen/Ziel
|
||||
|
||||
cellBezug = infoCell(ir, "WAAGE", &sym_waage, &lblBezug, COL_ACCENT, &lblBezugSub);
|
||||
cellBezug = infoCell(ir, "WAAGE", &sym_waage, &lblBezug, COL_ACCENT,
|
||||
&lblBezugSub, &g_bbwBar); // Balken: Gewicht/Ziel
|
||||
lv_obj_add_flag(cellBezug, LV_OBJ_FLAG_CLICKABLE); // antippbar -> Brew-Control
|
||||
lv_obj_add_event_cb(cellBezug, brew_cell_cb, LV_EVENT_CLICKED, nullptr);
|
||||
g_bbwBar = zielBalken(cellBezug); // Brew-by-Weight: Gewicht/Ziel
|
||||
|
||||
// Die Flusskachel steht dauerhaft, auch wenn gerade nichts laeuft. Frueher erschien sie
|
||||
// erst mit dem Bezug - dabei ruecken alle anderen Kacheln zur Seite, und genau in dem
|
||||
@@ -1856,12 +1856,13 @@ static void build_dashboard(lv_obj_t* p) {
|
||||
lv_obj_add_flag(cellFlow, LV_OBJ_FLAG_CLICKABLE); // antippbar -> Brew-Control
|
||||
lv_obj_add_event_cb(cellFlow, brew_cell_cb, LV_EVENT_CLICKED, nullptr);
|
||||
|
||||
cellSteam = infoCell(ir, "DAMPF", &sym_dampf, &lblSteamTimer, lv_color_hex(0x80cbc4), &lblSteamSub);
|
||||
g_sbtBar = zielBalken(cellSteam); // Steam-by-Time: verstrichen/Ziel
|
||||
cellSteam = infoCell(ir, "DAMPF", &sym_dampf, &lblSteamTimer, lv_color_hex(0x80cbc4),
|
||||
&lblSteamSub, &g_sbtBar); // Balken: verstrichen/Ziel
|
||||
|
||||
cellEco = infoCell(ir, "ECO", &sym_blatt, &lblEco, COL_OK, &lblEcoSub, &lblEcoTitle, &icoEco);
|
||||
cellEco = infoCell(ir, "ECO", &sym_blatt, &lblEco, COL_OK,
|
||||
&lblEcoSub, nullptr, &lblEcoTitle, &icoEco);
|
||||
cellCase = infoCell(ir, "TASSENABLAGE", &sym_tasse, &lblCase, lv_color_hex(0xffb74d),
|
||||
&lblCaseSub, &lblCaseTitle, &icoCase);
|
||||
&lblCaseSub, nullptr, &lblCaseTitle, &icoCase);
|
||||
|
||||
// Beide zeigen sich, sobald es etwas zu zeigen gibt - unabhaengig voneinander.
|
||||
lv_obj_add_flag(cellEco, LV_OBJ_FLAG_HIDDEN); // erst zeigen, wenn die S3 Eco-Info meldet
|
||||
@@ -4323,7 +4324,9 @@ void ui_init(ProtocolClient* client) {
|
||||
lv_obj_add_event_cb(g_drawer, scrim_cb, LV_EVENT_CLICKED, nullptr);
|
||||
|
||||
lv_obj_t* menu = lv_obj_create(g_drawer);
|
||||
lv_obj_set_size(menu, 340, LV_PCT(100));
|
||||
// Breit genug, dass auch die langen Beschriftungen samt Nebenwert in eine Zeile passen
|
||||
// ("Reinigung/Wartung" mit "fällig", "Cold Extraction").
|
||||
lv_obj_set_size(menu, 400, LV_PCT(100));
|
||||
lv_obj_set_pos(menu, 0, 0);
|
||||
lv_obj_set_style_bg_color(menu, COL_CARD2, 0);
|
||||
lv_obj_set_style_border_width(menu, 0, 0);
|
||||
|
||||
Reference in new issue
Block a user