dashboard: add diag-style battery card double click
This commit is contained in:
@@ -764,40 +764,35 @@ static void show_dashboard_screen(DashboardScreen screen)
|
||||
}
|
||||
|
||||
|
||||
static void battery_card_doubletap_event_cb(lv_event_t *event)
|
||||
|
||||
|
||||
static unsigned long battery_card_last_tap_ms = 0;
|
||||
|
||||
static void battery_card_event_cb(lv_event_t *event)
|
||||
{
|
||||
if (lv_event_get_code(event) != LV_EVENT_SHORT_CLICKED) return;
|
||||
if (lv_event_get_code(event) != LV_EVENT_CLICKED) {
|
||||
return;
|
||||
}
|
||||
|
||||
static uint32_t last_tap_ms = 0;
|
||||
uint32_t now_ms = millis();
|
||||
|
||||
if (now_ms - last_tap_ms <= 550) {
|
||||
last_tap_ms = 0;
|
||||
Serial.println("NAV: Battery card double tap");
|
||||
unsigned long now = millis();
|
||||
if (now - battery_card_last_tap_ms < 350) {
|
||||
battery_card_last_tap_ms = 0;
|
||||
Serial.println("NAV: Battery card double click");
|
||||
queue_dashboard_page_switch(SCREEN_BATTERY_DETAIL);
|
||||
return;
|
||||
}
|
||||
|
||||
last_tap_ms = now_ms;
|
||||
battery_card_last_tap_ms = now;
|
||||
}
|
||||
|
||||
static void add_battery_card_doubletap_hitbox(lv_obj_t *screen)
|
||||
static void add_battery_card_tap_target(lv_obj_t *obj)
|
||||
{
|
||||
lv_obj_t *hitbox = lv_obj_create(screen);
|
||||
lv_obj_set_size(hitbox, 380, 310);
|
||||
lv_obj_align(hitbox, LV_ALIGN_TOP_LEFT, 32, 68);
|
||||
lv_obj_set_style_bg_opa(hitbox, LV_OPA_TRANSP, 0);
|
||||
lv_obj_set_style_border_opa(hitbox, LV_OPA_TRANSP, 0);
|
||||
lv_obj_set_style_pad_all(hitbox, 0, 0);
|
||||
lv_obj_clear_flag(hitbox, LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_add_flag(hitbox, LV_OBJ_FLAG_CLICKABLE);
|
||||
if (obj == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
lv_obj_add_event_cb(hitbox, battery_card_doubletap_event_cb, LV_EVENT_SHORT_CLICKED, nullptr);
|
||||
|
||||
// Keep swipe navigation working even over the battery card.
|
||||
lv_obj_add_event_cb(hitbox, dashboard_root_event_cb, LV_EVENT_GESTURE, nullptr);
|
||||
|
||||
lv_obj_move_foreground(hitbox);
|
||||
lv_obj_add_flag(obj, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_event_cb(obj, battery_card_event_cb, LV_EVENT_CLICKED, nullptr);
|
||||
}
|
||||
|
||||
|
||||
@@ -1698,6 +1693,7 @@ lv_obj_t *system_card = create_card(screen, "", 960, 48, LV_ALIGN_TOP_MID, 0, 12
|
||||
lv_obj_add_event_cb(system_card, system_card_event_cb, LV_EVENT_CLICKED, nullptr);
|
||||
lv_obj_t *battery_card = create_card(screen, "", 380, 310, LV_ALIGN_TOP_LEFT, 32, 68);
|
||||
battery_card_obj = battery_card;
|
||||
add_battery_card_tap_target(battery_card);
|
||||
lv_obj_t *temp_card = create_card(screen, "", 260, 310, LV_ALIGN_TOP_LEFT, 426, 68);
|
||||
lv_obj_t *vehicle_card = create_card(screen, "", 292, 310, LV_ALIGN_TOP_RIGHT, -32, 68);
|
||||
lv_obj_t *relay_card = create_card(screen, "", 960, 205, LV_ALIGN_BOTTOM_MID, 0, -8);
|
||||
@@ -1760,6 +1756,12 @@ lv_obj_t *system_card = create_card(screen, "", 960, 48, LV_ALIGN_TOP_MID, 0, 12
|
||||
lv_obj_align(battery_current_label, LV_ALIGN_TOP_MID, 0, 161);
|
||||
lv_obj_add_flag(battery_current_label, LV_OBJ_FLAG_HIDDEN);
|
||||
|
||||
add_battery_card_tap_target(battery_charge_pulse_arc);
|
||||
add_battery_card_tap_target(battery_soc_arc);
|
||||
add_battery_card_tap_target(battery_estimate_label);
|
||||
add_battery_card_tap_target(battery_soc_label);
|
||||
add_battery_card_tap_target(battery_current_label);
|
||||
|
||||
const int temp_tile_w = 236;
|
||||
const int temp_tile_h = 132;
|
||||
const int temp_tile_y[2] = {18, 160};
|
||||
|
||||
Reference in New Issue
Block a user