diff options
author | Jehun Lim <jehun.lim@samsung.com> | 2015-09-24 14:01:09 +0900 |
---|---|---|
committer | Jehun Lim <jehun.lim@samsung.com> | 2015-09-24 17:03:48 +0900 |
commit | c515f91444a4451832a70ba590485a238694eff9 (patch) | |
tree | dca11e27e33c72d2842769fc9e04b6d8a5041e7a | |
parent | 1a94010d6b284b65495559af15abb31e4a0caee7 (diff) | |
download | air_mediahub-c515f91444a4451832a70ba590485a238694eff9.tar.gz air_mediahub-c515f91444a4451832a70ba590485a238694eff9.tar.bz2 air_mediahub-c515f91444a4451832a70ba590485a238694eff9.zip |
detail: add music album detail view
Change-Id: I4f8b17264645338b9bb7cf1ec69cd3cdaa4e985e
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
-rw-r--r-- | include/grid/grid.h | 2 | ||||
-rw-r--r-- | include/view.h | 1 | ||||
-rw-r--r-- | res/edc/widgets/gengrid.edc | 223 | ||||
-rw-r--r-- | src/grid/grid_gallery.c | 13 | ||||
-rw-r--r-- | src/grid/grid_movie.c | 13 | ||||
-rw-r--r-- | src/grid/grid_music.c | 46 | ||||
-rw-r--r-- | src/layout/gallery.c | 8 | ||||
-rw-r--r-- | src/layout/movie.c | 8 | ||||
-rw-r--r-- | src/layout/music.c | 3 | ||||
-rw-r--r-- | src/view/detail.c | 23 |
10 files changed, 304 insertions, 36 deletions
diff --git a/include/grid/grid.h b/include/grid/grid.h index 60e6a92..39b2450 100644 --- a/include/grid/grid.h +++ b/include/grid/grid.h @@ -117,4 +117,6 @@ struct grid_data *get_music_grid_data(int type); #define MUSIC_GENRE_ITEM_NUM MOVIE_GENRE_ITEM_NUM #define MUSIC_GENRE_GRID_PADDING MOVIE_GENRE_GRID_PADDING +#define STYLE_MUSIC_SONG_DETAIL "song_item_detail" + #endif /* __AIR_MEDIAHUB_GRID_H__ */ diff --git a/include/view.h b/include/view.h index c7e4d9f..7422bac 100644 --- a/include/view.h +++ b/include/view.h @@ -59,6 +59,7 @@ enum update_type { enum detail_view_type { E_DETAIL_MOVIE_GENRE = 0, + E_DETAIL_MUSIC_ALBUM, E_DETAIL_MAX }; diff --git a/res/edc/widgets/gengrid.edc b/res/edc/widgets/gengrid.edc index 2b9e6fd..4063fed 100644 --- a/res/edc/widgets/gengrid.edc +++ b/res/edc/widgets/gengrid.edc @@ -1650,6 +1650,229 @@ group { } group { + name: "elm/gengrid/item/song_item_detail/default"; + inherit: "elm/gengrid/item/song_item/default"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.title elm.text.artist elm.text.playtime"; + data.item: "contents" "elm.swallow.favorite"; + data.item: "focus_highlight" "on"; + parts { + part { + name: "default_image"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "defaultbg"; + relative: 0.5 0.5; + } + rel2 { + to: "defaultbg"; + relative: 0.5 0.5; + } + image.normal: IMAGE_THUMBNAIL_SONG; + min: 0 0; + fixed: 1 1; + map { + perspective_on: 1; + perspective: "map"; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + map.on: 1; + } + } + part { + name: "defaultbg_text"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "bg"; + relative: 0.0 0.0; + } + rel2 { + to: "bg"; + relative: 1.0 1.0; + } + color: COLOR_ITEM_BG; + map { + perspective_on: 1; + perspective: "map"; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: COLOR_ITEM_FOCUS; + map.on: 1; + } + } + part { + name: "part_focus2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "part_focus1"; + relative: 0.0 1.0; + } + rel2 { + to: "bg"; + relative: 0.0 1.0; + } + min: 0 0; + align: 0.0 0.5; + color: COLOR_ITEM_FOCUS; + fixed: 1 0; + visible: 0; + map { + perspective_on: 1; + perspective: "map"; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + map.on: 1; + visible: 1; + } + description { + state: "selected_0" 0.0; + inherit: "default" 0.0; + visible: 1; + color: COLOR_ITEM_FOCUS_0; + } + } + part { + name: "elm.padding.artist"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: PART_ELM_TEXT_TITLE; + relative: 0.0 1.0; + } + rel2.to: PART_ELM_TEXT_TITLE; + min: 0 12; + align: 0.5 0.0; + fixed: 0 1; + } + } + part { + name: "elm.padding.playtime"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: PART_ELM_TEXT_ARTIST; + relative: 0.0 1.0; + } + rel2.to: PART_ELM_TEXT_ARTIST; + min: 0 4; + align: 0.5 0.0; + fixed: 0 1; + } + } + part { + name: PART_ELM_TEXT_PLAYTIME; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "elm.padding.playtime"; + relative: 0.0 1.0; + } + rel2.to: "elm.padding.playtime"; + text { + font: FONT_LIGHT; + size: 24; + align: 0.0 0.5; + } + min: 0 24; + align: 0.5 0.0; + color: COLOR_TEXT_INFO; + fixed: 0 1; + map { + perspective_on: 1; + perspective: "map"; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: COLOR_TEXT_FOCUS; + map.on: 1; + } + description { + state: "selected_0" 0.0; + inherit: "selected"; + } + } + } + programs { + program { + name: "go_active"; + signal: "elm,state,focused"; + source: "elm"; + action: STATE_SET "selected_0" 0.0; + target: "elm.bg.text"; + target: PART_ELM_TEXT_TITLE; + target: PART_ELM_TEXT_ARTIST; + target: PART_ELM_TEXT_PLAYTIME; + after: "focus,in,anim"; + } + program { + name: "focus,in,anim"; + action: STATE_SET "selected" 0.0; + target: PART_ELM_SWALLOW_FAVORITE; + target: "elm.bg.text"; + transition: TRANSITION_FOCUS; + after: "focus,in,anim,2"; + } + program { + name: "focus,in,anim,2"; + action: STATE_SET "selected" 0.0; + target: "defaultbg_text"; + } + program { + name: "go_passive"; + signal: "elm,state,unfocused"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: PART_ELM_TEXT_TITLE; + target: PART_ELM_TEXT_ARTIST; + target: PART_ELM_TEXT_PLAYTIME; + target: "defaultbg_text"; + after: "focus,out,anim"; + } + program { + name: "focus,out,anim"; + action: STATE_SET "selected_0" 0.0; + target: "elm.bg.text"; + transition: TRANSITION_FOCUS; + after: "focus,out,anim,2"; + } + program { + name: "focus,out,anim,2"; + action: STATE_SET "default" 0.0; + target: PART_ELM_SWALLOW_FAVORITE; + target: "elm.bg.text"; + } + } +} + +group { name: "elm/gengrid/item/genre_item/default"; data.item: "selectraise" "on"; data.item: "texts" "elm.text.title elm.text.count"; diff --git a/src/grid/grid_gallery.c b/src/grid/grid_gallery.c index 384ec96..6f20856 100644 --- a/src/grid/grid_gallery.c +++ b/src/grid/grid_gallery.c @@ -143,8 +143,8 @@ static void _free_media_list(struct datamgr *dmgr, Eina_List *list) static void _key_down_cb(void *data, Elm_Object_Item *it, Evas_Event_Key_Down *ev) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !ev) { @@ -152,7 +152,7 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - list = data; + dmgr = data; if (!strcmp(ev->keyname, KEY_MENU) || !strcmp(ev->keyname, KEY_CONTEXT_MENU)) { @@ -162,7 +162,8 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); @@ -172,8 +173,8 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, static void _selected_cb(void *data, Elm_Object_Item *it) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !it) { @@ -181,7 +182,7 @@ static void _selected_cb(void *data, Elm_Object_Item *it) return; } - list = data; + dmgr = data; am = elm_object_item_data_get(it); if (!am) { @@ -189,7 +190,7 @@ static void _selected_cb(void *data, Elm_Object_Item *it) return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata); diff --git a/src/grid/grid_movie.c b/src/grid/grid_movie.c index b4e09b9..70c54b5 100644 --- a/src/grid/grid_movie.c +++ b/src/grid/grid_movie.c @@ -227,8 +227,8 @@ static void _free_group_list(struct datamgr *dmgr, Eina_List *list) static void _key_down_cb(void *data, Elm_Object_Item *it, Evas_Event_Key_Down *ev) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !ev) { @@ -236,7 +236,7 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - list = data; + dmgr = data; if (!strcmp(ev->keyname, KEY_MENU) || !strcmp(ev->keyname, KEY_CONTEXT_MENU)) { @@ -246,7 +246,8 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); @@ -256,8 +257,8 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, static void _media_selected_cb(void *data, Elm_Object_Item *it) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !it) { @@ -265,7 +266,7 @@ static void _media_selected_cb(void *data, Elm_Object_Item *it) return; } - list = data; + dmgr = data; am = elm_object_item_data_get(it); if (!am) { @@ -273,7 +274,7 @@ static void _media_selected_cb(void *data, Elm_Object_Item *it) return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata); diff --git a/src/grid/grid_music.c b/src/grid/grid_music.c index d25710f..34a9058 100644 --- a/src/grid/grid_music.c +++ b/src/grid/grid_music.c @@ -294,8 +294,8 @@ static void _free_group_list(struct datamgr *dmgr, Eina_List *list) static void _key_down_cb(void *data, Elm_Object_Item *it, Evas_Event_Key_Down *ev) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !ev) { @@ -303,7 +303,7 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - list = data; + dmgr = data; if (!strcmp(ev->keyname, KEY_MENU) || !strcmp(ev->keyname, KEY_CONTEXT_MENU)) { @@ -313,7 +313,8 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); @@ -321,10 +322,10 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, } } -static void _selected_cb(void *data, Elm_Object_Item *it) +static void _media_selected_cb(void *data, Elm_Object_Item *it) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !it) { @@ -332,7 +333,7 @@ static void _selected_cb(void *data, Elm_Object_Item *it) return; } - list = data; + dmgr = data; am = elm_object_item_data_get(it); if (!am) { @@ -340,13 +341,41 @@ static void _selected_cb(void *data, Elm_Object_Item *it) return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata); viewmgr_push_view(VIEW_MPLAYER); } +static void _album_selected_cb(void *data, Elm_Object_Item *it) +{ + struct view_update_data vdata; + struct datamgr *dmgr; + struct album_info *ai; + + if (!data || !it) { + _ERR("invalid argument"); + return; + } + + dmgr = data; + + ai = elm_object_item_data_get(it); + if (!ai) { + _ERR("failed to get album info"); + return; + } + + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_ALBUM_MEDIA, &ai->id); + vdata.index = E_DETAIL_MUSIC_ALBUM; + vdata.id = ai->name; + + viewmgr_update_view(VIEW_DETAIL, UPDATE_CONTENT, &vdata); + viewmgr_push_view(VIEW_DETAIL); +} + static struct grid_class _gclass[] = { [E_MUSIC_SONG] = { .item_style = STYLE_MUSIC_SONG, @@ -381,7 +410,7 @@ static struct grid_data _gdata[] = { .get_item_list = _get_song_list, .free_item_list = _free_item_list, .key_down_cb = _key_down_cb, - .selected_cb = _selected_cb + .selected_cb = _media_selected_cb, }, [E_MUSIC_ALBUM] = { .item_x = MUSIC_ALBUM_ITEM_X, @@ -391,6 +420,7 @@ static struct grid_data _gdata[] = { .gclass = &_gclass[E_MUSIC_ALBUM], .get_item_list = _get_album_list, .free_item_list = _free_item_list, + .selected_cb = _album_selected_cb, }, [E_MUSIC_ARTIST] = { .item_x = MUSIC_ARTIST_ITEM_X, diff --git a/src/layout/gallery.c b/src/layout/gallery.c index be63e3b..dcb2cfe 100644 --- a/src/layout/gallery.c +++ b/src/layout/gallery.c @@ -137,7 +137,6 @@ static void _clear_content_list(struct _priv *priv) static void _update_content_list(struct _priv *priv) { Eina_List *list; - struct datamgr *dmgr; if (priv->media_list) { _update_content_info(priv); @@ -146,17 +145,14 @@ static void _update_content_list(struct _priv *priv) priv->gdata = get_gallery_grid_data(priv->view_mode); - dmgr = priv->dmgr[E_DATA_MEDIA]; - - list = priv->gdata->get_item_list(dmgr); + list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]); if (!list) { elm_object_part_text_set(priv->layout, PART_NOCONTENT, TEXT_NOCONTENT); return; } - priv->gdata->data = dmgr->ops->get_list(dmgr->handle, - E_LIST_MEDIA, NULL); + priv->gdata->data = priv->dmgr[E_DATA_MEDIA]; if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata)) _ERR("failed to update list area"); diff --git a/src/layout/movie.c b/src/layout/movie.c index 8fbe6d0..e145cd5 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -349,7 +349,6 @@ static void _clear_content_list(struct _priv *priv) static void _update_content_list(struct _priv *priv) { Eina_List *list; - struct datamgr *dmgr; if (priv->media_list) { _update_content_info(priv); @@ -358,17 +357,14 @@ static void _update_content_list(struct _priv *priv) priv->gdata = get_movie_grid_data(priv->view_mode); - dmgr = priv->dmgr[E_DATA_MEDIA]; - - list = priv->gdata->get_item_list(dmgr); + list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]); if (!list) { elm_object_part_text_set(priv->layout, PART_NOCONTENT, TEXT_NOCONTENT); return; } - priv->gdata->data = dmgr->ops->get_list(dmgr->handle, - E_LIST_MEDIA, NULL); + priv->gdata->data = priv->dmgr[E_DATA_MEDIA]; if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata)) { _ERR("failed to update list area"); diff --git a/src/layout/music.c b/src/layout/music.c index 738f795..2ab37eb 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -339,8 +339,7 @@ static void _update_content_list(struct _priv *priv) return; } - priv->gdata->data = dmgr->ops->get_list(dmgr->handle, - E_LIST_MEDIA, NULL); + priv->gdata->data = dmgr; if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata)) _ERR("failed to update list area"); diff --git a/src/view/detail.c b/src/view/detail.c index 1df4251..5f20ecd 100644 --- a/src/view/detail.c +++ b/src/view/detail.c @@ -33,6 +33,7 @@ static Evas_Object *_grid_content_get(void *data, Evas_Object *obj, const char *part); static void _get_movie_count(char *str, int size, Eina_List *list); +static void _get_music_count(char *str, int size, Eina_List *list); struct _view_info { const char *grid_style; @@ -54,6 +55,14 @@ static struct _view_info view_info[E_DETAIL_MAX] = { .get_grid_content = _grid_content_get, .get_content_info = _get_movie_count, }, + [E_DETAIL_MUSIC_ALBUM] = { + .grid_style = STYLE_MUSIC_SONG_DETAIL, + .grid_item_x = MUSIC_SONG_ITEM_X, + .grid_item_y = MUSIC_SONG_ITEM_Y, + .get_grid_text = _grid_text_get, + .get_grid_content = _grid_content_get, + .get_content_info = _get_music_count, + }, }; struct _priv { @@ -120,8 +129,13 @@ static void _selected(void *data) vdata.list = priv->media_list; vdata.index = util_get_media_index(vdata.list, am); - viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata); - viewmgr_push_view(VIEW_VIEWER); + if (priv->view_type == E_DETAIL_MOVIE_GENRE) { + viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata); + viewmgr_push_view(VIEW_VIEWER); + } else if (priv->view_type == E_DETAIL_MUSIC_ALBUM) { + viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata); + viewmgr_push_view(VIEW_MPLAYER); + } } static void _selected_cb(int id, void *data, Evas_Object *obj, @@ -266,6 +280,11 @@ static void _get_movie_count(char *str, int size, Eina_List *list) snprintf(str, size, "%d movies", eina_list_count(list)); } +static void _get_music_count(char *str, int size, Eina_List *list) +{ + snprintf(str, size, "%d songs", eina_list_count(list)); +} + static void _update_title_area(struct _priv *priv, const char *title) { char buf[64]; |