+
+ struct listmgr *listmgr;
+ struct listmgr_data *ldata;
+
+ 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;
+
+ 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);
+ }
+
+ return image;
+}
+
+static struct grid_class _gclass = {
+ .item_style = STYLE_GRID_SONG_ITEM,
+ .text_get = _grid_text_get,
+ .content_get = _grid_content_get