Use Clicked, Double-Clicked and Longpressed for Items in a genlist
Hello.
I would like to use all variants of "using" an Item in a genlist to work with it.
- click on Item
- double-click
- longpressed
I solved my problem with a timer to identify a single click.
It works, but why start the timer in the unselect func and not in the selected func ? Ideas ?
Ecore_Timer* my_click_timer;
bool timer_activ;
bool btn_click;
bool btn_doubleclick;
static Eina_Bool
click_timer(void *data)
{
if (btn_click && !data.day_btn_doubleclick)
config_exercises_cb(ad, NULL, last_event_info);
timer_activ = false;
return (ECORE_CALLBACK_CANCEL);
}
static void
gl_selected_cb(void *data, Evas_Object *obj, void *event_info)
{
btn_click = true;
}
static void
gl_unselected_cb(void *data, Evas_Object *obj, void *event_info)
{
// start timer and variable for click event - only one to detect double click
if (!timer_activ)
{
last_event_info = event_info;
my_click_timer = ecore_timer_add(CLICK_TIME, click_timer , day_data.my_ad);
day_data.day_timer_activ = true;
btn_click = false;
btn_doubleclick = false;
}
}
static void
doubleclick(void *data, Evas_Object *obj, void *event_info)
{
...
day_data.day_btn_doubleclick = true;
...
//whatever to be done on double click;
}
static void
longclick(void *data, Evas_Object *obj, void *event_info)
{
...
day_data.day_btn_doubleclick = true;
...
//whatever to be done on long click;
}
void
main_cb(void *data, Evas_Object *obj, void *event_info)
{
// Variables click event
timer_activ = false;
btn_click = false;
btn_doubleclick = false;
evas_object_smart_callback_add(genlist, "selected", gl_selected_cb, ad);
evas_object_smart_callback_add(genlist, "unselected", gl_unselected_cb, ad);
evas_object_smart_callback_add(genlist, "clicked,double", doubleclick, ad);
evas_object_smart_callback_add(genlist, "longpressed", longclick, ad);
...
}