summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-10-07 14:11:31 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-10-07 14:11:31 +0900
commit15a5274a14dc202390005da96024ee8361f576f0 (patch)
treeb3f1cbb7cddcaad96f3489f60674da4434bbb253
parent0b9301b61ec5ce0f0b6791f3e2909ee17b6d247e (diff)
downloadair_mediahub-15a5274a14dc202390005da96024ee8361f576f0.tar.gz
air_mediahub-15a5274a14dc202390005da96024ee8361f576f0.tar.bz2
air_mediahub-15a5274a14dc202390005da96024ee8361f576f0.zip
listmgr: add key down callback for playing info item
Change-Id: I6a213f4d030a9645352b7f75618c96990cc6536f Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
-rw-r--r--include/util/listmgr.h2
-rw-r--r--src/layout/movie.c30
-rw-r--r--src/layout/music.c30
-rw-r--r--src/util/listmgr.c16
4 files changed, 77 insertions, 1 deletions
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;