remove grid related code from layout 44/47544/3
authorJehun Lim <jehun.lim@samsung.com>
Fri, 4 Sep 2015 07:25:15 +0000 (16:25 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Mon, 7 Sep 2015 01:27:18 +0000 (10:27 +0900)
Change-Id: I6ebf7839941cd6c163b6f5d62c9aff8acb25e689
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
include/grid/grid.h
include/util/listmgr.h
src/grid/grid_gallery.c
src/grid/grid_movie.c
src/grid/grid_music.c
src/layout/gallery.c
src/layout/movie.c
src/layout/music.c
src/util/listmgr.c

index 425843c..da89cf9 100644 (file)
@@ -46,9 +46,12 @@ struct grid_data {
        int item_x;
        int item_y;
        int item_num;
+       int grid_padding;
        struct grid_class *gclass;
        Eina_List *(*get_item_list)(struct mediadata *md);
-       void (*item_selected)(Eina_List *list, app_media *am);
+       void (*key_down_cb)(void *data, Elm_Object_Item *it,
+                               Evas_Event_Key_Down *ev);
+       void (*selected_cb)(void *data, Elm_Object_Item *it);
 };
 
 struct grid_data *get_movie_grid_data(int type);
@@ -56,21 +59,24 @@ struct grid_data *get_gallery_grid_data(int type);
 struct grid_data *get_music_grid_data(int type);
 
 #define STYLE_MOVIE_NAME "movie_item"
-#define MOVIE_NAME_PADDING 26
-#define MOVIE_NAME_ITEM_X (378 + MOVIE_NAME_PADDING)
-#define MOVIE_NAME_ITEM_Y (294 + MOVIE_NAME_PADDING)
+#define MOVIE_NAME_ITEM_PADDING 26
+#define MOVIE_NAME_ITEM_X (378 + MOVIE_NAME_ITEM_PADDING)
+#define MOVIE_NAME_ITEM_Y (294 + MOVIE_NAME_ITEM_PADDING)
 #define MOVIE_NAME_ITEM_NUM 2
+#define MOVIE_NAME_GRID_PADDING (62 - MOVIE_NAME_ITEM_PADDING)
 
 #define STYLE_GALLERY_EVENT "gallery_item"
-#define GALLERY_EVENT_PADDING 6
-#define GALLERY_EVENT_ITEM_X (200 + GALLERY_EVENT_PADDING)
-#define GALLERY_EVENT_ITEM_Y (200 + GALLERY_EVENT_PADDING)
+#define GALLERY_EVENT_ITEM_PADDING 6
+#define GALLERY_EVENT_ITEM_X (200 + GALLERY_EVENT_ITEM_PADDING)
+#define GALLERY_EVENT_ITEM_Y (200 + GALLERY_EVENT_ITEM_PADDING)
 #define GALLERY_EVENT_ITEM_NUM 3
+#define GALLERY_EVENT_GRID_PADDING (62 - GALLERY_EVENT_ITEM_PADDING)
 
 #define STYLE_MUSIC_SONG "song_item"
-#define MUSIC_SONG_PADDING 26
-#define MUSIC_SONG_ITEM_X (488 + MUSIC_SONG_PADDING)
-#define MUSIC_SONG_ITEM_Y (134 + MUSIC_SONG_PADDING)
+#define MUSIC_SONG_ITEM_PADDING 26
+#define MUSIC_SONG_ITEM_X (488 + MUSIC_SONG_ITEM_PADDING)
+#define MUSIC_SONG_ITEM_Y (134 + MUSIC_SONG_ITEM_PADDING)
 #define MUSIC_SONG_ITEM_NUM 4
+#define MUSIC_SONG_GRID_PADDING (62 - MUSIC_SONG_ITEM_PADDING)
 
 #endif /* __AIR_MEDIAHUB_GRID_H__ */
index f90bb0b..f3bd96e 100644 (file)
 
 struct listmgr;
 
-struct play_info_ops {
+struct play_info_data {
        bool (*draw)(void *data, Evas_Object *base);
        bool (*update)(void *data, Evas_Object *base);
 
        void (*selected_cb)(void *data, Evas_Object *obj);
-       void *ops_data;
-};
-
-struct grid_ops {
-       struct grid_class *gclass;
-
-       void (*key_down_cb)(void *data, Elm_Object_Item *it,
-                               Evas_Event_Key_Down *ev);
-       void (*selected_cb)(void *data, Elm_Object_Item *it);
-       void *ops_data;
+       void *cb_data;
 };
 
 struct listmgr_data {
        Evas_Object *menu_btn;
        Evas_Object *view_btn;
 
-       int grid_item_x;
-       int grid_item_y;
-       int grid_num_item;
-
-       int box_padding;
+       struct play_info_data *pdata;
 
-       struct play_info_ops *pops;
-       struct grid_ops *gops;
+       struct grid_data *gdata;
+       void *grid_cb_data;
 };
 
 struct listmgr *listmgr_create(Evas_Object *base, void *data);
@@ -55,7 +42,8 @@ void listmgr_destroy(struct listmgr *listmgr);
 
 bool listmgr_draw_list_area(struct listmgr *lmgr);
 bool listmgr_update_content_item(struct listmgr *lmgr);
-bool listmgr_update_content_list(struct listmgr *lmgr, Eina_List *list);
+bool listmgr_update_content_list(struct listmgr *lmgr, Eina_List *list,
+                       struct grid_data *gdata);
 bool listmgr_update_play_info(struct listmgr *lmgr, app_media_info *info);
 
 bool listmgr_focus_content_list(struct listmgr *lmgr, const char *id);
index 5e5f1dd..e443ea1 100644 (file)
@@ -20,6 +20,7 @@
 #include <app_contents.h>
 #include <app_media.h>
 #include <gridmgr.h>
+#include <inputmgr.h>
 #include <viewmgr.h>
 
 #include "define.h"
@@ -119,17 +120,57 @@ static Eina_List *_get_item_list(struct mediadata *md)
        return mediadata_get_list(md, E_LIST_DATE);
 }
 
-static void _item_selected(Eina_List *list, app_media *am)
+static void _key_down_cb(void *data, Elm_Object_Item *it,
+                       Evas_Event_Key_Down *ev)
 {
        struct view_update_data vdata;
+       struct mediadata *md;
+       app_media *am;
+
+       if (!data || !ev) {
+               _ERR("invalid argument");
+               return;
+       }
+
+       md = data;
+
+       if (!strcmp(ev->keyname, KEY_MENU) ||
+               !strcmp(ev->keyname, KEY_MENU_REMOTE)) {
+               am = elm_object_item_data_get(it);
+               if (!am) {
+                       _ERR("failed to get app media");
+                       return;
+               }
+
+               vdata.list = mediadata_get_medialist(md);
+               vdata.index = util_get_media_index(vdata.list, am);
+
+               viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
+               viewmgr_show_view(VIEW_ACTION_MENU);
+       }
+}
+
+static void _selected_cb(void *data, Elm_Object_Item *it)
+{
+       struct view_update_data vdata;
+       struct mediadata *md;
+       app_media *am;
 
-       if (!list || !am) {
+       if (!data || !it) {
                _ERR("invalid argument");
                return;
        }
 
-       vdata.list = list;
-       vdata.index = util_get_media_index(list, am);
+       md = data;
+
+       am = elm_object_item_data_get(it);
+       if (!am) {
+               _ERR("failed to get app media");
+               return;
+       }
+
+       vdata.list = mediadata_get_medialist(md);
+       vdata.index = util_get_media_index(vdata.list, am);
 
        viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
        viewmgr_push_view(VIEW_VIEWER);
@@ -149,9 +190,11 @@ static struct grid_data _gdata[] = {
                .item_x = GALLERY_EVENT_ITEM_X,
                .item_y = GALLERY_EVENT_ITEM_Y,
                .item_num = GALLERY_EVENT_ITEM_NUM,
+               .grid_padding = GALLERY_EVENT_GRID_PADDING,
                .gclass = &_gclass[E_GALLERY_EVENT],
                .get_item_list = _get_item_list,
-               .item_selected = _item_selected
+               .key_down_cb = _key_down_cb,
+               .selected_cb = _selected_cb
        },
        /* Other view mode data will be added later */
 };
index 60ab310..49caf86 100644 (file)
@@ -20,6 +20,7 @@
 #include <app_contents.h>
 #include <app_media.h>
 #include <gridmgr.h>
+#include <inputmgr.h>
 #include <viewmgr.h>
 
 #include "define.h"
@@ -109,17 +110,57 @@ static Eina_List *_get_item_list(struct mediadata *md)
        return mediadata_get_list(md, E_LIST_NAME);
 }
 
-static void _item_selected(Eina_List *list, app_media *am)
+static void _key_down_cb(void *data, Elm_Object_Item *it,
+                       Evas_Event_Key_Down *ev)
 {
        struct view_update_data vdata;
+       struct mediadata *md;
+       app_media *am;
+
+       if (!data || !ev) {
+               _ERR("invalid argument");
+               return;
+       }
+
+       md = data;
+
+       if (!strcmp(ev->keyname, KEY_MENU) ||
+               !strcmp(ev->keyname, KEY_MENU_REMOTE)) {
+               am = elm_object_item_data_get(it);
+               if (!am) {
+                       _ERR("failed to get app media");
+                       return;
+               }
+
+               vdata.list = mediadata_get_medialist(md);
+               vdata.index = util_get_media_index(vdata.list, am);
+
+               viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
+               viewmgr_show_view(VIEW_ACTION_MENU);
+       }
+}
+
+static void _selected_cb(void *data, Elm_Object_Item *it)
+{
+       struct view_update_data vdata;
+       struct mediadata *md;
+       app_media *am;
 
-       if (!list || !am) {
+       if (!data || !it) {
                _ERR("invalid argument");
                return;
        }
 
-       vdata.list = list;
-       vdata.index = util_get_media_index(list, am);
+       md = data;
+
+       am = elm_object_item_data_get(it);
+       if (!am) {
+               _ERR("failed to get app media");
+               return;
+       }
+
+       vdata.list = mediadata_get_medialist(md);
+       vdata.index = util_get_media_index(vdata.list, am);
 
        viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
        viewmgr_push_view(VIEW_VIEWER);
@@ -139,9 +180,11 @@ static struct grid_data _gdata[] = {
                .item_x = MOVIE_NAME_ITEM_X,
                .item_y = MOVIE_NAME_ITEM_Y,
                .item_num = MOVIE_NAME_ITEM_NUM,
+               .grid_padding = MOVIE_NAME_GRID_PADDING,
                .gclass = &_gclass[E_MOVIE_NAME],
                .get_item_list = _get_item_list,
-               .item_selected = _item_selected
+               .key_down_cb = _key_down_cb,
+               .selected_cb = _selected_cb
        },
        /* Other view mode data will be added later */
 };
index c4e7573..99a4baa 100644 (file)
@@ -20,6 +20,7 @@
 #include <app_contents.h>
 #include <app_media.h>
 #include <gridmgr.h>
+#include <inputmgr.h>
 #include <viewmgr.h>
 
 #include "define.h"
@@ -106,17 +107,57 @@ static Eina_List *_get_item_list(struct mediadata *md)
        return mediadata_get_list(md, E_LIST_NAME);
 }
 
-static void _item_selected(Eina_List *list, app_media *am)
+static void _key_down_cb(void *data, Elm_Object_Item *it,
+                       Evas_Event_Key_Down *ev)
 {
        struct view_update_data vdata;
+       struct mediadata *md;
+       app_media *am;
+
+       if (!data || !ev) {
+               _ERR("invalid argument");
+               return;
+       }
+
+       md = data;
+
+       if (!strcmp(ev->keyname, KEY_MENU) ||
+               !strcmp(ev->keyname, KEY_MENU_REMOTE)) {
+               am = elm_object_item_data_get(it);
+               if (!am) {
+                       _ERR("failed to get app media");
+                       return;
+               }
+
+               vdata.list = mediadata_get_medialist(md);
+               vdata.index = util_get_media_index(vdata.list, am);
+
+               viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
+               viewmgr_show_view(VIEW_ACTION_MENU);
+       }
+}
+
+static void _selected_cb(void *data, Elm_Object_Item *it)
+{
+       struct view_update_data vdata;
+       struct mediadata *md;
+       app_media *am;
 
-       if (!list || !am) {
+       if (!data || !it) {
                _ERR("invalid argument");
                return;
        }
 
-       vdata.list = list;
-       vdata.index = util_get_media_index(list, am);
+       md = data;
+
+       am = elm_object_item_data_get(it);
+       if (!am) {
+               _ERR("failed to get app media");
+               return;
+       }
+
+       vdata.list = mediadata_get_medialist(md);
+       vdata.index = util_get_media_index(vdata.list, am);
 
        viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata);
        viewmgr_push_view(VIEW_MPLAYER);
@@ -136,9 +177,11 @@ static struct grid_data _gdata[] = {
                .item_x = MUSIC_SONG_ITEM_X,
                .item_y = MUSIC_SONG_ITEM_Y,
                .item_num = MUSIC_SONG_ITEM_NUM,
+               .grid_padding = MUSIC_SONG_GRID_PADDING,
                .gclass = &_gclass[E_MUSIC_SONG],
                .get_item_list = _get_item_list,
-               .item_selected = _item_selected
+               .key_down_cb = _key_down_cb,
+               .selected_cb = _selected_cb
        },
        /* Other view mode data will be added later */
 };
index 70efdf7..908487b 100644 (file)
@@ -27,6 +27,7 @@
 #include "layout.h"
 #include "view.h"
 #include "data/mediadata.h"
+#include "grid/grid.h"
 #include "util/listmgr.h"
 #include "util/util.h"
 
@@ -55,93 +56,8 @@ struct _priv {
        struct mediadata *md;
 
        Eina_List *media_list;
-};
-
-static char *_grid_text_get(void *data, Evas_Object *obj, const char *part)
-{
-       app_media *am;
-       app_media_info *info;
-       char buf[32];
 
-       if (!data)
-               return NULL;
-
-       am = data;
-       info = app_media_get_info(am);
-       if (!info) {
-               _ERR("failed to get media info");
-               return NULL;
-       }
-
-       if (info->media_type != MEDIA_CONTENT_TYPE_VIDEO)
-               return NULL;
-
-       if (!strcmp(part, PART_ELM_TEXT_PLAYTIME)) {
-               util_time_string(buf, sizeof(buf),
-                                       info->video->duration, false);
-
-               return strdup(buf);
-       }
-
-       return NULL;
-}
-
-static Evas_Object *_grid_content_get(void *data,
-                       Evas_Object *obj, const char *part)
-{
-       Evas_Object *image;
-       app_media *am;
-       app_media_info *info;
-
-       if (!data)
-               return NULL;
-
-       am = data;
-       info = app_media_get_info(am);
-       if (!info) {
-               _ERR("failed to get media info");
-               return NULL;
-       }
-
-       image = NULL;
-       if (!strcmp(part, PART_ELM_SWALLOW_THUMBNAIL)) {
-               image = util_add_image(obj, info->thumbnail_path);
-               if (!image) {
-                       _ERR("failed to create image object");
-                       return NULL;
-               }
-
-               evas_object_show(image);
-       } else if (!strcmp(part, PART_ELM_SWALLOW_VIDEO)) {
-               if (info->media_type == MEDIA_CONTENT_TYPE_VIDEO) {
-                       image = util_add_image(obj, IMAGE_THUMBNAIL_PLAY);
-                       if (!image) {
-                               _ERR("failed to create image object");
-                               return NULL;
-                       }
-
-                       evas_object_show(image);
-               }
-       } else if (!strcmp(part, PART_ELM_SWALLOW_FAVORITE)) {
-               if (!info->favorite)
-                       return NULL;
-
-               image = util_add_image(obj, IMAGE_THUMBNAIL_FAVORITE);
-               if (!image) {
-                       _ERR("failed to create image object");
-                       return NULL;
-               }
-
-               evas_object_show(image);
-       }
-
-       return image;
-}
-
-static struct grid_class _gclass = {
-       .item_style = STYLE_GRID_GALLERY_ITEM,
-       .text_get = _grid_text_get,
-       .content_get = _grid_content_get
+       struct grid_data *gdata;
 };
 
 static void _recent_item_selected(struct _priv *priv, app_media *am)
@@ -162,97 +78,22 @@ static void _recent_item_selected(struct _priv *priv, app_media *am)
        viewmgr_push_view(VIEW_VIEWER);
 }
 
