diag(P4): Bildaufbau messen, Dialogknöpfe skalieren (1.8.8) #68
@@ -1,3 +1,16 @@
|
|||||||
|
Version 1.8.8:
|
||||||
|
- Der Aufweckdialog berücksichtigt jetzt die eingestellte Schriftgröße vollständig: Die
|
||||||
|
Knöpfe bekommen dieselbe Schrift wie der Text und wachsen mit (150 / 210 / 280 Pixel).
|
||||||
|
Bisher erbten sie die kleine Grundschrift und behielten eine feste Breite - neben dem
|
||||||
|
größeren Text wirkten sie dadurch verloren.
|
||||||
|
- Die große Standby-Uhr bleibt bewusst bei ihrer festen Größe: Sie ist bereits auf die
|
||||||
|
Bildschirmhöhe abgestimmt, eine Umschaltung würde sie nur schlechter passend machen.
|
||||||
|
- Neu: eine Zeitmessung für langsame Bildaufbauten. Überschreitet ein Zeichenzyklus
|
||||||
|
200 Millisekunden, meldet die serielle Konsole seine Dauer. Damit lässt sich feststellen,
|
||||||
|
welcher Vorgang tatsächlich Zeit kostet - die bisherigen Erklärungen für die Verzögerung
|
||||||
|
beim Aufweckdialog haben sich als falsch erwiesen, und weiteres Raten hilft nicht.
|
||||||
|
Im Normalbetrieb bleibt die Ausgabe still.
|
||||||
|
|
||||||
Version 1.8.7:
|
Version 1.8.7:
|
||||||
- Vom Fingertipp auf die Standby-Uhr bis zum Aufweckdialog vergingen rund fünf Sekunden mit
|
- Vom Fingertipp auf die Standby-Uhr bis zum Aufweckdialog vergingen rund fünf Sekunden mit
|
||||||
schwarzem Bildschirm. Ursache war der halbdurchsichtige Vorhang, den der Dialog über den
|
schwarzem Bildschirm. Ursache war der halbdurchsichtige Vorhang, den der Dialog über den
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "display_hal.h"
|
#include "display_hal.h"
|
||||||
|
#include "esp_rom_sys.h"
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------
|
||||||
// Schriftgroesse
|
// Schriftgroesse
|
||||||
@@ -3412,6 +3413,33 @@ static void dash_timers_cb(lv_timer_t*) {
|
|||||||
// sonst greifen sie auf nicht angelegte LVGL-Objekte zu.
|
// sonst greifen sie auf nicht angelegte LVGL-Objekte zu.
|
||||||
static bool g_uiReady = false;
|
static bool g_uiReady = false;
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------
|
||||||
|
// Zeitmessung fuer langsame Bildaufbauten
|
||||||
|
//
|
||||||
|
// Beim 7-Zoll-Panel dauern manche Vorgaenge spuerbar lange, und aus dem Quelltext allein
|
||||||
|
// ist nicht zu sehen, welcher Teil die Zeit frisst. LVGL meldet Anfang und Ende jedes
|
||||||
|
// Zeichenzyklus - hier wird die Dauer gemessen und nur dann ausgegeben, wenn sie eine
|
||||||
|
// Schwelle ueberschreitet. Im Normalbetrieb bleibt die Konsole still.
|
||||||
|
// ------------------------------------------------------------------------------------
|
||||||
|
#define REFR_WARN_MS 200
|
||||||
|
|
||||||
|
static uint32_t g_refrStart = 0;
|
||||||
|
|
||||||
|
static void refr_start_cb(lv_event_t*) { g_refrStart = lv_tick_get(); }
|
||||||
|
|
||||||
|
static void refr_ready_cb(lv_event_t*) {
|
||||||
|
uint32_t d = lv_tick_get() - g_refrStart;
|
||||||
|
if (d >= REFR_WARN_MS) esp_rom_printf("[UI] Bildaufbau %u ms\n", (unsigned)d);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void refr_monitor_install() {
|
||||||
|
lv_display_t* d = lv_display_get_default();
|
||||||
|
if (!d) return;
|
||||||
|
lv_display_add_event_cb(d, refr_start_cb, LV_EVENT_REFR_START, nullptr);
|
||||||
|
lv_display_add_event_cb(d, refr_ready_cb, LV_EVENT_REFR_READY, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
void ui_init(ProtocolClient* client) {
|
void ui_init(ProtocolClient* client) {
|
||||||
g_client = client;
|
g_client = client;
|
||||||
|
|
||||||
@@ -3683,12 +3711,17 @@ void ui_init(ProtocolClient* client) {
|
|||||||
lv_obj_set_flex_flow(wakeBtns, LV_FLEX_FLOW_ROW);
|
lv_obj_set_flex_flow(wakeBtns, LV_FLEX_FLOW_ROW);
|
||||||
lv_obj_set_flex_align(wakeBtns, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
|
lv_obj_set_flex_align(wakeBtns, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
|
||||||
lv_obj_clear_flag(wakeBtns, LV_OBJ_FLAG_SCROLLABLE);
|
lv_obj_clear_flag(wakeBtns, LV_OBJ_FLAG_SCROLLABLE);
|
||||||
|
// Knopfbreite und -schrift wachsen mit der Schriftgroesse mit; mit fester Breite und
|
||||||
|
// geerbter Grundschrift wirkten die Knoepfe neben dem groesseren Text verloren.
|
||||||
|
const int32_t wakeBtnW = (g_fontStep == FONT_GROSS) ? 280 : (g_fontStep == FONT_MITTEL) ? 210 : 150;
|
||||||
lv_obj_t* wakeNo = th_button(wakeBtns, "Abbrechen", COL_CARD2, COL_TEXT);
|
lv_obj_t* wakeNo = th_button(wakeBtns, "Abbrechen", COL_CARD2, COL_TEXT);
|
||||||
lv_obj_set_width(wakeNo, 150);
|
lv_obj_set_width(wakeNo, wakeBtnW);
|
||||||
|
lv_obj_set_style_text_font(wakeNo, font_text(), 0);
|
||||||
lv_obj_add_event_cb(wakeNo, wake_no_cb, LV_EVENT_CLICKED, nullptr);
|
lv_obj_add_event_cb(wakeNo, wake_no_cb, LV_EVENT_CLICKED, nullptr);
|
||||||
g_wakeNoBtn = wakeNo;
|
g_wakeNoBtn = wakeNo;
|
||||||
lv_obj_t* wakeYes = th_accent_button(wakeBtns, "Aufwecken");
|
lv_obj_t* wakeYes = th_accent_button(wakeBtns, "Aufwecken");
|
||||||
lv_obj_set_width(wakeYes, 150);
|
lv_obj_set_width(wakeYes, wakeBtnW);
|
||||||
|
lv_obj_set_style_text_font(wakeYes, font_text(), 0);
|
||||||
lv_obj_add_event_cb(wakeYes, wake_yes_cb, LV_EVENT_CLICKED, nullptr);
|
lv_obj_add_event_cb(wakeYes, wake_yes_cb, LV_EVENT_CLICKED, nullptr);
|
||||||
g_wakeYesLbl = lv_obj_get_child(wakeYes, 0); // Label des Knopfs (fuer "Espresso" im Abfrage-Modus)
|
g_wakeYesLbl = lv_obj_get_child(wakeYes, 0); // Label des Knopfs (fuer "Espresso" im Abfrage-Modus)
|
||||||
// Zweite Zeile: direkt in die kalte Extraktion aufwecken. Ohne diesen Weg muesste man
|
// Zweite Zeile: direkt in die kalte Extraktion aufwecken. Ohne diesen Weg muesste man
|
||||||
@@ -3696,6 +3729,7 @@ void ui_init(ProtocolClient* client) {
|
|||||||
// Nur sichtbar, wenn die S3 die Funktion freigeschaltet meldet (siehe ui_update).
|
// Nur sichtbar, wenn die S3 die Funktion freigeschaltet meldet (siehe ui_update).
|
||||||
g_wakeColdBtn = th_button(wakeCard, "Cold Extraction (Wasser bleibt kalt)", COL_CARD2, COL_ACCENT);
|
g_wakeColdBtn = th_button(wakeCard, "Cold Extraction (Wasser bleibt kalt)", COL_CARD2, COL_ACCENT);
|
||||||
lv_obj_set_width(g_wakeColdBtn, LV_PCT(100));
|
lv_obj_set_width(g_wakeColdBtn, LV_PCT(100));
|
||||||
|
lv_obj_set_style_text_font(g_wakeColdBtn, font_text(), 0);
|
||||||
lv_obj_add_event_cb(g_wakeColdBtn, wake_cold_cb, LV_EVENT_CLICKED, nullptr);
|
lv_obj_add_event_cb(g_wakeColdBtn, wake_cold_cb, LV_EVENT_CLICKED, nullptr);
|
||||||
lv_obj_add_flag(g_wakeColdBtn, LV_OBJ_FLAG_HIDDEN);
|
lv_obj_add_flag(g_wakeColdBtn, LV_OBJ_FLAG_HIDDEN);
|
||||||
lv_obj_add_flag(g_wakeConfirm, LV_OBJ_FLAG_HIDDEN);
|
lv_obj_add_flag(g_wakeConfirm, LV_OBJ_FLAG_HIDDEN);
|
||||||
@@ -3806,6 +3840,7 @@ void ui_init(ProtocolClient* client) {
|
|||||||
show_page(PG_DASH);
|
show_page(PG_DASH);
|
||||||
if (g_client) g_client->sendListProfiles();
|
if (g_client) g_client->sendListProfiles();
|
||||||
|
|
||||||
|
refr_monitor_install();
|
||||||
g_uiReady = true;
|
g_uiReady = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user