summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-09-25 11:13:25 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-09-25 11:15:06 +0900
commitb5da373f1c974571b30f12ac2102db4ddf1f3d72 (patch)
tree4886d44e9e5d46cc6c954fab5ccfefe4e246d278
parent76241dd74e1971d7b9f06160d369751079ba9baf (diff)
downloadair_mediahub-b5da373f1c974571b30f12ac2102db4ddf1f3d72.tar.gz
air_mediahub-b5da373f1c974571b30f12ac2102db4ddf1f3d72.tar.bz2
air_mediahub-b5da373f1c974571b30f12ac2102db4ddf1f3d72.zip
detail: add BACK key handling to set focus
Change-Id: Idc6b61ba3ed3b6f0fc60beabee4d0f2df141db53 Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
-rw-r--r--include/view.h1
-rw-r--r--src/layout/movie.c3
-rw-r--r--src/layout/music.c3
-rw-r--r--src/util/listmgr.c65
-rw-r--r--src/view/base.c1
-rw-r--r--src/view/detail.c1
6 files changed, 37 insertions, 37 deletions
diff --git a/include/view.h b/include/view.h
index 7422bac..7d52512 100644
--- a/include/view.h
+++ b/include/view.h
@@ -47,6 +47,7 @@ enum update_type {
UPDATE_CONTENT = 0,
UPDATE_CONTENT_ITEM,
UPDATE_FOCUS,
+ UPDATE_BACK,
UPDATE_PLAY_INFO,
UPDATE_PLAYER,
UPDATE_FAVORITE,
diff --git a/src/layout/movie.c b/src/layout/movie.c
index e145cd5..9267939 100644
--- a/src/layout/movie.c
+++ b/src/layout/movie.c
@@ -648,6 +648,9 @@ static void _update(void *layout_data, int update_type, void *data)
listmgr_focus_play_info(priv->listmgr);
_update_recent_item(priv, vdata->id);
break;
+ case UPDATE_BACK:
+ listmgr_focus_content_list(priv->listmgr, NULL);
+ break;
case UPDATE_RECENT:
if (!data) {
_ERR("invalid argument");
diff --git a/src/layout/music.c b/src/layout/music.c
index 2ab37eb..19a0fce 100644
--- a/src/layout/music.c
+++ b/src/layout/music.c
@@ -624,6 +624,9 @@ static void _update(void *layout_data, int update_type, void *data)
case UPDATE_FOCUS:
listmgr_focus_play_info(priv->listmgr);
break;
+ case UPDATE_BACK:
+ listmgr_focus_content_list(priv->listmgr, NULL);
+ break;
case UPDATE_RECENT:
if (!data) {
_ERR("invalid argument");
diff --git a/src/util/listmgr.c b/src/util/listmgr.c
index 0f80bb8..6d9df60 100644
--- a/src/util/listmgr.c
+++ b/src/util/listmgr.c
@@ -48,7 +48,6 @@ struct listmgr {
Evas_Object *focused;
Elm_Object_Item *focused_it;
- Elm_Object_Item *selected_it;
struct gridmgr *gmgr;
struct listmgr_data *data;
@@ -261,7 +260,7 @@ static void _grid_selected(void *data)
gdata = lmgr->data->gdata;
if (gdata->selected_cb)
- gdata->selected_cb(gdata->data, lmgr->selected_it);
+ gdata->selected_cb(gdata->data, lmgr->focused_it);
}
static void _grid_selected_cb(int id, void *data, Evas_Object *obj,
@@ -274,8 +273,6 @@ static void _grid_selected_cb(int id, void *data, Evas_Object *obj,
lmgr = data;
- lmgr->selected_it = it;
-
ecore_job_add(_grid_selected, lmgr);
}
@@ -493,24 +490,36 @@ bool _focus_to_content(struct listmgr *lmgr, Evas_Object *base)
return true;
}
-Elm_Object_Item *_get_grid_item(Evas_Object *grid, const char *id)
+Elm_Object_Item *_get_grid_item(struct listmgr *lmgr, const char *id)
{
+ Eina_List *item, *l;
+ Evas_Object *ly, *grid;
Elm_Object_Item *it;
app_media *am;
app_media_info *mi;
- for (it = elm_gengrid_first_item_get(grid); it;
- it = elm_gengrid_item_next_get(it)) {
- am = elm_object_item_data_get(it);
- if (!am)
- continue;
+ item = elm_box_children_get(lmgr->box);
+
+ EINA_LIST_FOREACH(item, l, ly) {
+ grid = elm_object_part_content_get(ly, PART_ITEM_CONTENT);
+ if (!grid) {
+ _ERR("failed to get grid object");
+ return false;
+ }
+
+ for (it = elm_gengrid_first_item_get(grid); it;
+ it = elm_gengrid_item_next_get(it)) {
+ am = elm_object_item_data_get(it);
+ if (!am)
+ continue;
- mi = app_media_get_info(am);
- if (!mi)
- continue;
+ mi = app_media_get_info(am);
+ if (!mi)
+ continue;
- if (!strcmp(id, mi->media_id))
- return it;
+ if (!strcmp(id, mi->media_id))
+ return it;
+ }
}
return NULL;
@@ -576,8 +585,6 @@ bool listmgr_focus_play_info(struct listmgr *lmgr)
bool listmgr_focus_content_list(struct listmgr *lmgr, const char *id)
{
- Eina_List *item, *l;
- Evas_Object *ly, *grid;
Elm_Object_Item *it;
if (!lmgr) {
@@ -585,26 +592,10 @@ bool listmgr_focus_content_list(struct listmgr *lmgr, const char *id)
return false;
}
- if (!id) {
- _ERR("invalid argument");
- return false;
- }
-
- item = elm_box_children_get(lmgr->box);
-
- grid = NULL;
- it = NULL;
- EINA_LIST_FOREACH(item, l, ly) {
- grid = elm_object_part_content_get(ly, PART_ITEM_CONTENT);
- if (!grid) {
- _ERR("failed to get grid object");
- return false;
- }
-
- it = _get_grid_item(grid, id);
- if (it)
- break;
- }
+ if (id)
+ it = _get_grid_item(lmgr, id);
+ else
+ it = lmgr->focused_it;
if (!it) {
_ERR("failed to get current grid item");
diff --git a/src/view/base.c b/src/view/base.c
index 052e26b..b61387d 100644
--- a/src/view/base.c
+++ b/src/view/base.c
@@ -796,6 +796,7 @@ static void _update(void *view_data, int update_type, void *data)
update_type, vdata);
break;
case UPDATE_CONTENT_ITEM:
+ case UPDATE_BACK:
layoutmgr_update_layout(priv->lmgr,
g_menu_item[priv->current_layout].layout_id,
update_type, NULL);
diff --git a/src/view/detail.c b/src/view/detail.c
index 5f20ecd..ce28fdb 100644
--- a/src/view/detail.c
+++ b/src/view/detail.c
@@ -89,6 +89,7 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
if (!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_ESC)) {
+ viewmgr_update_view(VIEW_BASE, UPDATE_BACK, NULL);
viewmgr_pop_view();
}
}