-static void _grid_selected_cb(void *data, Elm_Object_Item *it)
-{
-       app_media *am;
-       struct view_update_data vdata;
-       struct _priv *priv;
-
-       if (!data || !it) {
-               _ERR("invalid argument");
-               return;
-       }
-
-       priv = data;
-
-       am = elm_object_item_data_get(it);
-       if (!am) {
-               _ERR("failed to get app media");
-               return;
-       }
-
-       vdata.list = mediadata_get_medialist(priv->md);
-       vdata.index = util_get_media_index(vdata.list, am);
-
-       viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
-       viewmgr_push_view(VIEW_VIEWER);
-}
-
-static void _grid_key_down_cb(void *data, Elm_Object_Item *it,
-                       Evas_Event_Key_Down *ev)
-{
-       app_media *am;
-       struct view_update_data vdata;
-       struct _priv *priv;
-
-       if (!data || !ev) {
-               _ERR("invalid argument");
-               return;
-       }
-
-       priv = data;
-
-       if (!strcmp(ev->keyname, KEY_MENU) ||
-               !strcmp(ev->keyname, KEY_MENU_REMOTE)) {
-               am = elm_object_item_data_get(it);
-               if (!am) {
-                       _ERR("failed to get app media");
-                       return;
-               }
-
-               vdata.list = mediadata_get_medialist(priv->md);
-               vdata.index = util_get_media_index(vdata.list, am);
-
-               viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
-               viewmgr_show_view(VIEW_ACTION_MENU);
-       }
-}
-
 static struct listmgr_data *_create_listmgr_data(struct _priv *priv)
 {
        struct listmgr_data *data;
-       struct grid_ops *gops;
 
        data = calloc(1, sizeof(*data));
-       if (!data)
-               goto err;
+       if (!data) {
+               _ERR("failed to allocate memory");
+               return NULL;
+       }
 
        data->menu_btn = priv->menu_btn;
        data->view_btn = priv->view_btn;
 
-       data->grid_item_x = GRID_ITEM_X;
-       data->grid_item_y = GRID_ITEM_Y;
-       data->grid_num_item = GRID_NUM_ITEM;
-       data->box_padding = BOX_PADDING;
-
-       gops = calloc(1, sizeof(*gops));
-       if (!gops) {
-               free(data);
-               goto err;
-       }
-
-       gops->gclass = &_gclass;
-       gops->key_down_cb = _grid_key_down_cb;
-       gops->selected_cb = _grid_selected_cb;
-       gops->ops_data = priv;
-
-       data->gops = gops;
+       data->grid_cb_data = priv->md;
 
        return data;
-
-err:
-       _ERR("failed to allocate memory");
-       return NULL;
 }
 
 static void _update_content_info(struct _priv *priv)
