feat(P4): Brew-Control zweispaltig auf dem 7-Zoll-Panel (1.7.0) #56
@@ -1,3 +1,15 @@
|
||||
Version 1.7.0:
|
||||
- Brew-Control ist auf dem 7-Zoll-Panel zweispaltig: Pre-Infusion und Brew-by-Weight oben,
|
||||
Brew-by-Time und Dampf-Timer darunter, der Speichern-Knopf frei unter allen Karten.
|
||||
Damit passt die Seite vollstaendig auf den Bildschirm und muss nicht mehr gescrollt
|
||||
werden - der teuerste Vorgang der Oberflaeche entfaellt dort ersatzlos.
|
||||
- Die Anordnung folgt der Bedeutung: links steht, was den Bezug startet, rechts, was ihn
|
||||
beendet.
|
||||
- Der Speichern-Knopf sitzt bewusst nicht in einer der Karten. Er speichert die ganze Seite
|
||||
und wuerde in einer einzelnen Karte so wirken, als gaelte er nur fuer diese.
|
||||
- Die JC-Panels bleiben einspaltig - dort ist der Platz knapp, nicht ueppig.
|
||||
- Cold Extraction und Reinigung/Wartung folgen als naechstes.
|
||||
|
||||
Version 1.6.27:
|
||||
- Beim Waveshare-Panel rollen scrollbare Listen nach dem Loslassen nicht mehr aus, sondern
|
||||
folgen nur dem Finger. Ohne Doppelpufferung entsteht beim Scrollen jedes Bild komplett
|
||||
|
||||
@@ -459,6 +459,43 @@ static void add_save_button(lv_obj_t* parent, const char* txt, lv_event_cb_t cb)
|
||||
//
|
||||
// Nur fuer das Waveshare-Panel: Die JC-Panels haben das Tempoproblem nicht, ihr
|
||||
// Bediengefuehl soll unveraendert bleiben.
|
||||
|
||||
// ------------------------------------------------------------------------------------
|
||||
// Mehrspaltige Seiten fuer das grosse Panel
|
||||
//
|
||||
// Die Seiten sind als einspaltige Stapel entstanden - entworfen fuer 800x480, wo eine
|
||||
// Spalte alles ist, was hineinpasst. Auf 1280x720 bleibt daneben rund 40 % der Flaeche
|
||||
// leer, waehrend unten Karten aus dem Bild fallen und gescrollt werden muss. Und Scrollen
|
||||
// ist auf diesem Panel teuer: Ohne Doppelpufferung entsteht dabei jedes Bild komplett neu.
|
||||
//
|
||||
// Deshalb hier ein Raster statt eines Stapels. Passt eine Seite vollstaendig auf den
|
||||
// Bildschirm, entfaellt der teuerste Vorgang der Oberflaeche ersatzlos.
|
||||
//
|
||||
// Die JC-Panels bleiben einspaltig: Dort ist der Platz knapp, nicht ueppig.
|
||||
// ------------------------------------------------------------------------------------
|
||||
#if JC_PANEL_TYPE == WS_PANEL_7H
|
||||
static const int32_t PAGE_COLS_2[] = { LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST };
|
||||
// Zwei Kartenreihen, darunter eine Reihe fuer den Speichern-Knopf.
|
||||
static const int32_t PAGE_ROWS_2C[] = { LV_GRID_CONTENT, LV_GRID_CONTENT, LV_GRID_CONTENT,
|
||||
LV_GRID_TEMPLATE_LAST };
|
||||
|
||||
static void page_grid(lv_obj_t* p, const int32_t* cols, const int32_t* rows) {
|
||||
lv_obj_set_layout(p, LV_LAYOUT_GRID);
|
||||
lv_obj_set_grid_dsc_array(p, cols, rows);
|
||||
lv_obj_set_style_pad_column(p, 12, 0);
|
||||
lv_obj_set_style_pad_row(p, 12, 0);
|
||||
}
|
||||
|
||||
// Karte in eine Rasterzelle setzen. Die Breite kommt ab jetzt aus der Spalte, deshalb muss
|
||||
// die Prozentbreite aus group_card() zurueckgenommen werden - sie bezoege sich sonst auf
|
||||
// die ganze Seite statt auf die Zelle.
|
||||
static void grid_at(lv_obj_t* c, uint8_t col, uint8_t row, uint8_t col_span = 1) {
|
||||
lv_obj_set_width(c, LV_SIZE_CONTENT);
|
||||
lv_obj_set_grid_cell(c, LV_GRID_ALIGN_STRETCH, col, col_span,
|
||||
LV_GRID_ALIGN_START, row, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void scroll_ohne_nachlauf(lv_obj_t* o) {
|
||||
#if JC_PANEL_TYPE == WS_PANEL_7H
|
||||
lv_obj_clear_flag(o, LV_OBJ_FLAG_SCROLL_MOMENTUM);
|
||||
@@ -2102,7 +2139,23 @@ static void build_brew(lv_obj_t* p) {
|
||||
swSBT = add_switch(cSBT, "Aktiv");
|
||||
taSbtSecs = add_num(cSBT, "Zielzeit (s)");
|
||||
|
||||
#if JC_PANEL_TYPE == WS_PANEL_7H
|
||||
// Zwei Spalten: links, was den Bezug startet, rechts, was ihn beendet.
|
||||
page_grid(p, PAGE_COLS_2, PAGE_ROWS_2C);
|
||||
grid_at(cPI, 0, 0);
|
||||
grid_at(cBBW, 1, 0);
|
||||
grid_at(cBBT, 0, 1);
|
||||
grid_at(cSBT, 1, 1);
|
||||
|
||||
// Speichern frei unter den Karten, nicht in einer davon: Der Knopf speichert die ganze
|
||||
// Seite und wuerde in einer einzelnen Karte so wirken, als gaelte er nur fuer diese.
|
||||
lv_obj_t* sb = th_accent_button(p, "Brühen speichern");
|
||||
lv_obj_add_event_cb(sb, send_save_brew, LV_EVENT_CLICKED, nullptr);
|
||||
lv_obj_set_width(sb, LV_SIZE_CONTENT);
|
||||
lv_obj_set_grid_cell(sb, LV_GRID_ALIGN_END, 0, 2, LV_GRID_ALIGN_START, 2, 1);
|
||||
#else
|
||||
add_save_button(p, "Brühen speichern", send_save_brew);
|
||||
#endif
|
||||
}
|
||||
|
||||
// =====================================================================================
|
||||
|
||||
Reference in New Issue
Block a user