Fix BLE UI log area overlapping bottom buttons.
Constrain log to a scroll box above the button bar. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -76,6 +76,7 @@ static void append_log(const char *line) {
|
||||
}
|
||||
if (lbl_log) {
|
||||
lv_label_set_text(lbl_log, g_log);
|
||||
lv_obj_scroll_to_view(lbl_log, LV_ANIM_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,34 +225,47 @@ void ble_ui_create() {
|
||||
lv_obj_set_pos(lbl_echo, 10, 114);
|
||||
|
||||
lv_obj_t *hint = lv_label_create(scr);
|
||||
lv_label_set_text(hint, "Phone: nRF Connect / Serial BT Terminal");
|
||||
lv_label_set_text(hint, "App: nRF Connect / Serial BT");
|
||||
lv_obj_set_style_text_color(hint, lv_color_hex(COL_MUTED), 0);
|
||||
lv_obj_set_style_text_font(hint, &lv_font_montserrat_14, 0);
|
||||
lv_obj_set_pos(hint, 10, 134);
|
||||
|
||||
lbl_log = lv_label_create(scr);
|
||||
lv_label_set_text(lbl_log, g_log);
|
||||
lv_label_set_long_mode(lbl_log, LV_LABEL_LONG_WRAP);
|
||||
lv_obj_set_width(lbl_log, UI_HOR_RES - 20);
|
||||
lv_obj_set_style_text_color(lbl_log, lv_color_hex(COL_INK), 0);
|
||||
lv_obj_set_style_text_font(lbl_log, &lv_font_montserrat_14, 0);
|
||||
lv_obj_set_pos(lbl_log, 10, 156);
|
||||
|
||||
const int bw = 72;
|
||||
const int bh = 36;
|
||||
const int y = UI_VER_RES - bh - 8;
|
||||
const int btn_y = UI_VER_RES - bh - 8;
|
||||
const int log_y = 154;
|
||||
const int log_h = btn_y - log_y - 6; // 不侵入底部按钮带
|
||||
|
||||
lv_obj_t *log_box = lv_obj_create(scr);
|
||||
lv_obj_set_pos(log_box, 8, log_y);
|
||||
lv_obj_set_size(log_box, UI_HOR_RES - 16, log_h);
|
||||
lv_obj_set_style_bg_color(log_box, lv_color_hex(0x121A24), 0);
|
||||
lv_obj_set_style_bg_opa(log_box, LV_OPA_COVER, 0);
|
||||
lv_obj_set_style_border_width(log_box, 0, 0);
|
||||
lv_obj_set_style_radius(log_box, 6, 0);
|
||||
lv_obj_set_style_pad_all(log_box, 6, 0);
|
||||
lv_obj_set_scroll_dir(log_box, LV_DIR_VER);
|
||||
lv_obj_clear_flag(log_box, LV_OBJ_FLAG_SCROLL_ELASTIC);
|
||||
|
||||
lbl_log = lv_label_create(log_box);
|
||||
lv_label_set_text(lbl_log, g_log);
|
||||
lv_label_set_long_mode(lbl_log, LV_LABEL_LONG_WRAP);
|
||||
lv_obj_set_width(lbl_log, UI_HOR_RES - 36);
|
||||
lv_obj_set_style_text_color(lbl_log, lv_color_hex(COL_INK), 0);
|
||||
lv_obj_set_style_text_font(lbl_log, &lv_font_montserrat_14, 0);
|
||||
|
||||
btn_adv = make_btn(scr, "Stop Adv", COL_BTN_ACC, on_adv, bw, bh);
|
||||
lbl_adv = lv_obj_get_child(btn_adv, 0);
|
||||
lv_obj_set_pos(btn_adv, 8, y);
|
||||
lv_obj_set_pos(btn_adv, 8, btn_y);
|
||||
|
||||
lv_obj_t *btn_echo = make_btn(scr, "Echo", COL_BTN, on_echo, bw, bh);
|
||||
lv_obj_set_pos(btn_echo, 8 + bw + 6, y);
|
||||
lv_obj_set_pos(btn_echo, 8 + bw + 6, btn_y);
|
||||
|
||||
lv_obj_t *btn_ping = make_btn(scr, "Ping", COL_BTN_ACC, on_ping, bw, bh);
|
||||
lv_obj_set_pos(btn_ping, 8 + 2 * (bw + 6), y);
|
||||
lv_obj_set_pos(btn_ping, 8 + 2 * (bw + 6), btn_y);
|
||||
|
||||
lv_obj_t *btn_clear = make_btn(scr, "Clear", COL_BTN_WARN, on_clear, bw, bh);
|
||||
lv_obj_set_pos(btn_clear, 8 + 3 * (bw + 6), y);
|
||||
lv_obj_set_pos(btn_clear, 8 + 3 * (bw + 6), btn_y);
|
||||
|
||||
refresh_static();
|
||||
refresh_state();
|
||||
|
||||
Reference in New Issue
Block a user