@@ -282,14 +123,14 @@ static void _update_content_list(struct _priv *priv)
                return;
        }
 
-       list = mediadata_get_list(priv->md, E_LIST_DATE);
+       list = priv->gdata->get_item_list(priv->md);
        if (!list) {
                elm_object_part_text_set(priv->layout,
                                PART_NOCONTENT, TEXT_NOCONTENT);
                return;
        }
 
-       if (!listmgr_update_content_list(priv->listmgr, list))
+       if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata))
                _ERR("failed to update list area");
 
        priv->media_list = list;
@@ -324,9 +165,6 @@ static bool _create(layoutmgr *lmgr, void *data)
                return false;
        }
 
-       priv->menu_btn = ld->top;
-       priv->view_btn = ld->bottom;
-
        base = layoutmgr_get_base(lmgr);
        if (!base) {
                _ERR("failed to get base object");
@@ -344,37 +182,41 @@ static bool _create(layoutmgr *lmgr, void *data)
                goto err2;
        }
 
+       md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_DATE);
+       if (!md) {
+               _ERR("failed to create mediadata");
+               goto err2;
+       }
+
+       priv->base = base;
+       priv->layout = layout;
+       priv->menu_btn = ld->top;
+       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) {
                _ERR("failed to create listmgr data");
-               goto err2;
+               goto err3;
        }
 
        listmgr = listmgr_create(layout, (void *)ldata);
        if (!listmgr) {
                _ERR("failed to create listmgr");
+               free(ldata);
                goto err3;
        }
 
