diff options
-rw-r--r-- | res/edc/widgets/gengrid.edc | 69 | ||||
-rw-r--r-- | src/util/listmgr.c | 106 |
2 files changed, 51 insertions, 124 deletions
diff --git a/res/edc/widgets/gengrid.edc b/res/edc/widgets/gengrid.edc index 12372b4..31e5db4 100644 --- a/res/edc/widgets/gengrid.edc +++ b/res/edc/widgets/gengrid.edc @@ -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; - } } } diff --git a/src/util/listmgr.c b/src/util/listmgr.c index 5ae2f61..84eb251 100644 --- a/src/util/listmgr.c +++ b/src/util/listmgr.c @@ -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 = { |