Hi
I am to make a radio button from the check box. The matter I have faced is that I don’t know really how to pass user data arguments into the function.
The code I have used so far with loads of warnings that works is as follows.
lv_obj_t * ViewSelection[4];
static void VIEW_event_handler(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);
char userdata = lv_event_get_user_data(e);
if(code == LV_EVENT_RELEASED)
{
switch(userdata)
{
case 1:
lv_obj_clear_state(ViewSelection[1], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[2], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[3], LV_STATE_CHECKED);
break;
case 2:
lv_obj_clear_state(ViewSelection[0], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[2], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[3], LV_STATE_CHECKED);
break;
case 3:
lv_obj_clear_state(ViewSelection[0], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[1], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[3], LV_STATE_CHECKED);
break;
case 4:
lv_obj_clear_state(ViewSelection[0], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[1], LV_STATE_CHECKED);
lv_obj_clear_state(ViewSelection[2], LV_STATE_CHECKED);
break;
}
}
}
lv_obj_t* CreateScreenMenuView(void)
{
ScreenMenu = lv_obj_create(NULL);
lv_scr_load_anim(ScreenMenu,LV_SCR_LOAD_ANIM_FADE_ON, 200, 0, true);
for (char i = 0;i<4;i++)
{
ViewSelection[i] = lv_checkbox_create(ScreenMenu);
lv_obj_add_event_cb(ViewSelection[i],VIEW_event_handler,LV_EVENT_RELEASED,i+1);
}
lv_obj_set_pos(ViewSelection[0],100,100);
lv_obj_align_to(ViewSelection[1],ViewSelection[0],LV_ALIGN_OUT_BOTTOM_LEFT,0,30);
lv_obj_align_to(ViewSelection[2],ViewSelection[1],LV_ALIGN_OUT_BOTTOM_LEFT,0,30);
lv_obj_align_to(ViewSelection[3],ViewSelection[2],LV_ALIGN_OUT_BOTTOM_LEFT,0,30);
return ScreenMenu;
}
The warning says
" passing argument 4 of ‘lv_obj_add_event_cb’ makes pointer from integer without a cast [-Wint-conversion] "