seoz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b719ad2ae75641846eaadb07e0f1689e8654ede5

commit b719ad2ae75641846eaadb07e0f1689e8654ede5
Author: Daniel Juyung Seo <[email protected]>
Date:   Sun Mar 23 00:38:01 2014 +0900

    test_genlist: Flourish genlist focus test case to reveal more bugs.
    
    - Added focus highlight enable/disable option.
    - Added a button to set the focus to 2nd item after 1.5 seconds.
    - Added a button to select the 2nd item after 1.5 seconds.
    - Removed unnecessary frame and lable for the test.
---
 src/bin/test_genlist.c | 228 ++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 180 insertions(+), 48 deletions(-)

diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c
index ca28d7c..9e90590 100644
--- a/src/bin/test_genlist.c
+++ b/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_focus_highlight_enabled_set(win, EINA_TRUE);
-   elm_win_focus_highlight_animate_set(win, EINA_TRUE);
    elm_win_autodel_set(win, EINA_TRUE);
+   evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
+                                  _test_genlist_focus_win_del_cb, NULL);
 
-   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);
+   elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
+   elm_win_focus_highlight_animate_set(win, EINA_TRUE);
 
-   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, "<align=left>This test cases list down the"
-                           " focus check points related to genlist items.<br/>"
-                           "   1. No focus highlight on widget items<br/>"
-                           "   2. No animation on widget item<br/>"
-                           "   3. No focus movement between widget to widget 
items<br/>"
-                           "   </align>");
-   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);
 }
 

-- 


Reply via email to