-       md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_DATE);
-       if (!md) {
-               _ERR("failed to create mediadata");
-               listmgr_destroy(listmgr);
-               goto err3;
-       }
-
-       priv->base = base;
-       priv->layout = layout;
-       priv->lmgr = lmgr;
-       priv->listmgr = listmgr;
        priv->ldata = ldata;
-       priv->md = md;
+       priv->listmgr = listmgr;
 
        layoutmgr_set_layout_data(lmgr, LAYOUT_GALLERY, priv);
 
        if (!listmgr_draw_list_area(listmgr)) {
                _ERR("failed to draw list area");
-               mediadata_destroy(md);
+               free(ldata);
                listmgr_destroy(listmgr);
                goto err3;
        }
@@ -382,7 +224,7 @@ static bool _create(layoutmgr *lmgr, void *data)
        return true;
 
 err3:
-       free(ldata);
+       mediadata_destroy(md);
 err2:
        evas_object_del(layout);
 err:
@@ -405,7 +247,6 @@ static void _destroy(void *layout_data)
        mediadata_destroy(priv->md);
 
        listmgr_destroy(priv->listmgr);
-       free(priv->ldata->gops);
        free(priv->ldata);
 
        evas_object_del(priv->layout);
index 41d3bdf..0b7f98b 100644 (file)
@@ -28,6 +28,7 @@
 #include "layout.h"
 #include "view.h"
 #include "data/mediadata.h"
+#include "grid/grid.h"
 #include "util/listmgr.h"
 #include "util/progressbar.h"
 #include "util/util.h"
@@ -63,90 +64,8 @@ struct _priv {
        Eina_List *media_list;
 
        app_media *recent_info;
-};
-
-static char *_grid_text_get(void *data, Evas_Object *obj, const char *part)
-{
-       app_media *am;
-       app_media_info *info;
-
-       if (!data)
-               return NULL;
-
-       am = data;
-
-       if (!strcmp(part, PART_ELM_TEXT_TITLE)) {
-               info = app_media_get_info(am);
-               if (!info) {
-                       _ERR("failed to get media info");
-                       return NULL;
-               }
-
-               return strdup(info->title);
-       }
-
-       return NULL;
-}
-
-static Evas_Object *_grid_content_get(void *data,
-                       Evas_Object *obj, const char *part)
-{
-       Evas_Object *image;
-       Evas_Object *text_bg;
-       app_media *am;
-       app_media_info *info;
-       struct color_data bg;
-
-       if (!data)
-               return NULL;
-
-       am = data;
-       info = app_media_get_info(am);
-       if (!info) {
-               _ERR("failed to get media info");
-               return NULL;
-       }
-
-       if (!strcmp(part, PART_ELM_SWALLOW_THUMBNAIL)) {
-               image = util_add_image(obj, info->thumbnail_path);
-               if (!image) {
-                       _ERR("failed to create image object");
-                       return NULL;
-               }
 
-               evas_object_show(image);
-               return image;
-       } else if (!strcmp(part, PART_ELM_SWALLOW_FAVORITE)) {
-               if (!info->favorite)
-                       return NULL;
-
-               image = util_add_image(obj, IMAGE_THUMBNAIL_FAVORITE);
-               if (!image) {
-                       _ERR("failed to create image object");
-                       return NULL;
-               }
-
-               evas_object_show(image);
-               return image;
-       } else if (!strcmp(part, PART_ELM_SWALLOW_TEXTBG)) {
-               text_bg = evas_object_rectangle_add(obj);
-               if (!text_bg) {
-                       _ERR("failed to create rectangle object");
-                       return NULL;
-               }
-
-               app_contents_get_color(info->title, NULL, &bg);
-               evas_object_color_set(text_bg, bg.r, bg.g, bg.b, bg.a);
-               return text_bg;
-       }
-
-       return NULL;
-}
-
-static struct grid_class _gclass = {
-       .item_style = STYLE_GRID_MOVIE_ITEM,
-       .text_get = _grid_text_get,
-       .content_get = _grid_content_get
+       struct grid_data *gdata;
 };
 
 static bool _update_recent_info(Evas_Object *base, app_media_info *info)
