summaryrefslogtreecommitdiff
path: root/src/grid
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-09-11 13:08:04 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-09-11 13:08:04 +0900
commit676fd61c56d31ab525c90957b0246f77931e3598 (patch)
tree7cfee7340e5ff69df9d4198e153d7725844e3f62 /src/grid
parentaf92654816569528bae0233a0b1ee4c6744e6b53 (diff)
downloadair_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.c121
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];
}