dashboard: make battery detail a non-destructive overlay page
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
static const char *DASHBOARD_VERSION = "0.1.92-loop-page-switch";
|
||||
static const char *DASHBOARD_VERSION = "0.1.93-battery-detail-overlay";
|
||||
|
||||
// Update these if your Cargo ESP AP credentials are different.
|
||||
//static const char *CARGO_WIFI_SSID = "OverlandController";
|
||||
|
||||
@@ -36,6 +36,7 @@ enum DashboardScreen {
|
||||
};
|
||||
|
||||
static DashboardScreen current_dashboard_screen = SCREEN_OVERVIEW;
|
||||
static lv_obj_t *battery_detail_page = nullptr;
|
||||
static lv_obj_t *battery_detail_soc_label = nullptr;
|
||||
static lv_obj_t *battery_detail_status_label = nullptr;
|
||||
static lv_obj_t *battery_detail_voltage_label = nullptr;
|
||||
@@ -651,15 +652,54 @@ static void update_battery_detail_widgets()
|
||||
set_label_text_if_changed(battery_detail_delta_label, last_battery_detail_delta_text, delta);
|
||||
}
|
||||
|
||||
static void clear_battery_detail_refs()
|
||||
{
|
||||
battery_detail_soc_label = nullptr;
|
||||
battery_detail_status_label = nullptr;
|
||||
battery_detail_voltage_label = nullptr;
|
||||
battery_detail_current_label = nullptr;
|
||||
battery_detail_power_label = nullptr;
|
||||
battery_detail_remaining_label = nullptr;
|
||||
battery_detail_capacity_label = nullptr;
|
||||
battery_detail_temp_label = nullptr;
|
||||
battery_detail_delta_label = nullptr;
|
||||
battery_detail_estimate_label = nullptr;
|
||||
}
|
||||
|
||||
static void close_battery_detail_screen()
|
||||
{
|
||||
if (battery_detail_page != nullptr) {
|
||||
lv_obj_del(battery_detail_page);
|
||||
battery_detail_page = nullptr;
|
||||
}
|
||||
|
||||
clear_battery_detail_refs();
|
||||
current_dashboard_screen = SCREEN_OVERVIEW;
|
||||
}
|
||||
|
||||
static void create_battery_detail_screen()
|
||||
{
|
||||
lv_obj_t *screen = lv_scr_act();
|
||||
lv_obj_clean(screen);
|
||||
if (battery_detail_page != nullptr) {
|
||||
lv_obj_move_foreground(battery_detail_page);
|
||||
current_dashboard_screen = SCREEN_BATTERY_DETAIL;
|
||||
lv_obj_set_style_bg_color(screen, lv_color_hex(0x101418), 0);
|
||||
lv_obj_add_event_cb(screen, dashboard_root_event_cb, LV_EVENT_GESTURE, nullptr);
|
||||
return;
|
||||
}
|
||||
|
||||
lv_obj_t *screen = lv_scr_act();
|
||||
|
||||
battery_detail_page = lv_obj_create(screen);
|
||||
lv_obj_set_size(battery_detail_page, lv_pct(100), lv_pct(100));
|
||||
lv_obj_align(battery_detail_page, LV_ALIGN_TOP_LEFT, 0, 0);
|
||||
lv_obj_set_style_bg_color(battery_detail_page, lv_color_hex(0x101418), 0);
|
||||
lv_obj_set_style_border_width(battery_detail_page, 0, 0);
|
||||
lv_obj_set_style_pad_all(battery_detail_page, 0, 0);
|
||||
lv_obj_clear_flag(battery_detail_page, LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_add_event_cb(battery_detail_page, dashboard_root_event_cb, LV_EVENT_GESTURE, nullptr);
|
||||
|
||||
current_dashboard_screen = SCREEN_BATTERY_DETAIL;
|
||||
|
||||
lv_obj_t *system_card = create_card(battery_detail_page, "", 960, 48, LV_ALIGN_TOP_MID, 0, 12);
|
||||
|
||||
lv_obj_t *system_card = create_card(screen, "", 960, 48, LV_ALIGN_TOP_MID, 0, 12);
|
||||
lv_obj_t *title = lv_label_create(system_card);
|
||||
lv_label_set_text(title, "BATTERY DETAIL");
|
||||
lv_obj_set_style_text_color(title, lv_color_hex(0xFFFFFF), 0);
|
||||
@@ -672,7 +712,7 @@ static void create_battery_detail_screen()
|
||||
lv_obj_set_style_text_font(hint, &lv_font_montserrat_26, 0);
|
||||
lv_obj_align(hint, LV_ALIGN_RIGHT_MID, -18, 0);
|
||||
|
||||
lv_obj_t *soc_card = create_card(screen, "", 300, 500, LV_ALIGN_TOP_LEFT, 32, 78);
|
||||
lv_obj_t *soc_card = create_card(battery_detail_page, "", 300, 500, LV_ALIGN_TOP_LEFT, 32, 78);
|
||||
battery_detail_soc_label = lv_label_create(soc_card);
|
||||
lv_label_set_text(battery_detail_soc_label, "--%");
|
||||
lv_obj_set_style_text_color(battery_detail_soc_label, lv_color_hex(0xFFFFFF), 0);
|
||||
@@ -681,15 +721,17 @@ static void create_battery_detail_screen()
|
||||
lv_obj_set_style_text_align(battery_detail_soc_label, LV_TEXT_ALIGN_CENTER, 0);
|
||||
lv_obj_align(battery_detail_soc_label, LV_ALIGN_CENTER, 0, -20);
|
||||
|
||||
battery_detail_value_label(screen, "Voltage", &battery_detail_voltage_label, 356, 78);
|
||||
battery_detail_value_label(screen, "Current", &battery_detail_current_label, 670, 78);
|
||||
battery_detail_value_label(screen, "Power", &battery_detail_power_label, 356, 220);
|
||||
battery_detail_value_label(screen, "Remaining", &battery_detail_remaining_label, 670, 220);
|
||||
battery_detail_value_label(screen, "Capacity", &battery_detail_capacity_label, 356, 362);
|
||||
battery_detail_value_label(screen, "Battery Temp", &battery_detail_temp_label, 670, 362);
|
||||
battery_detail_value_label(screen, "Cell Delta", &battery_detail_delta_label, 356, 504);
|
||||
battery_detail_value_label(battery_detail_page, "Voltage", &battery_detail_voltage_label, 356, 78);
|
||||
battery_detail_value_label(battery_detail_page, "Current", &battery_detail_current_label, 670, 78);
|
||||
battery_detail_value_label(battery_detail_page, "Power", &battery_detail_power_label, 356, 220);
|
||||
battery_detail_value_label(battery_detail_page, "Remaining", &battery_detail_remaining_label, 670, 220);
|
||||
battery_detail_value_label(battery_detail_page, "Capacity", &battery_detail_capacity_label, 356, 362);
|
||||
battery_detail_value_label(battery_detail_page, "Battery Temp", &battery_detail_temp_label, 670, 362);
|
||||
battery_detail_value_label(battery_detail_page, "Cell Delta", &battery_detail_delta_label, 356, 504);
|
||||
|
||||
update_battery_detail_widgets();
|
||||
|
||||
lv_obj_move_foreground(battery_detail_page);
|
||||
}
|
||||
|
||||
static void show_dashboard_screen(DashboardScreen screen)
|
||||
@@ -1538,6 +1580,9 @@ static void show_boot_screen()
|
||||
|
||||
static void create_overland_overview_screen()
|
||||
{
|
||||
battery_detail_page = nullptr;
|
||||
clear_battery_detail_refs();
|
||||
|
||||
lv_obj_t *screen = lv_scr_act();
|
||||
lv_obj_clean(screen);
|
||||
current_dashboard_screen = SCREEN_OVERVIEW;
|
||||
|
||||
Reference in New Issue
Block a user