Add get_obj_type_name

This commit is contained in:
fvanroie 2021-03-17 19:52:52 +01:00
parent 6c69a235c1
commit b8bbf0c642
4 changed files with 28 additions and 9 deletions

View File

@ -1407,12 +1407,14 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attr_p, const char* p
update ? (void)(obj->user_data.groupid = (uint8_t)val) : hasp_out_int(obj, attr, obj->user_data.groupid);
break; // attribute_found
case ATTR_OBJ:
if(update) LOG_WARNING(TAG_ATTR, F(D_ATTRIBUTE_READ_ONLY), attr_p);
hasp_out_str(obj, attr, get_obj_type_name(obj));
break; // attribute_found
case ATTR_OBJID:
if(update) {
LOG_WARNING(TAG_ATTR, F(D_ATTRIBUTE_READ_ONLY), attr_p);
} else {
hasp_out_int(obj, attr, obj->user_data.objid);
}
if(update) LOG_WARNING(TAG_ATTR, F(D_ATTRIBUTE_READ_ONLY), attr_p);
hasp_out_int(obj, attr, obj->user_data.objid);
break; // attribute_found
case ATTR_X:

View File

@ -314,5 +314,6 @@ _HASP_ATTRIBUTE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t)
/* hasp user data */
#define ATTR_GROUPID 48986
#define ATTR_OBJID 41010
#define ATTR_OBJ 53623
#endif

View File

@ -152,6 +152,20 @@ bool hasp_find_id_from_obj(lv_obj_t* obj, uint8_t* pageid, uint8_t* objid)
// }
// }
/**
* Get the object type name of an object
* @param obj an lv_obj_t* of the object to check its type
* @return name of the object type
* @note
*/
const char* get_obj_type_name(lv_obj_t* obj)
{
lv_obj_type_t list;
lv_obj_get_type(obj, &list);
const char* objtype = list.type[0];
return objtype + 3; // skip lv_
}
/**
* Check if an lvgl objecttype name corresponds to a given HASP object ID
* @param obj an lv_obj_t* of the object to check its type
@ -352,7 +366,8 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
hasp_update_sleep_state(); // wakeup?
dispatch_object_generic_event(obj, eventid); // send object event
dispatch_normalized_group_value(obj->user_data.groupid, NORMALIZE(dispatch_get_event_state(eventid), 0, 1), obj);
dispatch_normalized_group_value(obj->user_data.groupid, obj, dispatch_get_event_state(eventid), HASP_EVENT_OFF,
HASP_EVENT_ON);
}
/**
@ -390,7 +405,7 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
hasp_update_sleep_state(); // wakeup?
dispatch_object_toggle_event(obj, val);
dispatch_normalized_group_value(obj->user_data.groupid, NORMALIZE(val, 0, 1), obj);
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, HASP_EVENT_OFF, HASP_EVENT_ON);
} else if(event == LV_EVENT_DELETE) {
LOG_VERBOSE(TAG_HASP, F(D_OBJECT_DELETED));
@ -454,7 +469,7 @@ static void selector_event_handler(lv_obj_t* obj, lv_event_t event)
// hasp_send_obj_attribute_str(obj, property, buffer);
dispatch_object_selection_changed(obj, val, buffer);
if(max > 0) dispatch_normalized_group_value(obj->user_data.groupid, NORMALIZE(val, 0, max), obj);
if(max > 0) dispatch_normalized_group_value(obj->user_data.groupid, obj, val, 0, max);
} else if(event == LV_EVENT_DELETE) {
LOG_VERBOSE(TAG_HASP, F(D_OBJECT_DELETED));
@ -500,7 +515,7 @@ void slider_event_handler(lv_obj_t* obj, lv_event_t event)
return;
}
dispatch_object_value_changed(obj, val);
dispatch_normalized_group_value(obj->user_data.groupid, NORMALIZE(val, min, max), obj);
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, min, max);
} else if(event == LV_EVENT_DELETE) {
LOG_VERBOSE(TAG_HASP, F(D_OBJECT_DELETED));

View File

@ -66,6 +66,7 @@ lv_obj_t* hasp_find_obj_from_parent_id(lv_obj_t* parent, uint8_t objid);
// lv_obj_t * hasp_find_obj_from_page_id(uint8_t pageid, uint8_t objid);
bool hasp_find_id_from_obj(lv_obj_t* obj, uint8_t* pageid, uint8_t* objid);
// bool check_obj_type_str(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype);
const char* get_obj_type_name(lv_obj_t* obj);
bool check_obj_type(lv_obj_t* obj, lv_hasp_obj_type_t haspobjtype);
void hasp_object_tree(lv_obj_t* parent, uint8_t pageid, uint16_t level);
void hasp_object_delete(lv_obj_t* obj);