fix: Abfrage beim Aufwecken geht in beide Richtungen (S3 5.6.2 / P4 1.4.1)
Die Abfrage erschien nicht, sobald der Cold-Extraction-Modus noch aktiv war — und
da er seit 5.3.1 persistent ist, war er das nach dem ersten kalten Bezug dauerhaft.
Damit erklärt sich, warum weder der Schalter- noch der Touch-Weg etwas zeigte.
Die Bedingung "Modus ist aus" war falsch gedacht ("sonst gibt es nichts zu fragen").
Die Auswahl muss in beide Richtungen gehen, also auch von kalt zurück auf Espresso.
Sonst hängt man nach dem ersten kalten Bezug im kalten Modus fest, ohne beim
Aufwecken je wieder gefragt zu werden.
- Bedingung aus beiden Öffnungspfaden entfernt (Standby-Übergang und Kaltstart).
- Das Fenster bleibt bei aktivem Modus offen; bisher schloss es sofort wieder.
- "wakeEspresso" beendet jetzt einen laufenden Modus, statt ihn nur nicht
einzuschalten — sonst wäre die Auswahl eine Einbahnstraße.
- Diagnose auf /Cold-Extraction listet den Modus nicht mehr als Voraussetzung,
sondern zeigt ihn als Ist-Zustand.
- P4: Der Cold-Knopf zeigt den Ist-Zustand ("aktiv lassen" und hervorgehoben, wenn
der Modus läuft).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8432bd3f15
commit
f8d51a57b7
@@ -3603,9 +3603,11 @@ void ui_update(const MachineState& st) {
|
||||
// Zwei Faelle: Vorab-Abfrage beim Antippen im Standby (askMode) und das von der S3
|
||||
// geoeffnete Auswahlfenster NACH dem Aufwecken (choiceOpen) - letzteres deckt auch
|
||||
// das Aufwecken per Schalter ab, wo es keine Vorab-Abfrage geben kann.
|
||||
// Kein "!st.cxActive": Der Modus ist persistent, die Auswahl muss in beide
|
||||
// Richtungen gehen - sonst haengt man nach dem ersten kalten Bezug dauerhaft fest.
|
||||
const bool choiceOpen = st.cxWakeChoice;
|
||||
const bool askMode = choiceOpen ||
|
||||
(st.cxEnabled && st.cxArmable && !st.cxActive && st.cxAskOnWake);
|
||||
(st.cxEnabled && st.cxArmable && st.cxAskOnWake);
|
||||
if (g_wakeColdBtn) {
|
||||
if (askMode) lv_obj_remove_flag(g_wakeColdBtn, LV_OBJ_FLAG_HIDDEN);
|
||||
else lv_obj_add_flag(g_wakeColdBtn, LV_OBJ_FLAG_HIDDEN);
|
||||
@@ -3631,6 +3633,17 @@ void ui_update(const MachineState& st) {
|
||||
if (g_wakeYesLbl) {
|
||||
label_set_if_changed(g_wakeYesLbl, askMode ? "Espresso" : "Aufwecken");
|
||||
}
|
||||
// Aktive Wahl hervorheben: Bei laufendem Modus ist "Cold Extraction" der Ist-Zustand,
|
||||
// "Espresso" schaltet ihn ab - andersherum genauso.
|
||||
if (g_wakeColdBtn && askMode) {
|
||||
lv_obj_set_style_bg_color(g_wakeColdBtn, st.cxActive ? COL_ACCENT : COL_CARD2, 0);
|
||||
lv_obj_t* coldLbl = lv_obj_get_child(g_wakeColdBtn, 0);
|
||||
if (coldLbl) {
|
||||
lv_obj_set_style_text_color(coldLbl, st.cxActive ? lv_color_hex(0x000000) : COL_ACCENT, 0);
|
||||
label_set_if_changed(coldLbl, st.cxActive ? "Cold Extraction (aktiv lassen)"
|
||||
: "Cold Extraction (Wasser bleibt kalt)");
|
||||
}
|
||||
}
|
||||
// Auswahlfenster von der S3 -> Dialog von sich aus zeigen (kein Antippen noetig)
|
||||
if (choiceOpen && g_wakeConfirm && lv_obj_has_flag(g_wakeConfirm, LV_OBJ_FLAG_HIDDEN)) {
|
||||
wake_confirm_show();
|
||||
|
||||
Reference in New Issue
Block a user