diff --git a/src/hasp/hasp_attribute.cpp b/src/hasp/hasp_attribute.cpp index 7e711cdf..1089bf69 100644 --- a/src/hasp/hasp_attribute.cpp +++ b/src/hasp/hasp_attribute.cpp @@ -1310,8 +1310,6 @@ static void hasp_process_obj_attribute_txt(lv_obj_t* obj, const char* attr, cons bool hasp_process_obj_attribute_val(lv_obj_t* obj, const char* attr, int16_t intval, bool boolval, bool update) { - // int16_t intval = atoi(payload); - if(check_obj_type(obj, LV_HASP_BUTTON)) { if(lv_btn_get_checkable(obj)) { if(update) { @@ -1348,6 +1346,8 @@ bool hasp_process_obj_attribute_val(lv_obj_t* obj, const char* attr, int16_t int lv_roller_set_selected(obj, (uint16_t)intval, LV_ANIM_ON); } else if(check_obj_type(obj, LV_HASP_BAR)) { update ? lv_bar_set_value(obj, intval, LV_ANIM_ON) : attr_out_int(obj, attr, lv_bar_get_value(obj)); + } else if(check_obj_type(obj, LV_HASP_TABVIEW)) { + update ? lv_tabview_set_tab_act(obj, intval, LV_ANIM_ON) : attr_out_int(obj, attr, lv_tabview_get_tab_act(obj)); } else { return false; } diff --git a/src/hasp/hasp_event.cpp b/src/hasp/hasp_event.cpp index 3461010e..82328a63 100644 --- a/src/hasp/hasp_event.cpp +++ b/src/hasp/hasp_event.cpp @@ -25,6 +25,8 @@ #include "hasp_conf.h" #include "hasplib.h" +#include "lv_core/lv_obj.h" // for tabview ext + static lv_style_int_t last_value_sent; static lv_color_t last_color_sent; @@ -420,6 +422,15 @@ void selector_event_handler(lv_obj_t* obj, lv_event_t event) lv_roller_get_selected_str(obj, buffer, sizeof(buffer)); break; + case LV_HASP_TABVIEW: { + val = lv_tabview_get_tab_act(obj); + max = lv_tabview_get_tab_count(obj) - 1; + + lv_tabview_ext_t* ext = (lv_tabview_ext_t*)lv_obj_get_ext_attr(obj); + strcpy(buffer, ext->tab_name_ptr[val]); + break; + } + case LV_HASP_TABLE: { uint16_t row; uint16_t col; diff --git a/src/hasp/hasp_object.cpp b/src/hasp/hasp_object.cpp index f1c09788..4117ebf1 100644 --- a/src/hasp/hasp_object.cpp +++ b/src/hasp/hasp_object.cpp @@ -560,18 +560,25 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id) obj = lv_tabview_create(parent_obj, NULL); // No event handler for tabs if(obj) { - lv_obj_t* tab; - tab = lv_tabview_add_tab(obj, "tab 1"); - // lv_obj_set_user_data(tab, id + 1); - tab = lv_tabview_add_tab(obj, "tab 2"); - // lv_obj_set_user_data(tab, id + 2); - tab = lv_tabview_add_tab(obj, "tab 3"); - // lv_obj_set_user_data(tab, id + 3); - + lv_obj_set_event_cb(obj, selector_event_handler); obj->user_data.objid = LV_HASP_TABVIEW; } break; + case LV_HASP_TAB: + case HASP_OBJ_TAB: + if(parent_obj && parent_obj->user_data.objid == LV_HASP_TABVIEW) { + obj = lv_tabview_add_tab(parent_obj, "Tab"); + if(obj) { + lv_obj_set_event_cb(obj, generic_event_handler); + obj->user_data.objid = LV_HASP_TAB; + } + } else { + LOG_WARNING(TAG_HASP, F("Parent of a tab must be a tabview object")); + return; + } + break; + #endif /* ----- Color Objects ------ */ case LV_HASP_CPICKER: diff --git a/src/hasp/hasp_object.h b/src/hasp/hasp_object.h index 6fca9528..16e4adfb 100644 --- a/src/hasp/hasp_object.h +++ b/src/hasp/hasp_object.h @@ -110,6 +110,7 @@ void object_set_normalized_group_value(uint8_t groupid, lv_obj_t* src_obj, int16 #define HASP_OBJ_OBJMASK 55395 #define HASP_OBJ_LMETER 62749 #define HASP_OBJ_TABVIEW 63226 +#define HASP_OBJ_TAB 7861 #define HASP_OBJ_ARC 64594 #endif \ No newline at end of file