/** * Open a terminal * @return pointer to the terminal window */ lv_obj_t * terminal_create(void) { static lv_style_t style_bg; lv_style_copy(&style_bg, &lv_style_pretty); style_bg.body.main_color = LV_COLOR_MAKE(0x30, 0x30, 0x30); style_bg.body.grad_color = LV_COLOR_MAKE(0x30, 0x30, 0x30); style_bg.body.border.color = LV_COLOR_WHITE; style_bg.text.color = LV_COLOR_MAKE(0xE0, 0xE0, 0xE0); win = lv_win_create(lv_scr_act(), NULL); lv_win_set_style(win, LV_WIN_STYLE_BG, &style_bg); lv_obj_set_size(win, TERMINAL_WIDTH, TERMINAL_HEIGHT); lv_win_set_sb_mode(win, LV_SB_MODE_AUTO); lv_win_add_btn(win, SYMBOL_CLOSE, win_close_action); /*Make the window's content responsive*/ lv_win_set_layout(win, LV_LAYOUT_PRETTY); /*Create a label for the text of the terminal*/ label = lv_label_create(win, NULL); lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); lv_obj_set_width(label, lv_win_get_width(win)); lv_label_set_static_text(label, txt_log); /*Use the text array directly*/ /*Create a clear button*/ clr_btn = lv_btn_create(win, NULL); lv_cont_set_fit(clr_btn, true, true); lv_btn_set_action(clr_btn, LV_BTN_ACTION_CLICK, clr_click_action); lv_obj_t * btn_label = lv_label_create(clr_btn, NULL); lv_label_set_text(btn_label, "Clear"); return win; }
/** * Create lists to test their functionalities */ void lv_test_list_1(void) { /* Default object. It will be an empty list*/ list1 = lv_list_create(lv_scr_act(), NULL); lv_obj_set_pos(list1, 10, 10); list2 = lv_list_create(lv_scr_act(), NULL); lv_obj_align(list2, list1, LV_ALIGN_OUT_RIGHT_TOP, 20, 0); lv_list_add(list2, SYMBOL_FILE, "File", NULL); lv_list_add(list2, SYMBOL_DIRECTORY, "Directory", NULL); lv_list_add(list2, &img_flower_icon, "Image icon", NULL); lv_obj_set_width(list2, 100); list3 = lv_list_create(lv_scr_act(), list2); lv_obj_align(list3, list2, LV_ALIGN_OUT_RIGHT_TOP, 20, 0); lv_list_add(list3, NULL, "No icon", NULL); lv_list_add(list3, SYMBOL_CLOSE, "", NULL); lv_list_add(list3, SYMBOL_UP, "Up", NULL); lv_list_add(list3, SYMBOL_DOWN, "Down", NULL); static lv_style_t sb; static lv_style_t bg; lv_style_copy(&sb, &lv_style_pretty_color); lv_style_copy(&bg, &lv_style_pretty_color); sb.body.padding.hor = -10; sb.body.padding.inner = 10; bg.body.padding.hor = 20; list4 = lv_list_create(lv_scr_act(), list3); lv_list_set_style(list4, LV_LIST_STYLE_BG, &bg); lv_list_set_style(list4, LV_LIST_STYLE_SB, &sb); lv_obj_align(list4, list3, LV_ALIGN_OUT_RIGHT_TOP, 20, 0); lv_obj_set_width(list4, 200); /*Add list up/down buttons*/ lv_obj_t *btn_up = lv_btn_create(lv_scr_act(), NULL); lv_obj_align(btn_up, list1, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10); lv_btn_set_action(btn_up, LV_BTN_ACTION_CLICK, list_move); lv_obj_set_free_num(btn_up, 0); lv_obj_t *label = lv_label_create(btn_up, NULL); lv_label_set_text(label, SYMBOL_UP); lv_obj_t *btn_down = lv_btn_create(lv_scr_act(), btn_up); lv_obj_align(btn_down, btn_up, LV_ALIGN_OUT_RIGHT_MID, 10, 0); lv_obj_set_free_num(btn_down, 1); label = lv_label_create(btn_down, NULL); lv_label_set_text(label, SYMBOL_DOWN); }
/** * Create buttons to test their functionalities */ void lv_test_btn_1(void) { /* Create a button which looks well */ lv_obj_t * btn1 = lv_btn_create(lv_scr_act(), NULL); /* Create a default button manually set to toggled state*/ lv_obj_t * btn2 = lv_btn_create(lv_scr_act(), NULL); lv_obj_align(btn2, btn1, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); lv_btn_set_state(btn2, LV_BTN_STATE_TGL_REL); /* Create a button which can be toggled */ lv_obj_t * btn3 = lv_btn_create(lv_scr_act(), NULL); lv_obj_align(btn3, btn2, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); lv_btn_set_toggle(btn3, true); /* Test actions: * Press: increase width, Release: decrease width, Long press: delete */ lv_obj_t * btn4 = lv_btn_create(lv_scr_act(), NULL); lv_obj_align(btn4, btn1, LV_ALIGN_OUT_RIGHT_MID, 20, 0); lv_btn_set_action(btn4, LV_BTN_ACTION_PR, width_inc); lv_btn_set_action(btn4, LV_BTN_ACTION_CLICK, width_dec); lv_btn_set_action(btn4, LV_BTN_ACTION_LONG_PR, lv_obj_del); /* Test styles and copy. Same as 'btn4' but different styles */ static lv_style_t style_rel; lv_style_copy(&style_rel, &lv_style_pretty); style_rel.body.main_color = LV_COLOR_ORANGE; style_rel.body.grad_color = LV_COLOR_BLACK; style_rel.body.border.color = LV_COLOR_RED; style_rel.body.shadow.color = LV_COLOR_MARRON; style_rel.body.shadow.width = 10; static lv_style_t style_pr; lv_style_copy(&style_pr, &lv_style_pretty); style_pr.body.empty = 1; style_pr.body.border.color = LV_COLOR_RED; style_pr.body.border.width = 4; /*Skip 'tpr' because it will be let the same*/ static lv_style_t style_tpr; lv_style_copy(&style_tpr, &lv_style_pretty); style_tpr.body.empty = 1; style_tpr.body.border.color = LV_COLOR_RED; style_tpr.body.border.width = 4; static lv_style_t style_ina; lv_style_copy(&style_ina, &lv_style_pretty); style_ina.body.main_color = LV_COLOR_SILVER; style_ina.body.grad_color = LV_COLOR_GRAY; style_ina.body.border.color = LV_COLOR_RED; /*Create styled button*/ lv_obj_t * btn5 = lv_btn_create(lv_scr_act(), btn4); lv_obj_align(btn5, btn4, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); lv_btn_set_style(btn5, LV_BTN_STYLE_REL, &style_rel); lv_btn_set_style(btn5, LV_BTN_STYLE_PR, &style_pr); lv_btn_set_style(btn5, LV_BTN_STYLE_TGL_PR, &style_tpr); lv_btn_set_style(btn5, LV_BTN_STYLE_INA, &style_ina); lv_btn_set_toggle(btn5, true); /* Test style copy and inactive state*/ lv_obj_t * btn6 = lv_btn_create(lv_scr_act(), btn5); lv_obj_align(btn6, btn5, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); lv_btn_set_state(btn6, LV_BTN_STATE_INA); /*Test horizontal fit and default layout (CENTER)*/ lv_obj_t * btn7 = lv_btn_create(lv_scr_act(), NULL); lv_btn_set_fit(btn7, true, false); lv_obj_t *label = lv_label_create(btn7, NULL); lv_label_set_text(label, "A quite long text"); label = lv_label_create(btn7, NULL); lv_label_set_text(label, "Short text"); lv_obj_align(btn7, btn4, LV_ALIGN_OUT_RIGHT_TOP, 20, 0); }