listmgr: delay calling grid selected callback 36/45436/2
authorJehun Lim <jehun.lim@samsung.com>
Thu, 6 Aug 2015 04:19:13 +0000 (13:19 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Thu, 6 Aug 2015 04:25:32 +0000 (13:25 +0900)
Change-Id: Idccc3954c5f539fe3f6a661a9528677bad08fdeb
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
res/edc/widgets/gengrid.edc
src/util/listmgr.c

index 12372b4..31e5db4 100644 (file)
@@ -95,7 +95,6 @@ group {
                        name: PART_ELM_SWALLOW_THUMBNAIL;
                        type: SWALLOW;
                        scale: 1;
-                       mouse_events: 1;
                        description {
                                state : "default" 0.0;
                                rel1.to: "defaultbg";
@@ -328,7 +327,6 @@ group {
                part {
                        name: "elm.bg.text";
                        type: RECT;
-                       mouse_events: 0;
                        scale: 1;
                        description {
                                state: "default" 0.0;
@@ -487,26 +485,6 @@ group {
                        target: "part_focus3";
                        target: "elm.bg.text";
                }
-               program {
-                       name: "selected";
-                       signal: "elm,state,selected";
-                       source: "elm";
-                       action: STATE_SET "selected" 0.0;
-                       target: "map";
-                       transition: TRANSITION_CLICK;
-                       after: "after_selected";
-               }
-               program {
-                       name: "after_selected";
-                       action: STATE_SET "default" 0.0;
-                       target: "map";
-                       transition: TRANSITION_CLICK;
-                       after: "item_selected";
-               }
-               program {
-                       name: "item_selected";
-                       action: SIGNAL_EMIT SIG_ITEM_SELECTED SIG_SOURCE_EDC;
-               }
        }
 }
 
@@ -568,7 +546,6 @@ group {
                        name: "defaultbg";
                        scale: 1;
                        type: RECT;
-                       mouse_events: 1;
                        description {
                                state : "default" 0.0;
                                rel1.to: "bg";
@@ -589,7 +566,6 @@ group {
                        name: "default_image";
                        scale: 1;
                        type: IMAGE;
-                       mouse_events: 1;
                        description {
                                state: "default" 0.0;
                                rel1 {
@@ -618,7 +594,6 @@ group {
                        name: PART_ELM_SWALLOW_THUMBNAIL;
                        scale: 1;
                        type: SWALLOW;
-                       mouse_events: 1;
                        description {
                                state : "default" 0.0;
                                rel1.to: "defaultbg";
@@ -957,26 +932,6 @@ group {
                        target: "part_focus4";
                        target: PART_ELM_TEXT_PLAYTIME;
                }
-               program {
-                       name: "selected";
-                       signal: "elm,state,selected";
-                       source: "elm";
-                       action: STATE_SET "selected" 0.0;
-                       target: "map";
-                       transition: TRANSITION_CLICK;
-                       after: "after_selected";
-               }
-               program {
-                       name: "after_selected";
-                       action: STATE_SET "default" 0.0;
-                       target: "map";
-                       transition: TRANSITION_CLICK;
-                       after: "item_selected";
-               }
-               program {
-                       name: "item_selected";
-                       action: SIGNAL_EMIT SIG_ITEM_SELECTED SIG_SOURCE_EDC;
-               }
        }
 }
 
@@ -1038,7 +993,6 @@ group {
                        name: "defaultbg";
                        type: RECT;
                        scale: 1;
-                       mouse_events: 1;
                        description {
                                state: "default" 0.0;
                                rel1.to: "bg";
@@ -1062,7 +1016,6 @@ group {
                        name: "default_image";
                        type: IMAGE;
                        scale: 1;
-                       mouse_events: 1;
                        description {
                                state: "default" 0.0;
                                rel1 {
@@ -1091,7 +1044,6 @@ group {
                        name: PART_ELM_SWALLOW_THUMBNAIL;
                        type: SWALLOW;
                        scale: 1;
-                       mouse_events: 1;
                        description {
                                state : "default" 0.0;
                                rel1.to: "defaultbg";
@@ -1249,7 +1201,6 @@ group {
                part {
                        name: "elm.bg.text";
                        type: RECT;
-                       mouse_events: 0;
                        scale: 1;
                        description {
                                state: "default" 0.0;
@@ -1650,25 +1601,5 @@ group {
                        target: "part_focus3";
                        target: "elm.bg.text";
                }
-               program {
-                       name: "selected";
-                       signal: "elm,state,selected";
-                       source: "elm";
-                       action: STATE_SET "selected" 0.0;
-                       target: "map";
-                       transition: TRANSITION_CLICK;
-                       after: "after_selected";
-               }
-               program {
-                       name: "after_selected";
-                       action: STATE_SET "default" 0.0;
-                       target: "map";
-                       transition: TRANSITION_CLICK;
-                       after: "item_selected";
-               }
-               program {
-                       name: "item_selected";
-                       action: SIGNAL_EMIT SIG_ITEM_SELECTED SIG_SOURCE_EDC;
-               }
        }
 }
index 5ae2f61..84eb251 100644 (file)
@@ -44,6 +44,8 @@ struct listmgr {
        Evas_Object *play_info;
        Evas_Object *focused;
 
+       Elm_Object_Item *selected_it;
+
        struct gridmgr *gmgr;
        struct listmgr_data *data;
 
@@ -145,106 +147,100 @@ static void _clicked_cb(int id, void *data, Evas_Object *obj)
        }
 }
 
-static void _play_info_selected_cb(void *data, Evas_Object *obj,
-                       const char *emission, const char *source)
+static void _focused_cb(int id, void *data, Evas_Object *obj,
+                       Elm_Object_Item *it)
 {
+       Evas_Object *btn;
        struct listmgr *lmgr;
-       struct play_info_ops *pops;
 
        if (!data || !obj)
                return;
 
        lmgr = data;
-       pops = lmgr->data->pops;
 
-       if (pops->selected_cb)
-               pops->selected_cb(pops->ops_data, obj);
+       switch (id) {
+       case LISTMGR_SCROLLER:
+               if (!lmgr->scr_focus)
+                       break;
+
+               btn = elm_object_part_content_get(lmgr->focused,
+                               PART_ITEM_TITLE);
+               if (!btn) {
+                       _ERR("failed to get button object");
+                       return;
+               }
+
+               elm_object_focus_set(btn, EINA_TRUE);
+
+               break;
+       case LISTMGR_INDEX:
+       case LISTMGR_PLAY_INFO:
+       case LISTMGR_GRID:
+               lmgr->focused =  elm_object_parent_widget_get(obj);
+               lmgr->scr_focus = EINA_TRUE;
+
+               elm_object_signal_emit(lmgr->data->menu_btn, SIG_BTN_SELECTED,
+                                       SIG_SOURCE_SRC);
+               break;
+       default:
+               break;
+       }
 }
 
-static void _grid_selected_cb(void *data, Elm_Object_Item *it,
-                       const char *emission, const char *source)
+static void _grid_selected(void *data)
 {
        struct listmgr *lmgr;
        struct grid_ops *gops;
 
-       if (!data || !it)
+       if (!data) {
+               _ERR("invalid argument");
                return;
+       }
 
        lmgr = data;
+
        gops = lmgr->data->gops;
 
        if (gops->selected_cb)
-               gops->selected_cb(gops->ops_data, it);
-
-       elm_gengrid_item_selected_set(it, EINA_FALSE);
+               gops->selected_cb(gops->ops_data, lmgr->selected_it);
 }
 
-static void _grid_realized_cb(int id, void *data, Evas_Object *obj,
+static void _grid_selected_cb(int id, void *data, Evas_Object *obj,
                        Elm_Object_Item *it)
 {
+       struct listmgr *lmgr;
+
        if (!data || !it)
                return;
 
-       elm_object_item_signal_callback_add(it, SIG_ITEM_SELECTED,
-                               SIG_SOURCE_EDC, _grid_selected_cb, data);
-}
+       lmgr = data;
 
-static void _grid_unrealized_cb(int id, void *data, Evas_Object *obj,
-                       Elm_Object_Item *it)
-{
-       if (!it)
-               return;
+       lmgr->selected_it = it;
 
-       elm_object_item_signal_callback_del(it, SIG_ITEM_SELECTED,
-                               SIG_SOURCE_EDC, _grid_selected_cb);
+       ecore_job_add(_grid_selected, lmgr);
 }
 
-static void _focused_cb(int id, void *data, Evas_Object *obj,
-                       Elm_Object_Item *it)
+static void _play_info_selected_cb(void *data, Evas_Object *obj,
+                       const char *emission, const char *source)
 {
-       Evas_Object *btn;
        struct listmgr *lmgr;
+       struct play_info_ops *pops;
 
        if (!data || !obj)
                return;
 
        lmgr = data;
+       pops = lmgr->data->pops;
 
-       switch (id) {
-       case LISTMGR_SCROLLER:
-               if (!lmgr->scr_focus)
-                       break;
-
-               btn = elm_object_part_content_get(lmgr->focused,
-                               PART_ITEM_TITLE);
-               if (!btn) {
-                       _ERR("failed to get button object");
-                       return;
-               }
-
-               elm_object_focus_set(btn, EINA_TRUE);
-
-               break;
-       case LISTMGR_INDEX:
-       case LISTMGR_PLAY_INFO:
-       case LISTMGR_GRID:
-               lmgr->focused =  elm_object_parent_widget_get(obj);
-               lmgr->scr_focus = EINA_TRUE;
-
-               elm_object_signal_emit(lmgr->data->menu_btn, SIG_BTN_SELECTED,
-                                       SIG_SOURCE_SRC);
-               break;
-       default:
-               break;
-       }
+       if (pops->selected_cb)
+               pops->selected_cb(pops->ops_data, obj);
 }
 
 static input_handler _grid_handler = {
        .key_down = _key_down_cb,
        .mouse_move = _mouse_move_cb,
        .focused = _focused_cb,
-       .realized = _grid_realized_cb,
-       .unrealized = _grid_unrealized_cb
+       .selected = _grid_selected_cb
 };
 
 static input_handler _handler = {