@@ -335,85 +254,27 @@ static void _recent_item_selected(struct _priv *priv, app_media *am)
        viewmgr_push_view(VIEW_VIEWER);
 }
 
-static void _item_selected(struct _priv *priv, app_media *am)
-{
-       struct view_update_data vdata;
-
-       vdata.list = mediadata_get_medialist(priv->md);
-       vdata.index = util_get_media_index(vdata.list, am);
-
-       viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
-       viewmgr_push_view(VIEW_VIEWER);
-}
-
 static void _recent_selected_cb(void *data, Evas_Object *obj)
 {
        struct _priv *priv;
-
-       if (!data || !obj)
-               return;
-
-       priv = data;
-
-       _item_selected(priv, priv->recent_info);
-}
-
-static void _grid_selected_cb(void *data, Elm_Object_Item *it)
-{
-       app_media *am;
-       struct _priv *priv;
-
-       if (!data || !it) {
-               _ERR("invalid argument");
-               return;
-       }
-
-       priv = data;
-
-       am = elm_object_item_data_get(it);
-       if (!am) {
-               _ERR("failed to get app media");
-               return;
-       }
-
-       _item_selected(priv, am);
-}
-
-static void _grid_key_down_cb(void *data, Elm_Object_Item *it,
-                       Evas_Event_Key_Down *ev)
-{
-       app_media *am;
        struct view_update_data vdata;
-       struct _priv *priv;
 
-       if (!data || !ev) {
-               _ERR("invalid argument");
+       if (!data || !obj)
                return;
-       }
 
        priv = data;
 
-       if (!strcmp(ev->keyname, KEY_MENU) ||
-               !strcmp(ev->keyname, KEY_MENU_REMOTE)) {
-               am = elm_object_item_data_get(it);
-               if (!am) {
-                       _ERR("failed to get app media");
-                       return;
-               }
-
-               vdata.list = mediadata_get_medialist(priv->md);
-               vdata.index = util_get_media_index(vdata.list, am);
+       vdata.list = mediadata_get_medialist(priv->md);
+       vdata.index = util_get_media_index(vdata.list, priv->recent_info);
 
-               viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
-               viewmgr_show_view(VIEW_ACTION_MENU);
-       }
+       viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
+       viewmgr_push_view(VIEW_VIEWER);
 }
 
 static struct listmgr_data *_create_listmgr_data(struct _priv *priv)
 {
        struct listmgr_data *data;
-       struct play_info_ops *pops;
-       struct grid_ops *gops;
+       struct play_info_data *pdata;
 
        data = calloc(1, sizeof(*data));
        if (!data)
@@ -422,36 +283,20 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv)
        data->menu_btn = priv->menu_btn;
        data->view_btn = priv->view_btn;
 
-       data->grid_item_x = GRID_ITEM_X;
-       data->grid_item_y = GRID_ITEM_Y;
-       data->grid_num_item = GRID_NUM_ITEM;
-       data->box_padding = BOX_PADDING;
-
-       pops = calloc(1, sizeof(*pops));
-       if (!pops)
+       pdata = calloc(1, sizeof(*pdata));
+       if (!pdata)
                goto err2;
 
-       pops->draw = _draw_recent;
-       pops->update = _update_recent;
-       pops->selected_cb = _recent_selected_cb;
-       pops->ops_data = priv;
+       pdata->draw = _draw_recent;
+       pdata->update = _update_recent;
+       pdata->selected_cb = _recent_selected_cb;
+       pdata->cb_data = priv;
 
-       gops = calloc(1, sizeof(*gops));
-       if (!gops)
-               goto err3;
-
-       gops->gclass = &_gclass;
-       gops->key_down_cb = _grid_key_down_cb;
-       gops->selected_cb = _grid_selected_cb;
-       gops->ops_data = priv;
-
-       data->pops = pops;
-       data->gops = gops;
+       data->pdata = pdata;
+       data->grid_cb_data = priv->md;
 
        return data;
 
-err3:
-       free(pops);
 err2:
        free(data);
 err:
@@ -491,7 +336,7 @@ static void _update_content_list(struct _priv *priv)
                return;
        }
 
-       if (!listmgr_update_content_list(priv->listmgr, list)) {
+       if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata)) {
                _ERR("failed to update list area");
                return;
        }
@@ -582,9 +427,6 @@ static bool _create(layoutmgr *lmgr, void *data)
                return false;
        }
 
-       priv->menu_btn = ld->top;
-       priv->view_btn = ld->bottom;
-
        base = layoutmgr_get_base(lmgr);
        if (!base) {
                _ERR("failed to get base object");
@@ -602,37 +444,42 @@ static bool _create(layoutmgr *lmgr, void *data)
                goto err2;
        }
 
+       md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_NAME);
+       if (!md) {
+               _ERR("failed to create mediadata");
+               goto err2;
+       }
+
+       priv->base = base;
+       priv->layout = layout;
+       priv->menu_btn = ld->top;
+       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) {
                _ERR("failed to create listmgr data");
-               goto err2;
+               goto err3;
        }
 
        listmgr = listmgr_create(layout, (void *)ldata);
        if (!listmgr) {
                _ERR("failed to create listmgr");
+               free(ldata->pdata);
+               free(ldata);
                goto err3;
        }
 
-       md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_NAME);
-       if (!md) {
-               _ERR("failed to create mediadata");
-               listmgr_destroy(listmgr);
-               goto err3;
-       }
-
-       priv->base = base;
-       priv->layout = layout;
-       priv->lmgr = lmgr;
-       priv->listmgr = listmgr;
        priv->ldata = ldata;
