// This file was generated by SquareLine Studio // SquareLine Studio version: SquareLine Studio 1.3.4 // LVGL version: 8.2.0 // Project name: Buttons #include "defines.h" #include "ui_screen.h" #include "ui.h" static void scroll_begin_event(lv_event_t* e) { /*Disable the scroll animations. Triggered when a tab button is clicked */ if (lv_event_get_code(e) == LV_EVENT_SCROLL_BEGIN) { lv_anim_t* a = (lv_anim_t*)lv_event_get_param(e); if (a) a->time = 0; } } /*void btns_value_changed_event_cb(lv_event_t * e) { lv_obj_t * btns = lv_event_get_target(e); lv_obj_t * tv = lv_obj_get_parent(btns); uint32_t id = lv_btnmatrix_get_selected_btn(btns); lv_tabview_set_act(tv, id, LV_ANIM_ON); }*/ #ifdef SHOW_TABS_AT_LEFT static void drawTabItemImage(lv_event_t *e, const void *icon) { lv_event_code_t event_code = lv_event_get_code(e); lv_obj_draw_part_dsc_t * dsc = (lv_obj_draw_part_dsc_t*)lv_event_get_param(e); lv_img_header_t header; lv_res_t res = lv_img_decoder_get_info(icon, &header); if(res != LV_RES_OK) return; lv_area_t a; a.x1 = dsc->draw_area->x1 + (lv_area_get_width(dsc->draw_area) - header.w) / 2; a.x2 = a.x1 + header.w - 1; a.y1 = dsc->draw_area->y1 + (lv_area_get_height(dsc->draw_area) - header.h) / 2; a.y2 = a.y1 + header.h - 1; lv_draw_img_dsc_t img_draw_dsc; lv_draw_img_dsc_init(&img_draw_dsc); //dsc->label_dsc->opa = LV_OPA_TRANSP; /*Hide the text if any*/ //img_draw_dsc.recolor = lv_color_make(0xFF, 0x0, 0x00); //if(lv_btnmatrix_get_selected_btn(target) == dsc->id) img_draw_dsc.recolor_opa = LV_OPA_30; lv_draw_img(dsc->draw_ctx, &img_draw_dsc, &a, icon); } #ifdef USE_HOME_PAGE static void home_button_draw_event_cb(lv_event_t *e) { drawTabItemImage(e, &ui_img_icon_home_png); } #endif #ifdef USE_MODULE_CONTROLS static void controls_button_draw_event_cb(lv_event_t *e) { drawTabItemImage(e, &ui_img_icon_switch_png); } #endif #ifdef USE_MODULE_SETTINGS static void settings_button_draw_event_cb(lv_event_t *e) { drawTabItemImage(e, &ui_img_icon_settings_png); } #endif #endif void ui_init_screen_events() { #ifdef USE_MODULE_SETTINGS // lv_obj_add_event_cb(ui_Dropdown1, ui_event_Dropdown, LV_EVENT_VALUE_CHANGED, NULL); // lv_obj_add_event_cb(ui_Dropdown2, ui_event_Dropdown, LV_EVENT_VALUE_CHANGED, NULL); // lv_obj_add_event_cb(ui_Dropdown3, ui_event_Dropdown, LV_EVENT_VALUE_CHANGED, NULL); // lv_obj_add_event_cb(ui_Dropdown4, ui_event_Dropdown, LV_EVENT_VALUE_CHANGED, NULL); // lv_obj_add_event_cb(ui_Dropdown5, ui_event_Dropdown, LV_EVENT_VALUE_CHANGED, NULL); // lv_obj_add_event_cb(ui_Dropdown6, ui_event_Dropdown, LV_EVENT_VALUE_CHANGED, NULL); #endif #ifdef USE_MODULE_CONTROLS #ifdef USE_MODULE_SETTINGS // lv_obj_add_event_cb(ui_SwitchesControllerType, ui_event_Dropdown, LV_EVENT_VALUE_CHANGED, NULL); #endif lv_obj_add_event_cb(ui_Panel1, ui_event_Panel, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(ui_Panel2, ui_event_Panel, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(ui_Panel3, ui_event_Panel, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(ui_Panel4, ui_event_Panel, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(ui_Panel5, ui_event_Panel, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(ui_Panel6, ui_event_Panel, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(ui_Panel7, ui_event_Panel, LV_EVENT_CLICKED, NULL); #endif #ifdef SHOW_TABS_AT_LEFT #ifdef USE_MODULE_CONTROLS lv_obj_add_event_cb(lv_obj_get_child(ui_MainTabView, 0), controls_button_draw_event_cb, LV_EVENT_DRAW_PART_END, NULL); #endif #endif //Disable scroll animation #ifdef USE_MAIN_TAB_VIEW lv_obj_add_event_cb(lv_tabview_get_content(ui_MainTabView), scroll_begin_event,LV_EVENT_SCROLL_BEGIN, NULL); lv_obj_clear_flag(lv_tabview_get_content(ui_MainTabView), LV_OBJ_FLAG_SCROLLABLE); #endif } void ui_init_screen(void) { ui_Screen1 = lv_obj_create(NULL); lv_obj_clear_flag(ui_Screen1, LV_OBJ_FLAG_SCROLLABLE); /// Flags ui_Main = lv_obj_create(ui_Screen1); lv_obj_remove_style_all(ui_Main); lv_obj_set_width(ui_Main, 800); lv_obj_set_height(ui_Main, 480); lv_obj_set_align(ui_Main, LV_ALIGN_CENTER); lv_obj_set_flex_flow(ui_Main, LV_FLEX_FLOW_COLUMN); lv_obj_set_flex_align(ui_Main, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START); lv_obj_clear_flag(ui_Main, LV_OBJ_FLAG_SCROLLABLE); /// Flags #ifdef SHOW_TOP_BAR ui_TopBar = lv_obj_create(ui_Main); lv_obj_remove_style_all(ui_TopBar); lv_obj_set_width(ui_TopBar, lv_pct(100)); lv_obj_set_height(ui_TopBar, lv_pct(10)); lv_obj_set_align(ui_TopBar, LV_ALIGN_TOP_MID); lv_obj_set_flex_flow(ui_TopBar, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(ui_TopBar, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); lv_obj_clear_flag(ui_TopBar, LV_OBJ_FLAG_SCROLLABLE); /// Flags //lv_obj_set_style_bg_color(ui_TopBar, lv_color_hex(0x333333), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_color(ui_TopBar, lv_color_hex(0x000000), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui_TopBar, 255, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_color(ui_TopBar, lv_color_hex(0xAAAAAA), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_opa(ui_TopBar, 255, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(ui_TopBar, 2, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_side(ui_TopBar, LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_row(ui_TopBar, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_column(ui_TopBar, 15, LV_PART_MAIN | LV_STATE_DEFAULT); ui_TopBarLeftContainer = lv_obj_create(ui_TopBar); lv_obj_remove_style_all(ui_TopBarLeftContainer); lv_obj_set_width(ui_TopBarLeftContainer, lv_pct(30)); lv_obj_set_height(ui_TopBarLeftContainer, lv_pct(100)); lv_obj_set_align(ui_TopBarLeftContainer, LV_ALIGN_CENTER); lv_obj_set_flex_flow(ui_TopBarLeftContainer, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(ui_TopBarLeftContainer, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); lv_obj_clear_flag(ui_TopBarLeftContainer, LV_OBJ_FLAG_SCROLLABLE); /// Flags lv_obj_set_style_pad_left(ui_TopBarLeftContainer, 10, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui_TopBarLeftContainer, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui_TopBarLeftContainer, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui_TopBarLeftContainer, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_row(ui_TopBarLeftContainer, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_column(ui_TopBarLeftContainer, 10, LV_PART_MAIN | LV_STATE_DEFAULT); #ifdef USE_MODULE_CONTROLS ui_ControlsStatus = lv_img_create(ui_TopBarLeftContainer); lv_img_set_src(ui_ControlsStatus, &ui_img_icon_switch_png); lv_obj_set_width(ui_ControlsStatus, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_ControlsStatus, LV_SIZE_CONTENT); /// 1 lv_obj_set_align(ui_ControlsStatus, LV_ALIGN_CENTER); lv_obj_add_flag(ui_ControlsStatus, LV_OBJ_FLAG_ADV_HITTEST); /// Flags lv_obj_clear_flag(ui_ControlsStatus, LV_OBJ_FLAG_SCROLLABLE); /// Flags lv_obj_set_style_opa(ui_ControlsStatus, 50, LV_PART_MAIN | LV_STATE_DEFAULT); #endif ui_TopBarMiddleContainer = lv_obj_create(ui_TopBar); lv_obj_remove_style_all(ui_TopBarMiddleContainer); lv_obj_set_width(ui_TopBarMiddleContainer, lv_pct(30)); lv_obj_set_height(ui_TopBarMiddleContainer, lv_pct(100)); lv_obj_set_align(ui_TopBarMiddleContainer, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_TopBarMiddleContainer, LV_OBJ_FLAG_SCROLLABLE); /// Flags ui_TopBarRightContainer = lv_obj_create(ui_TopBar); lv_obj_remove_style_all(ui_TopBarRightContainer); lv_obj_set_width(ui_TopBarRightContainer, lv_pct(30)); lv_obj_set_height(ui_TopBarRightContainer, lv_pct(100)); lv_obj_set_align(ui_TopBarRightContainer, LV_ALIGN_CENTER); lv_obj_set_flex_flow(ui_TopBarRightContainer, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(ui_TopBarRightContainer, LV_FLEX_ALIGN_END, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); lv_obj_clear_flag(ui_TopBarRightContainer, LV_OBJ_FLAG_SCROLLABLE); /// Flags lv_obj_set_style_pad_left(ui_TopBarRightContainer, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui_TopBarRightContainer, 10, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui_TopBarRightContainer, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui_TopBarRightContainer, 0, LV_PART_MAIN | LV_STATE_DEFAULT); #ifdef ENABLE_RTC_CLOCK ui_DateTime = lv_label_create(ui_TopBarRightContainer); lv_obj_set_width(ui_DateTime, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_DateTime, LV_SIZE_CONTENT); /// 1 lv_obj_set_x(ui_DateTime, -100); lv_obj_set_y(ui_DateTime, 0); lv_obj_set_align(ui_DateTime, LV_ALIGN_CENTER); lv_label_set_text(ui_DateTime, "00:00"); lv_obj_set_style_text_color(ui_DateTime, lv_color_hex(0xD3D3D3), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui_DateTime, 255, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_DateTime, &lv_font_arial_32, LV_PART_MAIN | LV_STATE_DEFAULT); #endif #endif #ifdef USE_MAIN_TAB_VIEW #ifdef SHOW_TABS_AT_LEFT ui_MainTabView = lv_tabview_create(ui_Main, LV_DIR_LEFT, 60); #else ui_MainTabView = lv_tabview_create(ui_Main, LV_DIR_TOP, 60); #endif lv_obj_set_width(ui_MainTabView, lv_pct(100)); #ifdef SHOW_TOP_BAR lv_obj_set_height(ui_MainTabView, lv_pct(90)); #else lv_obj_set_height(ui_MainTabView, lv_pct(100)); #endif lv_obj_set_x(ui_MainTabView, 0); lv_obj_set_y(ui_MainTabView, 50); lv_obj_set_align(ui_MainTabView, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_MainTabView, LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_ELASTIC | LV_OBJ_FLAG_SCROLL_MOMENTUM | LV_OBJ_FLAG_SCROLL_CHAIN); /// Flags //lv_obj_set_style_bg_color(ui_MainTabView, lv_color_hex(0x333333), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_color(ui_MainTabView, lv_color_hex(0x000000), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui_MainTabView, 255, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_color(lv_tabview_get_tab_btns(ui_MainTabView), lv_color_hex(0xFEFEFE), LV_PART_ITEMS | LV_STATE_DEFAULT); lv_obj_set_style_text_opa(lv_tabview_get_tab_btns(ui_MainTabView), 255, LV_PART_ITEMS | LV_STATE_DEFAULT); lv_obj_set_style_text_font(lv_tabview_get_tab_btns(ui_MainTabView), &lv_font_arial_18, LV_PART_ITEMS | LV_STATE_DEFAULT); //lv_obj_set_style_bg_color(lv_tabview_get_tab_btns(ui_MainTabView), lv_color_hex(0x333333), lv_obj_set_style_bg_color(lv_tabview_get_tab_btns(ui_MainTabView), lv_color_hex(0x000000), LV_PART_ITEMS | LV_STATE_DEFAULT); // Selected button (LV_STATE_CHECKED) lv_obj_set_style_text_font(lv_tabview_get_tab_btns(ui_MainTabView), &lv_font_arial_24, LV_PART_ITEMS | LV_STATE_CHECKED); lv_obj_set_style_text_color(lv_tabview_get_tab_btns(ui_MainTabView), lv_color_hex(0x000000), LV_PART_ITEMS | LV_STATE_CHECKED); //lv_obj_set_style_bg_color(lv_tabview_get_tab_btns(ui_MainTabView), lv_color_hex(0xCACACA), LV_PART_ITEMS | LV_STATE_CHECKED); lv_obj_set_style_bg_opa(lv_tabview_get_tab_btns(ui_MainTabView), 255, LV_PART_ITEMS | LV_STATE_DEFAULT); lv_obj_set_style_border_color(lv_tabview_get_tab_btns(ui_MainTabView), lv_color_hex(0xCACACA), LV_PART_ITEMS | LV_STATE_DEFAULT); lv_obj_set_style_border_opa(lv_tabview_get_tab_btns(ui_MainTabView), 255, LV_PART_ITEMS | LV_STATE_DEFAULT); lv_obj_set_style_border_width(lv_tabview_get_tab_btns(ui_MainTabView), 1, LV_PART_ITEMS | LV_STATE_DEFAULT); #ifdef SHOW_TABS_AT_LEFT lv_obj_set_style_border_side(lv_tabview_get_tab_btns(ui_MainTabView), LV_BORDER_SIDE_RIGHT, LV_PART_ITEMS | LV_STATE_DEFAULT); #else lv_obj_set_style_border_side(lv_tabview_get_tab_btns(ui_MainTabView), LV_BORDER_SIDE_BOTTOM, LV_PART_ITEMS | LV_STATE_DEFAULT); #endif #endif }