From 15a5274a14dc202390005da96024ee8361f576f0 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Wed, 7 Oct 2015 14:11:31 +0900 Subject: listmgr: add key down callback for playing info item Change-Id: I6a213f4d030a9645352b7f75618c96990cc6536f Signed-off-by: Jehun Lim --- include/util/listmgr.h | 2 ++ src/layout/movie.c | 30 ++++++++++++++++++++++++++++++ src/layout/music.c | 30 ++++++++++++++++++++++++++++++ src/util/listmgr.c | 16 +++++++++++++++- 4 files changed, 77 insertions(+), 1 deletion(-) diff --git a/include/util/listmgr.h b/include/util/listmgr.h index bd7d3cc..d3dfa99 100644 --- a/include/util/listmgr.h +++ b/include/util/listmgr.h @@ -23,6 +23,8 @@ struct play_info_data { bool (*draw)(void *data, Evas_Object *base); bool (*update)(void *data, Evas_Object *base); + void (*key_down_cb)(void *data, Evas_Object *obj, + Evas_Event_Key_Down *ev); void (*selected_cb)(void *data, Evas_Object *obj); void *cb_data; }; diff --git a/src/layout/movie.c b/src/layout/movie.c index 6e44997..79416cd 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -259,6 +259,35 @@ static void _recent_item_selected(struct _priv *priv, app_media *am) viewmgr_push_view(VIEW_VIEWER); } +static void _recent_key_down_cb(void *data, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + struct view_update_data vdata; + struct datamgr *dmgr; + struct _priv *priv; + + if (!data || !ev) + return; + + priv = data; + + dmgr = priv->dmgr[E_DATA_MEDIA]; + if (!dmgr) + return; + + if (!strcmp(ev->keyname, KEY_MENU) || + !strcmp(ev->keyname, KEY_CONTEXT_MENU)) { + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_MEDIA, NULL); + vdata.index = util_get_media_index(vdata.list, + priv->recent_info); + vdata.id = VIEW_BASE; + + viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); + viewmgr_show_view(VIEW_ACTION_MENU); + } +} + static void _recent_selected_cb(void *data, Evas_Object *obj) { struct _priv *priv; @@ -300,6 +329,7 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv) pdata->draw = _draw_recent; pdata->update = _update_recent; + pdata->key_down_cb = _recent_key_down_cb; pdata->selected_cb = _recent_selected_cb; pdata->cb_data = priv; diff --git a/src/layout/music.c b/src/layout/music.c index d4ae86a..98249a9 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -203,6 +203,35 @@ static void _recent_item_selected(struct _priv *priv, app_media *am) viewmgr_push_view(VIEW_MPLAYER); } +static void _playing_key_down_cb(void *data, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + struct view_update_data vdata; + struct datamgr *dmgr; + struct _priv *priv; + + if (!data || !ev) + return; + + priv = data; + + dmgr = priv->dmgr[E_DATA_MEDIA]; + if (!dmgr) + return; + + if (!strcmp(ev->keyname, KEY_MENU) || + !strcmp(ev->keyname, KEY_CONTEXT_MENU)) { + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_MEDIA, NULL); + vdata.index = util_get_media_index(vdata.list, + priv->playing_info); + vdata.id = VIEW_BASE; + + viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); + viewmgr_show_view(VIEW_ACTION_MENU); + } +} + static void _playing_selected_cb(void *data, Evas_Object *obj) { struct view_update_data vdata; @@ -244,6 +273,7 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv) pdata->draw = _draw_playing_info; pdata->update = _update_playing_info; + pdata->key_down_cb = _playing_key_down_cb; pdata->selected_cb = _playing_selected_cb; pdata->cb_data = priv; diff --git a/src/util/listmgr.c b/src/util/listmgr.c index 83d20d7..ee0d5ec 100644 --- a/src/util/listmgr.c +++ b/src/util/listmgr.c @@ -120,6 +120,7 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { struct listmgr *lmgr; + struct play_info_data *pdata; struct grid_data *gdata; if (!data || !obj || !ev) @@ -134,6 +135,16 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, elm_object_focus_next(obj, ELM_FOCUS_UP); break; case LISTMGR_PLAY_INFO: + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_ESC)) + elm_object_focus_next(obj, ELM_FOCUS_UP); + else { + pdata = lmgr->data->pdata; + if (pdata->key_down_cb) + pdata->key_down_cb(pdata->cb_data, obj, ev); + } + + break; case LISTMGR_GRID: if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_ESC)) @@ -656,6 +667,9 @@ bool listmgr_update_content_item(struct listmgr *lmgr) box_item = elm_box_children_get(lmgr->box); + if (lmgr->show_play_info) + box_item = eina_list_next(box_item); + EINA_LIST_FOREACH(box_item, l, ly) { grid = elm_object_part_content_get(ly, PART_ITEM_CONTENT); if (!grid) { @@ -747,7 +761,7 @@ static void _set_grid_focus(struct listmgr *lmgr) list = elm_box_children_get(lmgr->box); - if (lmgr->play_info) + if (lmgr->show_play_info) list = eina_list_next(list); item_num = lmgr->data->gdata->item_num; -- cgit v1.2.3