-       priv->md = md;
+       priv->listmgr = listmgr;
 
        layoutmgr_set_layout_data(lmgr, LAYOUT_MOVIE, priv);
 
        if (!listmgr_draw_list_area(priv->listmgr)) {
                _ERR("failed to draw list area");
-               mediadata_destroy(md);
+               free(ldata);
                listmgr_destroy(listmgr);
                goto err3;
        }
@@ -640,7 +487,7 @@ static bool _create(layoutmgr *lmgr, void *data)
        return true;
 
 err3:
-       free(ldata);
+       mediadata_destroy(md);
 err2:
        evas_object_del(layout);
 err:
@@ -665,8 +512,7 @@ static void _destroy(void *layout_data)
        mediadata_destroy(priv->md);
 
        listmgr_destroy(priv->listmgr);
-       free(priv->ldata->pops);
-       free(priv->ldata->gops);
+       free(priv->ldata->pdata);
        free(priv->ldata);
 
        evas_object_del(priv->layout);
index 48161ae..5ff746e 100644 (file)
@@ -28,6 +28,7 @@
 #include "layout.h"
 #include "view.h"
 #include "data/mediadata.h"
+#include "grid/grid.h"
 #include "util/listmgr.h"
 #include "util/util.h"
 
@@ -59,79 +60,8 @@ struct _priv {
        Eina_List *media_list;
 
        app_media *playing_info;
-};
-
-static char *_grid_text_get(void *data, Evas_Object *obj, const char *part)
-{
-       app_media *am;
-       app_media_info *info;
-
-       if (!data)
-               return NULL;
-
-       am = data;
-       info = app_media_get_info(am);
-       if (!info) {
-               _ERR("failed to get media info");
-               return NULL;
-       }
-
-       if (!strcmp(part, PART_ELM_TEXT_TITLE))
-               return strdup(info->title);
-       else if (!strcmp(part, PART_ELM_TEXT_ARTIST))
-               return strdup(info->audio->artist);
-       else if (!strcmp(part, PART_ELM_TEXT_ALBUM))
-               return strdup(info->audio->album);
-
-       return NULL;
-}
-
-static Evas_Object *_grid_content_get(void *data,
-                       Evas_Object *obj, const char *part)
-{
-       Evas_Object *image;
-       app_media *am;
-       app_media_info *info;
-
-       if (!data)
-               return NULL;
-
-       am = data;
-       info = app_media_get_info(am);
-       if (!info) {
-               _ERR("failed to get media info");
-               return NULL;
-       }
-
-       image = NULL;
-       if (!strcmp(part, PART_ELM_SWALLOW_THUMBNAIL)) {
-               image = util_add_image(obj, info->thumbnail_path);
-               if (!image) {
-                       _ERR("failed to create image object");
-                       return NULL;
-               }
 
-               evas_object_show(image);
-       } else if (!strcmp(part, PART_ELM_SWALLOW_FAVORITE)) {
-               if (!info->favorite)
-                       return NULL;
-
-               image = util_add_image(obj, IMAGE_THUMBNAIL_FAVORITE);
-               if (!image) {
-                       _ERR("failed to create image object");
-                       return NULL;
-               }
-
-               evas_object_show(image);
-       }
-
-       return image;
-}
-
-static struct grid_class _gclass = {
-       .item_style = STYLE_GRID_SONG_ITEM,
-       .text_get = _grid_text_get,
-       .content_get = _grid_content_get
+       struct grid_data *gdata;
 };
 
 static bool _update_playing_info(void *data, Evas_Object *base)
@@ -268,85 +198,27 @@ static void _recent_item_selected(struct _priv *priv, app_media *am)
        viewmgr_push_view(VIEW_MPLAYER);
 }
 
-static void _item_selected(struct _priv *priv, app_media *am)
-{
-       struct view_update_data vdata;
-
-       vdata.list = mediadata_get_medialist(priv->md);
-       vdata.index = util_get_media_index(vdata.list, am);
-
-       viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata);
-       viewmgr_push_view(VIEW_MPLAYER);
-}
-
 static void _playing_selected_cb(void *data, Evas_Object *obj)
 {
-       struct _priv *priv;
-
-       if (!data || !obj)
-               return;
-
-       priv = data;
-
-       _item_selected(priv, priv->playing_info);
-}
-
-static void _grid_selected_cb(void *data, Elm_Object_Item *it)
-{
-       app_media *am;
-       struct _priv *priv;
-
-       if (!data || !it) {
-               _ERR("invalid argument");
-               return;
-       }
-
-       priv = data;
-
-       am = elm_object_item_data_get(it);
-       if (!am) {
-               _ERR("failed to get app media");
-               return;
-       }
-
-       _item_selected(priv, am);
-}
-
-static void _grid_key_down_cb(void *data, Elm_Object_Item *it,
-                       Evas_Event_Key_Down *ev)
-{
-       app_media *am;
        struct view_update_data vdata;
        struct _priv *priv;
 
-       if (!data || !ev) {
-               _ERR("invalid argument");
+       if (!data || !obj)
                return;
-       }
 
        priv = data;
 
-       if (!strcmp(ev->keyname, KEY_MENU) ||
-               !strcmp(ev->keyname, KEY_MENU_REMOTE)) {
-               am = elm_object_item_data_get(it);
-               if (!am) {
-                       _ERR("failed to get app media");
-                       return;
-               }
-
-               vdata.list = mediadata_get_medialist(priv->md);
-               vdata.index = util_get_media_index(vdata.list, am);
+       vdata.list = mediadata_get_medialist(priv->md);
+       vdata.index = util_get_media_index(vdata.list, priv->playing_info);
 
-               viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
-               viewmgr_show_view(VIEW_ACTION_MENU);
-       }
+       viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata);
+       viewmgr_push_view(VIEW_MPLAYER);
 }
 
 static struct listmgr_data *_create_listmgr_data(struct _priv *priv)
 {
        struct listmgr_data *data;
-       struct play_info_ops *pops;
-       struct grid_ops *gops;
+       struct play_info_data *pdata;
 
        data = calloc(1, sizeof(*data));
        if (!data)
@@ -355,36 +227,20 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv)
        data->menu_btn = priv->menu_btn;
        data->view_btn = priv->view_btn;
 
