summaryrefslogtreecommitdiff
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
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>
-rw-r--r--include/data/mediadata.h5
-rw-r--r--include/define.h2
-rw-r--r--include/grid/grid.h7
-rw-r--r--res/edc/widgets/gengrid.edc374
-rw-r--r--src/data/mediadata.c109
-rw-r--r--src/grid/grid_movie.c121
-rw-r--r--src/layout/gallery.c1
-rw-r--r--src/layout/movie.c1
-rw-r--r--src/layout/music.c1
9 files changed, 600 insertions, 21 deletions
diff --git a/include/data/mediadata.h b/include/data/mediadata.h
index 3c9ba59..60b5899 100644
--- a/include/data/mediadata.h
+++ b/include/data/mediadata.h
@@ -44,8 +44,9 @@ enum sort_type {
};
enum list_type {
- E_LIST_NAME = 0,
- E_LIST_DATE,
+ E_LIST_DATE = 0,
+ E_LIST_NAME,
+ E_LIST_GENRE,
E_LIST_MAX
};
diff --git a/include/define.h b/include/define.h
index 50a55fe..f3af902 100644
--- a/include/define.h
+++ b/include/define.h
@@ -67,9 +67,11 @@
#define PART_ELM_TEXT_ARTIST "elm.text.artist"
#define PART_ELM_TEXT_ALBUM "elm.text.album"
#define PART_ELM_TEXT_PLAYTIME "elm.text.playtime"
+#define PART_ELM_TEXT_COUNT "elm.text.count"
#define PART_ELM_SWALLOW_THUMBNAIL "elm.swallow.thumbnail"
#define PART_ELM_SWALLOW_VIDEO "elm.swallow.video"
#define PART_ELM_SWALLOW_FAVORITE "elm.swallow.favorite"
+#define PART_ELM_SWALLOW_BG "elm.swallow.bg"
#define PART_ELM_SWALLOW_TEXTBG "elm.swallow.textbg"
/* signal */
diff --git a/include/grid/grid.h b/include/grid/grid.h
index d7dbf18..c67dc5b 100644
--- a/include/grid/grid.h
+++ b/include/grid/grid.h
@@ -80,4 +80,11 @@ struct grid_data *get_music_grid_data(int type);
#define MUSIC_SONG_ITEM_NUM 4
#define MUSIC_SONG_GRID_PADDING (62 - MUSIC_SONG_ITEM_PADDING)
+#define STYLE_MOVIE_GENRE "genre_item"
+#define MOVIE_GENRE_ITEM_PADDING GALLERY_EVENT_ITEM_PADDING
+#define MOVIE_GENRE_ITEM_X GALLERY_EVENT_ITEM_X
+#define MOVIE_GENRE_ITEM_Y GALLERY_EVENT_ITEM_Y
+#define MOVIE_GENRE_ITEM_NUM GALLERY_EVENT_ITEM_NUM
+#define MOVIE_GENRE_GRID_PADDING GALLERY_EVENT_GRID_PADDING
+
#endif /* __AIR_MEDIAHUB_GRID_H__ */
diff --git a/res/edc/widgets/gengrid.edc b/res/edc/widgets/gengrid.edc
index 04b7876..68bd968 100644
--- a/res/edc/widgets/gengrid.edc
+++ b/res/edc/widgets/gengrid.edc
@@ -1584,6 +1584,380 @@ group {
}
group {
+ name: "elm/gengrid/item/genre_item/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.count";
+ data.item: "contents" "elm.swallow.bg";
+ data.item: "focus_highlight" "on";
+ parts {
+ part {
+ name: "elm.padding.bottom_right";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.relative: 1.0 1.0;
+ min: 6 6;
+ align: 1.0 1.0;
+ fixed: 1 1;
+ }
+ }
+ part {
+ name: "map";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ perspective {
+ zplane: 0;
+ focal: 1000;
+ }
+ visible: 0;
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ perspective.zplane: -100;
+ }
+ }
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel2 {
+ to: "elm.padding.bottom_right";
+ relative: 0.0 0.0;
+ }
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part {
+ name: "defaultbg";
+ scale: 1;
+ type: RECT;
+ description {
+ state : "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ color: COLOR_ITEM_DEFAULT;
+ map {
+ perspective_on: 1;
+ perspective: "map";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ map.on: 1;
+ }
+ }
+ part {
+ name: PART_ELM_SWALLOW_BG;
+ scale: 1;
+ type: SWALLOW;
+ description {
+ state : "default" 0.0;
+ rel1.to: "defaultbg";
+ rel2.to: "defaultbg";
+ map {
+ perspective_on: 1;
+ perspective: "map";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ map.on: 1;
+ }
+ }
+ part {
+ name: "part_focus1";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel2 {
+ to: "bg";
+ relative: 1.0 0.0;
+ }
+ min: 0 6;
+ align: 0.5 0.0;
+ color: COLOR_ITEM_FOCUS;
+ fixed: 0 1;
+ 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: "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: 6 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: "part_focus3";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "part_focus1";
+ relative: 1.0 1.0;
+ }
+ rel2.to: "bg";
+ min: 6 0;
+ align: 1.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: "part_focus4";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "part_focus2";
+ relative: 1.0 1.0;
+ }
+ rel2 {
+ to: "part_focus3";
+ relative: 0.0 1.0;
+ }
+ min: 0 6;
+ align: 0.5 1.0;
+ color: COLOR_ITEM_FOCUS;
+ fixed: 0 1;
+ 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: PART_ELM_TEXT_TITLE;
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "bg";
+ relative: 0.5 0.5;
+ }
+ rel2 {
+ to: "bg";
+ relative: 0.5 0.5;
+ }
+ text {
+ font: FONT_LIGHT;
+ size: 28;
+ min: 1 0;
+ align: 0.5 0.5;
+ ellipsis: -1;
+ }
+ min: 0 28;
+ align: 0.5 0.5;
+ color: COLOR_TEXT_FOCUS;
+ fixed: 0 1;
+ map {
+ perspective_on: 1;
+ perspective: "map";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ map.on: 1;
+ }
+ }
+ part {
+ name: "padding_count";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "defaultbg";
+ relative: 1.0 1.0;
+ }
+ rel2.to: "defaultbg";
+ min: 14 12;
+ align: 1.0 1.0;
+ fixed: 1 1;
+ }
+ }
+ part {
+ name: PART_ELM_TEXT_COUNT;
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "padding_count";
+ rel2 {
+ to: "padding_count";
+ relative: 0.0 0.0;
+ }
+ text {
+ font: FONT_LIGHT;
+ size: 24;
+ min: 1 0;
+ align: 1.0 1.0;
+ ellipsis: -1;
+ }
+ min: 0 24;
+ align: 1.0 1.0;
+ color: COLOR_TEXT_FOCUS;
+ fixed: 0 1;
+ map {
+ perspective_on: 1;
+ perspective: "map";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ map.on: 1;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go_active";
+ signal: "elm,state,focused";
+ source: "elm";
+ action: STATE_SET "selected_0" 0.0;
+ target: "part_focus1";
+ target: "part_focus2";
+ target: "part_focus3";
+ target: "part_focus4";
+ after: "focus,in,anim";
+ }
+ program {
+ name: "focus,in,anim";
+ action: STATE_SET "selected" 0.0;
+ target: "defaultbg";
+ target: PART_ELM_SWALLOW_BG;
+ target: "part_focus1";
+ target: "part_focus2";
+ target: "part_focus3";
+ target: "part_focus4";
+ target: PART_ELM_TEXT_TITLE;
+ target: PART_ELM_TEXT_COUNT;
+ transition: TRANSITION_FOCUS;
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unfocused";
+ source: "elm";
+ action: STATE_SET "selected_0" 0.0;
+ target: "part_focus1";
+ target: "part_focus2";
+ target: "part_focus3";
+ target: "part_focus4";
+ transition: TRANSITION_FOCUS;
+ after: "focus,out,anim";
+ }
+ program {
+ name: "focus,out,anim";
+ action: STATE_SET "default" 0.0;
+ target: PART_ELM_SWALLOW_BG;
+ target: "defaultbg";
+ target: "part_focus1";
+ target: "part_focus2";
+ target: "part_focus3";
+ target: "part_focus4";
+ target: PART_ELM_TEXT_TITLE;
+ target: PART_ELM_TEXT_COUNT;
+ }
+ }
+}
+
+group {
name: "elm/gengrid/item/movie_item_favorite/default";
inherit: "elm/gengrid/item/movie_item/default";
parts {
diff --git a/src/data/mediadata.c b/src/data/mediadata.c
index bfea7c7..d57cbed 100644
--- a/src/data/mediadata.c
+++ b/src/data/mediadata.c
@@ -27,6 +27,7 @@ typedef char *(*group_name_get)(app_media_info *info);
static int _compare_cb_date(const void *, const void *);
static int _compare_cb_name(const void *, const void *);
+static int _compare_cb_genre(const void *, const void *);
static int _compare_title(struct group_info *, app_media_info *);
static char *_get_title(app_media_info *);
@@ -34,6 +35,9 @@ static void *_get_data_title(app_media_info *info);
static int _compare_time(struct group_info *, app_media_info *);
static char *_get_time(app_media_info *);
static void *_get_data_time(app_media_info *info);
+static int _compare_genre(struct group_info *, app_media_info *);
+static char *_get_genre(app_media_info *);
+static void *_get_data_genre(app_media_info *);
enum _filter_type {
E_FILTER_FOLDER = 0,
@@ -56,10 +60,11 @@ struct _data {
struct _sort_info {
int order_type;
const char *order_keyword;
- Eina_Compare_Cb func;
};
struct _list_info {
+ Eina_Compare_Cb sort_cmp_cb;
+
media_compare media_cmp;
media_compare_data_get data_get;
group_name_get name_get;
@@ -69,26 +74,32 @@ static struct _sort_info g_sort_info[E_SORT_MAX] = {
[E_SORT_DATE] = {
.order_type = MEDIA_CONTENT_ORDER_DESC,
.order_keyword = MEDIA_MODIFIED_TIME,
- .func = _compare_cb_date,
},
[E_SORT_NAME] = {
.order_type = MEDIA_CONTENT_ORDER_ASC,
.order_keyword = MEDIA_TITLE,
- .func = _compare_cb_name,
}
};
static struct _list_info g_list_info[E_LIST_MAX] = {
+ [E_LIST_DATE] = {
+ .sort_cmp_cb = _compare_cb_date,
+ .media_cmp = _compare_time,
+ .name_get = _get_time,
+ .data_get = _get_data_time,
+ },
[E_LIST_NAME] = {
+ .sort_cmp_cb = _compare_cb_name,
.media_cmp = _compare_title,
.name_get = _get_title,
.data_get = _get_data_title,
},
- [E_LIST_DATE] = {
- .media_cmp = _compare_time,
- .name_get = _get_time,
- .data_get = _get_data_time,
- }
+ [E_LIST_GENRE] = {
+ .sort_cmp_cb = _compare_cb_genre,
+ .media_cmp = _compare_genre,
+ .name_get = _get_genre,
+ .data_get = _get_data_genre,
+ },
};
static bool _create_filter(struct _data *data, filter_h *filter, int type)
@@ -193,6 +204,56 @@ static char *_get_time(app_media_info *info)
return _get_date_string(info->content_time);
}
+static const char *_get_genre_string(app_media_info *info)
+{
+ const char *genre;
+
+ if (info->media_type == MEDIA_CONTENT_TYPE_VIDEO)
+ genre = info->video->genre;
+ else if (info->media_type == MEDIA_CONTENT_TYPE_MUSIC)
+ genre = info->audio->genre;
+ else
+ genre = NULL;
+
+ return genre;
+}
+
+static int _compare_genre(struct group_info *gi, app_media_info *info)
+{
+ const char *genre;
+
+ genre = _get_genre_string(info);
+
+ if (!gi || !gi->data || !genre)
+ return -1;
+
+ return strcmp(gi->data, genre);
+}
+
+static void *_get_data_genre(app_media_info *info)
+{
+ const char *genre;
+
+ genre = _get_genre_string(info);
+
+ if (!genre)
+ return NULL;
+
+ return strdup(genre);
+}
+
+static char *_get_genre(app_media_info *info)
+{
+ const char *genre;
+
+ genre = _get_genre_string(info);
+
+ if (!genre)
+ return NULL;
+
+ return strdup(genre);
+}
+
static int _compare_cb_date(const void *data1, const void *data2)
{
app_media *am1, *am2;
@@ -234,11 +295,35 @@ static int _compare_cb_name(const void *data1, const void *data2)
return strcasecmp(info1->display_name, info2->display_name);
}
+static int _compare_cb_genre(const void *data1, const void *data2)
+{
+ app_media *am1, *am2;
+ app_media_info *info1, *info2;
+ const char *genre1, *genre2;
+
+ am1 = (app_media *)data1;
+ am2 = (app_media *)data2;
+
+ info1 = app_media_get_info(am1);
+ info2 = app_media_get_info(am2);
+
+ if (!info1 || !info2)
+ return -1;
+
+ genre1 = _get_genre_string(info1);
+ genre2 = _get_genre_string(info2);
+
+ if (!genre1 || !genre2)
+ return -1;
+
+ return strcmp(genre1, genre2);
+}
+
static Eina_List *_sort_list(Eina_List *list, int sort)
{
Eina_List *sorted_list;
- sorted_list = eina_list_sort(list, 0, g_sort_info[sort].func);
+ sorted_list = eina_list_sort(list, 0, g_list_info[sort].sort_cmp_cb);
return sorted_list;
}
@@ -327,7 +412,9 @@ struct mediadata *mediadata_create(const char *media_type,
media_content_disconnect();
- md->media_list = _sort_list(data.media_list, data.sort_type);
+ md->media_list = eina_list_clone(data.media_list);
+
+ eina_list_free(data.media_list);
return md;
}
@@ -369,6 +456,8 @@ Eina_List *mediadata_get_list(struct mediadata *md, int list_type)
return NULL;
}
+ md->media_list = _sort_list(md->media_list, list_type);
+
gi = NULL;
list = NULL;
EINA_LIST_FOREACH(md->media_list, l, am) {
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];
}
diff --git a/src/layout/gallery.c b/src/layout/gallery.c
index c279df5..0a738d5 100644
--- a/src/layout/gallery.c
+++ b/src/layout/gallery.c
@@ -207,6 +207,7 @@ static bool _create(layoutmgr *lmgr, void *data)
priv->view_btn = ld->bottom;
priv->lmgr = lmgr;
priv->md = md;
+ priv->gdata = get_gallery_grid_data(E_GALLERY_EVENT);
ldata = _create_listmgr_data(priv);
if (!ldata) {
diff --git a/src/layout/movie.c b/src/layout/movie.c
index e81fc7b..97d5389 100644
--- a/src/layout/movie.c
+++ b/src/layout/movie.c
@@ -469,6 +469,7 @@ static bool _create(layoutmgr *lmgr, void *data)
priv->view_btn = ld->bottom;
priv->lmgr = lmgr;
priv->md = md;
+ priv->gdata = get_movie_grid_data(E_MOVIE_NAME);
ldata = _create_listmgr_data(priv);
if (!ldata) {
diff --git a/src/layout/music.c b/src/layout/music.c
index 0ee6d95..273cf13 100644
--- a/src/layout/music.c
+++ b/src/layout/music.c
@@ -410,6 +410,7 @@ static bool _create(layoutmgr *lmgr, void *data)
priv->view_btn = ld->bottom;
priv->lmgr = lmgr;
priv->md = md;
+ priv->gdata = get_music_grid_data(E_MUSIC_SONG);
ldata = _create_listmgr_data(priv);
if (!ldata) {