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:
|
||||
- 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
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <Preferences.h>
|
||||
#include "esp_system.h"
|
||||
#include "display_hal.h"
|
||||
#include "esp_rom_sys.h"
|
||||
|
||||
// ------------------------------------------------------------------------------------
|
||||
// Schriftgroesse
|
||||
@@ -3412,6 +3413,33 @@ static void dash_timers_cb(lv_timer_t*) {
|
||||
// sonst greifen sie auf nicht angelegte LVGL-Objekte zu.
|
||||
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) {
|
||||
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_align(wakeBtns, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
|
||||
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_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);
|
||||
g_wakeNoBtn = wakeNo;
|
||||
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);
|
||||
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
|
||||
@@ -3696,6 +3729,7 @@ void ui_init(ProtocolClient* client) {
|
||||
// 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);
|
||||
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_flag(g_wakeColdBtn, 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);
|
||||
if (g_client) g_client->sendListProfiles();
|
||||
|
||||
refr_monitor_install();
|
||||
g_uiReady = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user