-       data->grid_item_x = GRID_ITEM_X;
-       data->grid_item_y = GRID_ITEM_Y;
-       data->grid_num_item = GRID_NUM_ITEM;
-       data->box_padding = BOX_PADDING;
-
-       pops = calloc(1, sizeof(*pops));
-       if (!pops)
+       pdata = calloc(1, sizeof(*pdata));
+       if (!pdata)
                goto err2;
 
-       pops->draw = _draw_playing_info;
-       pops->update = _update_playing_info;
-       pops->selected_cb = _playing_selected_cb;
-       pops->ops_data = priv;
-
-       gops = calloc(1, sizeof(*gops));
-       if (!gops)
-               goto err3;
+       pdata->draw = _draw_playing_info;
+       pdata->update = _update_playing_info;
+       pdata->selected_cb = _playing_selected_cb;
+       pdata->cb_data = priv;
 
-       gops->gclass = &_gclass;
-       gops->key_down_cb = _grid_key_down_cb;
-       gops->selected_cb = _grid_selected_cb;
-       gops->ops_data = priv;
-
-       data->pops = pops;
-       data->gops = gops;
+       data->pdata = pdata;
+       data->grid_cb_data = priv->md;
 
        return data;
 
-err3:
-       free(pops);
 err2:
        free(data);
 err:
@@ -417,14 +273,14 @@ static void _update_content_list(struct _priv *priv)
                return;
        }
 
-       list = mediadata_get_list(priv->md, E_LIST_NAME);
+       list = priv->gdata->get_item_list(priv->md);
        if (!list) {
                elm_object_part_text_set(priv->layout,
                                PART_NOCONTENT, TEXT_NOCONTENT);
                return;
        }
 
-       if (!listmgr_update_content_list(priv->listmgr, list))
+       if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata))
                _ERR("failed to update list area");
 
        priv->media_list = list;
@@ -512,9 +368,6 @@ static bool _create(layoutmgr *lmgr, void *data)
                return false;
        }
 
-       priv->menu_btn = ld->top;
-       priv->view_btn = ld->bottom;
-
        base = layoutmgr_get_base(lmgr);
        if (!base) {
                _ERR("failed to get base object");
@@ -532,37 +385,41 @@ static bool _create(layoutmgr *lmgr, void *data)
                goto err2;
        }
 
+       md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_NAME);
+       if (!md) {
+               _ERR("failed to create mediadata");
+               goto err2;
+       }
+
+       priv->base = base;
+       priv->layout = layout;
+       priv->menu_btn = ld->top;
+       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) {
                _ERR("failed to create listmgr data");
-               goto err2;
+               goto err3;
        }
 
        listmgr = listmgr_create(layout, (void *)ldata);
        if (!listmgr) {
                _ERR("failed to create listmgr");
+               free(ldata);
                goto err3;
        }
 
-       md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_NAME);
-       if (!md) {
-               _ERR("failed to create mediadata");
-               listmgr_destroy(listmgr);
-               goto err3;
-       }
-
-       priv->base = base;
-       priv->layout = layout;
-       priv->lmgr = lmgr;
-       priv->listmgr = listmgr;
        priv->ldata = ldata;
-       priv->md = md;
+       priv->listmgr = listmgr;
 
        layoutmgr_set_layout_data(lmgr, LAYOUT_MUSIC, priv);
 
        if (!listmgr_draw_list_area(listmgr)) {
                _ERR("failed to draw list area");
-               mediadata_destroy(md);
+               free(ldata);
                listmgr_destroy(listmgr);
                goto err3;
        }
@@ -570,7 +427,7 @@ static bool _create(layoutmgr *lmgr, void *data)
        return true;
 
 err3:
-       free(ldata);
+       mediadata_destroy(md);
 err2:
        evas_object_del(layout);
 err:
@@ -593,7 +450,6 @@ static void _destroy(void *layout_data)
        mediadata_destroy(priv->md);
 
        listmgr_destroy(priv->listmgr);
-       free(priv->ldata->gops);
        free(priv->ldata);
 
        evas_object_del(priv->layout);
index 2f0cda0..48b625b 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "define.h"
 #include "data/mediadata.h"
+#include "grid/grid.h"
 #include "util/listmgr.h"
 #include "util/util.h"
 
