diff options
author | Jehun Lim <jehun.lim@samsung.com> | 2015-09-11 13:08:04 +0900 |
---|---|---|
committer | Jehun Lim <jehun.lim@samsung.com> | 2015-09-11 13:08:04 +0900 |
commit | 676fd61c56d31ab525c90957b0246f77931e3598 (patch) | |
tree | 7cfee7340e5ff69df9d4198e153d7725844e3f62 /src/grid | |
parent | af92654816569528bae0233a0b1ee4c6744e6b53 (diff) | |
download | air_mediahub-676fd61c56d31ab525c90957b0246f77931e3598.tar.gz air_mediahub-676fd61c56d31ab525c90957b0246f77931e3598.tar.bz2 air_mediahub-676fd61c56d31ab525c90957b0246f77931e3598.zip |
movie: add genre view mode
Change-Id: I77fb921a32c6367917e5f8ae3cb93531c01069b0
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
Diffstat (limited to 'src/grid')
-rw-r--r-- | src/grid/grid_movie.c | 121 |
1 files changed, 112 insertions, 9 deletions
diff --git a/src/grid/grid_movie.c b/src/grid/grid_movie.c index 0ec306d..359f834 100644 --- a/src/grid/grid_movie.c +++ b/src/grid/grid_movie.c @@ -29,7 +29,9 @@ #include "grid/grid.h" #include "util/util.h" -static char *_grid_text_get(void *data, Evas_Object *obj, const char *part) +#define STR_GENRE_NAME "Genre" + +static char *_media_text_get(void *data, Evas_Object *obj, const char *part) { app_media *am; app_media_info *info; @@ -48,7 +50,7 @@ static char *_grid_text_get(void *data, Evas_Object *obj, const char *part) return strdup(info->title); } -static Evas_Object *_grid_content_get(void *data, Evas_Object *obj, +static Evas_Object *_media_content_get(void *data, Evas_Object *obj, const char *part) { Evas_Object *eo; @@ -100,7 +102,58 @@ static Evas_Object *_grid_content_get(void *data, Evas_Object *obj, return eo; } -static Eina_List *_get_item_list(struct mediadata *md) +static char *_group_text_get(void *data, Evas_Object *obj, const char *part) +{ + struct group_info *gi; + char buf[32]; + int cnt; + + if (!data) + return NULL; + + gi = data; + + if (!strcmp(part, PART_ELM_TEXT_TITLE)) + return strdup(gi->name); + else if (!strcmp(part, PART_ELM_TEXT_COUNT)) { + cnt = eina_list_count(gi->list); + snprintf(buf, sizeof(buf), "%d", cnt); + return strdup(buf); + } + + return NULL; +} + +static Evas_Object *_group_content_get(void *data, Evas_Object *obj, + const char *part) +{ + Evas_Object *eo; + struct group_info *gi; + struct color_data bg; + + if (!data) + return NULL; + + gi = data; + + eo = NULL; + if (!strcmp(part, PART_ELM_SWALLOW_BG)) { + eo = evas_object_rectangle_add(obj); + if (!eo) { + _ERR("failed to create rectangle object"); + return NULL; + } + + app_contents_get_color(gi->name, &bg, NULL); + evas_object_color_set(eo, bg.r, bg.g, bg.b, bg.a); + + evas_object_show(eo); + } + + return eo; +} + +static Eina_List *_get_name_list(struct mediadata *md) { if (!md) { _ERR("invalid argument"); @@ -110,11 +163,47 @@ static Eina_List *_get_item_list(struct mediadata *md) return mediadata_get_list(md, E_LIST_NAME); } -static void _free_item_list(Eina_List *list) +static Eina_List *_get_genre_list(struct mediadata *md) +{ + Eina_List *list; + struct group_info *gi; + + if (!md) { + _ERR("invalid argument"); + return NULL; + } + + gi = calloc(1, sizeof(*gi)); + if (!gi) { + _ERR("failed to allocate memory"); + return NULL; + } + + gi->name = STR_GENRE_NAME; + gi->list = mediadata_get_list(md, E_LIST_GENRE); + + list = NULL; + list = eina_list_append(list, gi); + + return list; +} + +static void _free_name_list(Eina_List *list) { mediadata_free_list(list); } +static void _free_genre_list(Eina_List *list) +{ + Eina_List *l; + struct group_info *gi; + + EINA_LIST_FOREACH(list, l, gi) { + mediadata_free_list(gi->list); + free(gi); + } +} + static void _key_down_cb(void *data, Elm_Object_Item *it, Evas_Event_Key_Down *ev) { @@ -174,8 +263,13 @@ static void _selected_cb(void *data, Elm_Object_Item *it) static struct grid_class _gclass[] = { [E_MOVIE_NAME] = { .item_style = STYLE_MOVIE_NAME, - .text_get = _grid_text_get, - .content_get = _grid_content_get + .text_get = _media_text_get, + .content_get = _media_content_get + }, + [E_MOVIE_GENRE] = { + .item_style = STYLE_MOVIE_GENRE, + .text_get = _group_text_get, + .content_get = _group_content_get }, /* Other view mode class will be added later */ }; @@ -187,11 +281,20 @@ static struct grid_data _gdata[] = { .item_num = MOVIE_NAME_ITEM_NUM, .grid_padding = MOVIE_NAME_GRID_PADDING, .gclass = &_gclass[E_MOVIE_NAME], - .get_item_list = _get_item_list, - .free_item_list = _free_item_list, + .get_item_list = _get_name_list, + .free_item_list = _free_name_list, .key_down_cb = _key_down_cb, .selected_cb = _selected_cb }, + [E_MOVIE_GENRE] = { + .item_x = MOVIE_GENRE_ITEM_X, + .item_y = MOVIE_GENRE_ITEM_Y, + .item_num = MOVIE_GENRE_ITEM_NUM, + .grid_padding = MOVIE_GENRE_GRID_PADDING, + .gclass = &_gclass[E_MOVIE_GENRE], + .get_item_list = _get_genre_list, + .free_item_list = _free_genre_list + }, /* Other view mode data will be added later */ }; @@ -203,5 +306,5 @@ struct grid_data *get_movie_grid_data(int type) } /* It will be fixed later */ - return &_gdata[E_MOVIE_NAME]; + return &_gdata[type]; } |