dashboard: refine battery detail page layout
This commit is contained in:
@@ -626,21 +626,21 @@ static String battery_detail_signed(float value, int decimals, const char *suffi
|
||||
|
||||
static void battery_detail_value_label(lv_obj_t *parent, const char *title, lv_obj_t **value, int x, int y)
|
||||
{
|
||||
lv_obj_t *card = create_card(parent, "", 285, 118, LV_ALIGN_TOP_LEFT, x, y);
|
||||
lv_obj_t *card = create_card(parent, "", 292, 112, LV_ALIGN_TOP_LEFT, x, y);
|
||||
|
||||
lv_obj_t *title_label = lv_label_create(card);
|
||||
lv_label_set_text(title_label, title);
|
||||
lv_obj_set_style_text_color(title_label, lv_color_hex(0xB8C0C8), 0);
|
||||
lv_obj_set_style_text_font(title_label, &lv_font_montserrat_26, 0);
|
||||
lv_obj_align(title_label, LV_ALIGN_TOP_LEFT, 16, 12);
|
||||
lv_obj_align(title_label, LV_ALIGN_TOP_LEFT, 16, 10);
|
||||
|
||||
*value = lv_label_create(card);
|
||||
lv_label_set_text(*value, "--");
|
||||
lv_obj_set_style_text_color(*value, lv_color_hex(0xFFFFFF), 0);
|
||||
lv_obj_set_style_text_font(*value, &lv_font_montserrat_30, 0);
|
||||
lv_obj_set_width(*value, 250);
|
||||
lv_obj_set_width(*value, 260);
|
||||
lv_obj_set_style_text_align(*value, LV_TEXT_ALIGN_LEFT, 0);
|
||||
lv_obj_align(*value, LV_ALIGN_TOP_LEFT, 16, 58);
|
||||
lv_obj_align(*value, LV_ALIGN_TOP_LEFT, 16, 54);
|
||||
}
|
||||
|
||||
static void update_battery_detail_widgets()
|
||||
@@ -715,36 +715,77 @@ static void create_battery_detail_screen()
|
||||
|
||||
current_dashboard_screen = SCREEN_BATTERY_DETAIL;
|
||||
|
||||
// Match the main dashboard status bar layout.
|
||||
lv_obj_t *system_card = create_card(battery_detail_page, "", 960, 48, LV_ALIGN_TOP_MID, 0, 12);
|
||||
lv_obj_add_flag(system_card, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_event_cb(system_card, system_card_event_cb, LV_EVENT_CLICKED, nullptr);
|
||||
|
||||
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);
|
||||
lv_obj_set_style_text_font(title, &lv_font_montserrat_26, 0);
|
||||
lv_obj_align(title, LV_ALIGN_LEFT_MID, 22, 0);
|
||||
lv_obj_t *detail_status_dot = lv_obj_create(system_card);
|
||||
lv_obj_set_size(detail_status_dot, 18, 18);
|
||||
lv_obj_set_style_radius(detail_status_dot, LV_RADIUS_CIRCLE, 0);
|
||||
lv_obj_set_style_bg_color(detail_status_dot, last_cargo_api_ok ? lv_color_hex(0x32D583) : lv_color_hex(0xF97066), 0);
|
||||
lv_obj_set_style_border_width(detail_status_dot, 0, 0);
|
||||
lv_obj_align(detail_status_dot, LV_ALIGN_LEFT_MID, 24, 0);
|
||||
|
||||
lv_obj_t *hint = lv_label_create(system_card);
|
||||
lv_label_set_text(hint, "Swipe right to go back");
|
||||
lv_obj_set_style_text_color(hint, lv_color_hex(0xB8C0C8), 0);
|
||||
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 *outside_label = lv_label_create(system_card);
|
||||
lv_label_set_text(outside_label, last_outside_status_temp_text.length() ? last_outside_status_temp_text.c_str() : "OUT --");
|
||||
lv_obj_set_style_text_color(outside_label, lv_color_hex(0xDDE3EA), 0);
|
||||
lv_obj_set_style_text_font(outside_label, &lv_font_montserrat_30, 0);
|
||||
lv_obj_set_width(outside_label, 220);
|
||||
lv_obj_set_style_text_align(outside_label, LV_TEXT_ALIGN_CENTER, 0);
|
||||
lv_obj_align(outside_label, LV_ALIGN_CENTER, 0, 0);
|
||||
|
||||
lv_obj_t *page_label = lv_label_create(system_card);
|
||||
lv_label_set_text(page_label, "BATTERY");
|
||||
lv_obj_set_style_text_color(page_label, lv_color_hex(0xB8C0C8), 0);
|
||||
lv_obj_set_style_text_font(page_label, &lv_font_montserrat_26, 0);
|
||||
lv_obj_set_width(page_label, 160);
|
||||
lv_obj_set_style_text_align(page_label, LV_TEXT_ALIGN_RIGHT, 0);
|
||||
lv_obj_align(page_label, LV_ALIGN_RIGHT_MID, -10, 0);
|
||||
|
||||
// Left summary card.
|
||||
lv_obj_t *soc_card = create_card(battery_detail_page, "", 300, 500, LV_ALIGN_TOP_LEFT, 32, 68);
|
||||
|
||||
battery_detail_status_label = lv_label_create(soc_card);
|
||||
lv_label_set_text(battery_detail_status_label, "BMS --");
|
||||
lv_obj_set_style_text_color(battery_detail_status_label, lv_color_hex(0xB8C0C8), 0);
|
||||
lv_obj_set_style_text_font(battery_detail_status_label, &lv_font_montserrat_26, 0);
|
||||
lv_obj_set_width(battery_detail_status_label, 260);
|
||||
lv_obj_set_style_text_align(battery_detail_status_label, LV_TEXT_ALIGN_CENTER, 0);
|
||||
lv_obj_align(battery_detail_status_label, LV_ALIGN_TOP_MID, 0, 34);
|
||||
|
||||
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);
|
||||
lv_obj_set_style_text_font(battery_detail_soc_label, &lv_font_montserrat_48, 0);
|
||||
lv_obj_set_width(battery_detail_soc_label, 260);
|
||||
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);
|
||||
lv_obj_align(battery_detail_soc_label, LV_ALIGN_TOP_MID, 0, 150);
|
||||
|
||||
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);
|
||||
battery_detail_estimate_label = lv_label_create(soc_card);
|
||||
lv_label_set_text(battery_detail_estimate_label, "--");
|
||||
lv_obj_set_style_text_color(battery_detail_estimate_label, lv_color_hex(0xDDE3EA), 0);
|
||||
lv_obj_set_style_text_font(battery_detail_estimate_label, &lv_font_montserrat_30, 0);
|
||||
lv_obj_set_width(battery_detail_estimate_label, 260);
|
||||
lv_obj_set_style_text_align(battery_detail_estimate_label, LV_TEXT_ALIGN_CENTER, 0);
|
||||
lv_obj_align(battery_detail_estimate_label, LV_ALIGN_TOP_MID, 0, 258);
|
||||
|
||||
lv_obj_t *back_hint = lv_label_create(soc_card);
|
||||
lv_label_set_text(back_hint, "Swipe right to go back");
|
||||
lv_obj_set_style_text_color(back_hint, lv_color_hex(0x7D8996), 0);
|
||||
lv_obj_set_style_text_font(back_hint, &lv_font_montserrat_26, 0);
|
||||
lv_obj_set_width(back_hint, 260);
|
||||
lv_obj_set_style_text_align(back_hint, LV_TEXT_ALIGN_CENTER, 0);
|
||||
lv_obj_align(back_hint, LV_ALIGN_BOTTOM_MID, 0, -28);
|
||||
|
||||
// Right-side compact metrics. Fits fully within 1024x600.
|
||||
battery_detail_value_label(battery_detail_page, "Voltage", &battery_detail_voltage_label, 356, 68);
|
||||
battery_detail_value_label(battery_detail_page, "Current", &battery_detail_current_label, 670, 68);
|
||||
battery_detail_value_label(battery_detail_page, "Power", &battery_detail_power_label, 356, 192);
|
||||
battery_detail_value_label(battery_detail_page, "Remaining", &battery_detail_remaining_label, 670, 192);
|
||||
battery_detail_value_label(battery_detail_page, "Capacity", &battery_detail_capacity_label, 356, 316);
|
||||
battery_detail_value_label(battery_detail_page, "Battery Temp", &battery_detail_temp_label, 670, 316);
|
||||
battery_detail_value_label(battery_detail_page, "Cell Delta", &battery_detail_delta_label, 356, 440);
|
||||
|
||||
reset_battery_detail_widget_cache();
|
||||
update_battery_detail_widgets();
|
||||
|
||||
Reference in New Issue
Block a user