@@ -111,7 +112,7 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                        Evas_Event_Key_Down *ev)
 {
        struct listmgr *lmgr;
-       struct grid_ops *gops;
+       struct grid_data *gdata;
 
        if (!data || !obj || !ev)
                return;
@@ -125,9 +126,9 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                        !strcmp(ev->keyname, KEY_BACK_REMOTE))
                        elm_object_focus_next(obj, ELM_FOCUS_UP);
                else {
-                       gops = lmgr->data->gops;
-                       if (gops->key_down_cb)
-                               gops->key_down_cb(gops->ops_data,
+                       gdata = lmgr->data->gdata;
+                       if (gdata->key_down_cb)
+                               gdata->key_down_cb(lmgr->data->grid_cb_data,
                                                        lmgr->focused_it, ev);
                }
 
@@ -235,7 +236,7 @@ static void _focused_cb(int id, void *data, Evas_Object *obj,
 static void _grid_selected(void *data)
 {
        struct listmgr *lmgr;
-       struct grid_ops *gops;
+       struct grid_data *gdata;
 
        if (!data) {
                _ERR("invalid argument");
@@ -243,11 +244,10 @@ static void _grid_selected(void *data)
        }
 
        lmgr = data;
+       gdata = lmgr->data->gdata;
 
-       gops = lmgr->data->gops;
-
-       if (gops->selected_cb)
-               gops->selected_cb(gops->ops_data, lmgr->selected_it);
+       if (gdata->selected_cb)
+               gdata->selected_cb(lmgr->data->grid_cb_data, lmgr->selected_it);
 }
 
 static void _grid_selected_cb(int id, void *data, Evas_Object *obj,
@@ -269,16 +269,16 @@ static void _play_info_selected_cb(void *data, Evas_Object *obj,
                        const char *emission, const char *source)
 {
        struct listmgr *lmgr;
-       struct play_info_ops *pops;
+       struct play_info_data *pdata;
 
        if (!data || !obj)
                return;
 
        lmgr = data;
-       pops = lmgr->data->pops;
+       pdata = lmgr->data->pdata;
 
-       if (pops->selected_cb)
-               pops->selected_cb(pops->ops_data, obj);
+       if (pdata->selected_cb)
+               pdata->selected_cb(pdata->cb_data, obj);
 }
 
 static input_handler _grid_handler = {
@@ -330,7 +330,7 @@ static int _get_grid_width(int count, int num_item, int item_x)
 static bool _draw_play_info(struct listmgr *lmgr)
 {
        Evas_Object *ly, *index, *content;
-       struct play_info_ops *pops;
+       struct play_info_data *pdata;
 
        ly = elm_layout_add(lmgr->box);
        if (!ly) {
@@ -340,9 +340,9 @@ static bool _draw_play_info(struct listmgr *lmgr)
 
        elm_layout_file_set(ly, EDJEFILE, GRP_LIST_ITEM);
 
-       pops = lmgr->data->pops;
+       pdata = lmgr->data->pdata;
 
-       if (!pops->draw(pops->ops_data, ly)) {
+       if (!pdata->draw(pdata->cb_data, ly)) {
                _ERR("failed to draw play info item");
                evas_object_del(ly);
                return false;
@@ -397,31 +397,32 @@ static Evas_Object *_add_list_item_grid(struct listmgr *lmgr,
                        Evas_Object *base, struct group_info *gi)
 {
        Evas_Object *grid;
-       struct listmgr_data *data;
+       struct grid_data *gdata;
        int width;
 
-       data = lmgr->data;
+       gdata = lmgr->data->gdata;
 
-       grid = util_add_gengrid(base, data->grid_item_x,
-                               data->grid_item_y, EINA_TRUE);
+       grid = util_add_gengrid(base, gdata->item_x,
+                               gdata->item_y, EINA_TRUE);
        if (!grid) {
                _ERR("failed to add gengrid object");
                return NULL;
        }
 
-       if (!gridmgr_add_grid(lmgr->gmgr, gi->name, grid, data->gops->gclass)) {
+       if (!gridmgr_add_grid(lmgr->gmgr, gi->name, grid, gdata->gclass)) {
                _ERR("failed to add grid");
                evas_object_del(grid);
                return NULL;
        }
 
-       width = _get_grid_width(eina_list_count(gi->list), data->grid_num_item,
-                               data->grid_item_x);
+       width = _get_grid_width(eina_list_count(gi->list), gdata->item_num,
+                               gdata->item_x);
 
        evas_object_size_hint_min_set(grid, width,
-                               data->grid_num_item * data->grid_item_y);
+                               gdata->item_num * gdata->item_y);
 
-       elm_object_focus_next_object_set(grid, data->view_btn, ELM_FOCUS_DOWN);
+       elm_object_focus_next_object_set(grid, lmgr->data->view_btn,
+                               ELM_FOCUS_DOWN);
 
        inputmgr_add_callback(grid, LISTMGR_GRID, &_grid_handler, lmgr);
 
@@ -629,17 +630,25 @@ bool listmgr_update_content_item(struct listmgr *lmgr)
        return true;
 }
 
-bool listmgr_update_content_list(struct listmgr *lmgr, Eina_List *list)
+bool listmgr_update_content_list(struct listmgr *lmgr, Eina_List *list,
+                       struct grid_data *gdata)
 {
        Evas_Object *ly, *btn, *grid;
        Eina_List *l;
        struct group_info *gi;
 
-       if (!lmgr) {
+       if (!lmgr || !gdata) {
                _ERR("invalid argument");
                return false;
        }
 
+       lmgr->data->gdata = gdata;
+
+       elm_scroller_step_size_set(lmgr->scr, SCROLLER_STEP_SIZE(
+                               gdata->grid_padding + gdata->item_x), 0);
+
+       elm_box_padding_set(lmgr->box, gdata->grid_padding, 0);
+
        ly = NULL;
        EINA_LIST_FOREACH(list, l, gi) {
                ly = _draw_list_item(lmgr, gi);
@@ -673,7 +682,7 @@ bool listmgr_update_content_list(struct listmgr *lmgr, Eina_List *list)
 
 bool listmgr_update_play_info(struct listmgr *lmgr, app_media_info *info)
 {
-       struct play_info_ops *pops;
+       struct play_info_data *pdata;
 
        if (!lmgr) {
                _ERR("invalid argument");
@@ -692,9 +701,9 @@ bool listmgr_update_play_info(struct listmgr *lmgr, app_media_info *info)
                return true;
        }
 
-       pops = lmgr->data->pops;
+       pdata = lmgr->data->pdata;
 
-       if (!pops->update(pops->ops_data, lmgr->play_info)) {
+       if (!pdata->update(pdata->cb_data, lmgr->play_info)) {
                _ERR("failed to update play info");
                return false;
        }
@@ -729,9 +738,6 @@ bool listmgr_draw_list_area(struct listmgr *lmgr)
                return false;
        }
 
-       elm_scroller_step_size_set(scr, SCROLLER_STEP_SIZE(
-                               data->box_padding + data->grid_item_x), 0);
-
        inputmgr_add_callback(scr, LISTMGR_SCROLLER, &_handler, lmgr);
 
        box = util_add_box(scr, EINA_TRUE);
@@ -741,8 +747,6 @@ bool listmgr_draw_list_area(struct listmgr *lmgr)
                return false;
        }
 
-       elm_box_padding_set(box, data->box_padding, 0);
-
        evas_object_show(box);
        elm_object_content_set(scr, box);
 
@@ -751,7 +755,7 @@ bool listmgr_draw_list_area(struct listmgr *lmgr)
        lmgr->scr = scr;
        lmgr->box = box;
 
-       if (data->pops) {
+       if (data->pdata) {
                if (!_draw_play_info(lmgr)) {
                        _ERR("failed to draw play info");
                        evas_object_del(scr);