diff --git a/legacy/elementary/src/bin/test_genlist.c b/legacy/elementary/src/bin/test_genlist.c index ca28d7cb6a..9e905902e0 100644 --- a/legacy/elementary/src/bin/test_genlist.c +++ b/legacy/elementary/src/bin/test_genlist.c @@ -3675,93 +3675,152 @@ gl_focus_content_get(void *data, Evas_Object *obj, const char *part) } static void -gl_focus_focus_on_selection_set(Evas_Object *gl, Evas_Object *chk, Eina_Bool focus) +test_genlist_focus_focus_on_selection_set(Evas_Object *gl, + Evas_Object *chk, Eina_Bool focus) { - elm_genlist_focus_on_selection_set(gl, focus); - elm_check_state_set(chk, focus); - printf("genlist_focus_on_selection = %s\n", (focus) ? "true" : "false"); + elm_genlist_focus_on_selection_set(gl, focus); + elm_check_state_set(chk, focus); + printf("genlist_focus_on_selection = %s\n", (focus) ? "true" : "false"); } static void -gl_focus_focus_check_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +test_genlist_focus_focus_check_changed(void *data, Evas_Object *obj, + void *event_info EINA_UNUSED) { Eina_Bool nextstate = !elm_genlist_focus_on_selection_get(data); - gl_focus_focus_on_selection_set(data, obj, nextstate); + test_genlist_focus_focus_on_selection_set(data, obj, nextstate); } static void -gl_focus_focus_animate_check_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +test_genlist_focus_focus_highlight_check_changed(void *data, Evas_Object *obj, + void *event_info EINA_UNUSED) +{ + elm_win_focus_highlight_enabled_set((Evas_Object *)data, + elm_check_state_get(obj)); +} + +static void +test_genlist_focus_focus_animate_check_changed(void *data, Evas_Object *obj, + void *event_info EINA_UNUSED) { elm_win_focus_highlight_animate_set((Evas_Object *)data, elm_check_state_get(obj)); } +static Ecore_Timer *timer = NULL; +static void +_test_genlist_focus_win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + ecore_timer_del(timer); + timer = NULL; +} + +static Eina_Bool +_focus_timer_cb(void *data) +{ + elm_object_item_focus_set(data, EINA_TRUE); + timer = NULL; + + return ECORE_CALLBACK_CANCEL; +} + +static Eina_Bool +_select_timer_cb(void *data) +{ + elm_genlist_item_selected_set(data, EINA_TRUE); + timer = NULL; + + return ECORE_CALLBACK_CANCEL; +} + +static void +_focus_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + ecore_timer_del(timer); + timer = ecore_timer_add(1.5, _focus_timer_cb, data); +} + +static void +_sel_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + ecore_timer_del(timer); + timer = ecore_timer_add(1.5, _select_timer_cb, data); +} + +static void +_focus_button_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + printf("Button clicked: %s\n", (char *)data); +} void test_genlist_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Evas_Object *win, *bx, *bx_horiz, *gl, *btn, *fr, *lb; + Evas_Object *win, *bx, *bx2, *gl, *btn, *fr; + Evas_Object *bx_opt, *chk, *bx_btn, *btn_focus, *btn_sel; unsigned lhand, rhand; + Elm_Object_Item *it = NULL, *it_2 = NULL; win = elm_win_util_standard_add("genlist-item-focus", "Genlist Item Focus"); + elm_win_autodel_set(win, EINA_TRUE); + evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, + _test_genlist_focus_win_del_cb, NULL); + elm_win_focus_highlight_enabled_set(win, EINA_TRUE); elm_win_focus_highlight_animate_set(win, EINA_TRUE); - elm_win_autodel_set(win, EINA_TRUE); - bx_horiz = elm_box_add(win); - elm_box_horizontal_set(bx_horiz, EINA_TRUE); - evas_object_size_hint_weight_set(bx_horiz, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, bx_horiz); - evas_object_show(bx_horiz); - - btn = elm_button_add(bx_horiz); - elm_object_text_set(btn, "Left"); - elm_box_pack_end(bx_horiz, btn); - evas_object_show(btn); - - bx = elm_box_add(bx_horiz); + bx = elm_box_add(win); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(bx_horiz, bx); + elm_win_resize_object_add(win, bx); evas_object_show(bx); - fr = elm_frame_add(bx); - elm_object_text_set(fr, "Genlist Item Focus"); - elm_box_pack_end(bx, fr); - evas_object_show(fr); - - lb = elm_label_add(fr); - elm_object_text_set(lb, "This test cases list down the" - " focus check points related to genlist items.
" - " 1. No focus highlight on widget items
" - " 2. No animation on widget item
" - " 3. No focus movement between widget to widget items
" - " "); - elm_object_content_set(fr, lb); - evas_object_show(lb); - btn = elm_button_add(bx); elm_object_text_set(btn, "Up"); elm_box_pack_end(bx, btn); + evas_object_smart_callback_add(btn, "clicked", + _focus_button_clicked_cb, "Up"); + evas_object_show(btn); + + bx2 = elm_box_add(bx); + elm_box_horizontal_set(bx2, EINA_TRUE); + evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(bx, bx2); + evas_object_show(bx2); + + btn = elm_button_add(bx2); + elm_object_text_set(btn, "Left"); + elm_box_pack_end(bx2, btn); + evas_object_smart_callback_add(btn, "clicked", + _focus_button_clicked_cb, "Left"); evas_object_show(btn); gl = elm_genlist_add(bx); evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(bx, gl); + elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS); + elm_box_pack_end(bx2, gl); evas_object_show(gl); - elm_object_focus_set(gl, EINA_TRUE); + + btn = elm_button_add(bx2); + elm_object_text_set(btn, "Right"); + elm_box_pack_end(bx2, btn); + evas_object_smart_callback_add(btn, "clicked", + _focus_button_clicked_cb, "Right"); + evas_object_show(btn); btn = elm_button_add(bx); elm_object_text_set(btn, "Down"); elm_box_pack_end(bx, btn); - evas_object_show(btn); - - btn = elm_button_add(bx_horiz); - elm_object_text_set(btn, "Right"); - elm_box_pack_end(bx_horiz, btn); + evas_object_smart_callback_add(btn, "clicked", + _focus_button_clicked_cb, "Down"); evas_object_show(btn); itc1 = elm_genlist_item_class_new(); @@ -3785,10 +3844,13 @@ test_genlist_focus(void *data EINA_UNUSED, unsigned digit1 = lhand * 10 + rhand; elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit1, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + unsigned digit2 = (_gl_focus_objects - lhand -1) * 10 + (_gl_focus_objects - rhand -1); - elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit2, - NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + it = elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit2, + NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + if (!it_2) it_2 = it; + if (rhand == (_gl_focus_objects - 1)) elm_genlist_item_append(gl, itc4, (void*)(uintptr_t)digit1, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL); @@ -3798,7 +3860,77 @@ test_genlist_focus(void *data EINA_UNUSED, elm_genlist_item_class_free(itc1); elm_genlist_item_class_free(itc4); - evas_object_resize(win, 320, 450); + // Options + fr = elm_frame_add(bx); + elm_object_text_set(fr, "Options"); + evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(bx, fr); + evas_object_show(fr); + + bx_opt = elm_box_add(fr); + elm_box_horizontal_set(bx_opt, EINA_TRUE); + elm_object_content_set(fr, bx_opt); + evas_object_show(bx_opt); + + chk = elm_check_add(bx_opt); + elm_object_text_set(chk, "Focus Highlight"); + elm_check_state_set(chk, EINA_TRUE); + evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0); + evas_object_smart_callback_add(chk, "changed", + test_genlist_focus_focus_highlight_check_changed, + win); + elm_box_pack_end(bx_opt, chk); + evas_object_show(chk); + + chk = elm_check_add(bx_opt); + elm_object_text_set(chk, "Focus Animation"); + elm_check_state_set(chk, EINA_TRUE); + evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0); + evas_object_smart_callback_add(chk, "changed", + test_genlist_focus_focus_animate_check_changed, + win); + elm_box_pack_end(bx_opt, chk); + evas_object_show(chk); + + chk = elm_check_add(bx_opt); + elm_object_text_set(chk, "Focus on selection"); + evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0); + evas_object_smart_callback_add(chk, "changed", + test_genlist_focus_focus_check_changed, gl); + elm_box_pack_end(bx_opt, chk); + evas_object_show(chk); + + // Focus/Selection + fr = elm_frame_add(bx); + elm_object_text_set(fr, "Focus/Selection"); + evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(bx, fr); + evas_object_show(fr); + + bx_btn = elm_box_add(fr); + elm_object_content_set(fr, bx_btn); + evas_object_show(bx_btn); + + btn_focus = elm_button_add(bx_btn); + elm_object_text_set(btn_focus, "Focus 2nd Item after 1.5 seconds."); + evas_object_size_hint_weight_set(btn_focus, 0.0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn_focus, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(bx_btn, btn_focus); + evas_object_show(btn_focus); + + btn_sel = elm_button_add(bx_btn); + elm_object_text_set(btn_sel, "Select 2nd Item after 1.5 seconds."); + evas_object_size_hint_weight_set(btn_sel, 0.0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn_sel, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(bx_btn, btn_sel); + evas_object_show(btn_sel); + + evas_object_smart_callback_add(btn_focus, "clicked", _focus_btn_cb, it_2); + evas_object_smart_callback_add(btn_sel, "clicked", _sel_btn_cb, it_2); + + evas_object_resize(win, 420, 600); evas_object_show(win); }