seoz pushed a commit to branch master.

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

commit ba6ca19b98ab396c47d407855b5d4454909c6a38
Author: Daniel Juyung Seo <[email protected]>
Date:   Sun Dec 14 04:06:44 2014 +0900

    test_genlist: Refactor genlist focus test.
    
    - Add more sample items.
    - Clear genlist on focus callback only for the specified item.
    - Fix broken item index handling
    - Remove unnecessary app data structure members.
    - Free unused item class.
---
 src/bin/test_genlist.c | 89 ++++++++++++++++++++++++++++++--------------------
 1 file changed, 54 insertions(+), 35 deletions(-)

diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c
index 9fd6737..1b349e7 100644
--- a/src/bin/test_genlist.c
+++ b/src/bin/test_genlist.c
@@ -13,6 +13,7 @@ struct _api_data
    unsigned int state;  /* What state we are testing       */
    void *box;           /* Use this to get box content     */
 
+   Elm_Genlist_Item_Class *itc;
    Elm_Genlist_Item_Class *itc1;
    Elm_Genlist_Item_Class *itc2;
    void *gl;
@@ -4001,17 +4002,21 @@ test_genlist_del(void *data EINA_UNUSED,
 static unsigned _gl_focus_objects = 3;
 static const char *_gl_focus_object_names[] = {"None", "Square", "Button", 
"Check", "Box"};
 
-// for the first genlist item
+// for the top genlist items
 static char *
-gl_focus_popup_item_text_get(void *data, Evas_Object *obj EINA_UNUSED,
-                             const char *part EINA_UNUSED)
+gl_focus_top_items_text_get(void *data, Evas_Object *obj EINA_UNUSED,
+                            const char *part EINA_UNUSED)
 {
    if (!data) return NULL;
 
-   if (!strcmp(data, "popup_sel"))
+   if (!strcmp(data, "do_nothing"))
+     return strdup("Genlist Item");
+   else if (!strcmp(data, "popup_sel"))
      return strdup("Create a popup on Select");
    else if (!strcmp(data, "popup_mouse_down"))
      return strdup("Create a popup on Mouse Down");
+   else if (!strcmp(data, "clear_on_focus"))
+     return strdup("Genlist Clear on Focus");
    else
      return NULL;
 }
@@ -4162,8 +4167,17 @@ _gl_focus_move_policy_changed_cb(void *data EINA_UNUSED,
 static void
 _gl_focus_item_focus_cb(void *data, Evas_Object *obj, void *event_info)
 {
-   printf("%s: %p\n", (char *)data, event_info);
-   elm_genlist_clear(obj);
+   printf("item,focused: %p\n", event_info);
+
+   if (event_info == data)
+     elm_genlist_clear(obj);
+}
+
+static void
+_gl_focus_item_unfocus_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+                          void *event_info)
+{
+   printf("item,unfocused %p\n", event_info);
 }
 
 static void
@@ -4191,7 +4205,7 @@ _gl_focus_mouse_down_cb(void *data EINA_UNUSED, Evas *e 
EINA_UNUSED,
    it = elm_genlist_at_xy_item_get(obj, ev->canvas.x, ev->canvas.y, &postret);
    if (!it) return;
 
-   if (elm_genlist_item_index_get(it) == 2)
+   if (elm_genlist_item_index_get(it) == 4)
      _gl_focus_sel_popup_create(obj);
 }
 
@@ -4529,8 +4543,8 @@ test_genlist_focus(void *data EINA_UNUSED,
 {
    Evas_Object *win, *bx, *bx2, *gl, *btn;
    unsigned lhand, rhand;
-   Elm_Object_Item *it = NULL, *it_0 = NULL, *it_2 = NULL;
-   Elm_Genlist_Item_Class *itc = NULL;
+   Elm_Object_Item *it = NULL, *it_1 = NULL, *it_2 = NULL;
+   Elm_Genlist_Item_Class *itc = NULL, *itc1 = NULL, *itc2 = NULL;
 
    api_data *api = calloc(1, sizeof(api_data));
    win = elm_win_util_standard_add("genlist-focus", "Genlist Focus");
@@ -4575,8 +4589,6 @@ test_genlist_focus(void *data EINA_UNUSED,
    elm_box_pack_end(bx2, gl);
    api->gl = gl;
    evas_object_show(gl);
-   evas_object_smart_callback_add(gl, "item,focused", _gl_focus_item_focus_cb, 
"item,focused");
-   evas_object_smart_callback_add(gl, "item,unfocused", 
_gl_focus_item_focus_cb, "item,unfocused");
    evas_object_smart_callback_add(gl, "selected", _gl_focus_item_cb, 
"selected");
    evas_object_smart_callback_add(gl, "unselected", _gl_focus_item_cb, 
"unselected");
    evas_object_smart_callback_add(gl, "activated", _gl_focus_item_cb, 
"activated");
@@ -4599,62 +4611,69 @@ test_genlist_focus(void *data EINA_UNUSED,
                                   _focus_button_clicked_cb, "Down");
    evas_object_show(btn);
 
-
    itc = elm_genlist_item_class_new();
-
    itc->item_style = "default";
-   itc->func.text_get = gl_focus_popup_item_text_get;
+   itc->func.text_get = gl_focus_top_items_text_get;
    itc->func.content_get = NULL;
    itc->func.state_get = NULL;
    itc->func.del = NULL;
 
-   api->itc1 = elm_genlist_item_class_new();
-   api->itc1->item_style = "default";
-   api->itc1->func.text_get = gl_focus_text_get;
-   api->itc1->func.content_get = gl_focus_content_get;
-   api->itc1->func.state_get = NULL;
-   api->itc1->func.del = NULL;
-
-   api->itc2 = elm_genlist_item_class_new();
-   api->itc2->item_style = "tree_effect";
-   api->itc2->func.text_get = gl_focus_text_get;
-   api->itc2->func.content_get = gl_focus_content_get;
-   api->itc2->func.state_get = NULL;
-   api->itc2->func.del = NULL;
-
+   itc1 = elm_genlist_item_class_new();
+   itc1->item_style = "default";
+   itc1->func.text_get = gl_focus_text_get;
+   itc1->func.content_get = gl_focus_content_get;
+   itc1->func.state_get = NULL;
+   itc1->func.del = NULL;
+
+   itc2 = elm_genlist_item_class_new();
+   itc2->item_style = "tree_effect";
+   itc2->func.text_get = gl_focus_text_get;
+   itc2->func.content_get = gl_focus_content_get;
+   itc2->func.state_get = NULL;
+   itc2->func.del = NULL;
+
+   it_1 = elm_genlist_item_append(gl, itc, "do_nothing", NULL, 
ELM_GENLIST_ITEM_NONE,
+                                  NULL, NULL);
+   it_2 = elm_genlist_item_append(gl, itc, "do_nothing", NULL, 
ELM_GENLIST_ITEM_NONE,
+                                  NULL, NULL);
    elm_genlist_item_append(gl, itc, "popup_sel", NULL, ELM_GENLIST_ITEM_NONE,
                            _gl_focus_0_item_sel_cb, NULL);
    elm_genlist_item_append(gl, itc, "popup_mouse_down", NULL, 
ELM_GENLIST_ITEM_NONE,
                            NULL, NULL);
 
+   it = elm_genlist_item_append(gl, itc, "clear_on_focus", NULL, 
ELM_GENLIST_ITEM_NONE,
+                                NULL, NULL);
+   evas_object_smart_callback_add(gl, "item,focused", _gl_focus_item_focus_cb, 
it);
+   evas_object_smart_callback_add(gl, "item,unfocused", 
_gl_focus_item_unfocus_cb, NULL);
+
    for (lhand = 0; lhand < _gl_focus_objects; lhand++)
      {
         for (rhand = 0; rhand < _gl_focus_objects; rhand++)
           {
              unsigned digit1 = lhand * 10 + rhand;
-             it = elm_genlist_item_append(gl, api->itc1, 
(void*)(uintptr_t)digit1,
+             it = elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit1,
                                           NULL, ELM_GENLIST_ITEM_NONE, NULL, 
NULL);
-             if (!it_0) it_0 = it;
 
              unsigned digit2 = (_gl_focus_objects - lhand -1) * 10 +
                 (_gl_focus_objects - rhand -1);
-             it = elm_genlist_item_append(gl, api->itc1, 
(void*)(uintptr_t)digit2,
+             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 == 4)
                elm_object_item_disabled_set(it, EINA_TRUE);
 
              if (rhand == (_gl_focus_objects - 1))
-               elm_genlist_item_append(gl, api->itc2, (void*)(uintptr_t)digit1,
+               elm_genlist_item_append(gl, itc2, (void*)(uintptr_t)digit1,
                      NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
           }
      }
 
-   elm_genlist_item_class_free(api->itc1);
-   elm_genlist_item_class_free(api->itc2);
+   elm_genlist_item_class_free(itc);
+   elm_genlist_item_class_free(itc1);
+   elm_genlist_item_class_free(itc2);
 
    // Options
-   _test_genlist_focus_option_panel_create(win, bx, gl, it_0, it_2);
+   _test_genlist_focus_option_panel_create(win, bx, gl, it_1, it_2);
 
    evas_object_resize(win, 420, 600);
    evas_object_show(win);

-- 


Reply via email to