base: modify the method of updating content info 67/48967/1 accepted/tizen/tv/20151005.055316 submit/tizen/20151005.003307
authorJehun Lim <jehun.lim@samsung.com>
Fri, 2 Oct 2015 08:45:06 +0000 (17:45 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Fri, 2 Oct 2015 08:48:00 +0000 (17:48 +0900)
Change-Id: I302dd20f77fad03f22ff77f9207aa270c8431d79
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
include/grid/grid.h
src/data/mediadata.c
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

index 5c7855f..53b1de5 100644 (file)
@@ -51,6 +51,8 @@ struct grid_data {
        void *data;
        Eina_List *(*get_item_list)(struct datamgr *dmgr);
        void (*free_item_list)(struct datamgr *dmgr, Eina_List *list);
+       void (*get_item_info)(struct datamgr *dmgr, Eina_List *list,
+                               char *str, int size);
        void (*key_down_cb)(void *data, Elm_Object_Item *it,
                                Evas_Event_Key_Down *ev);
        void (*selected_cb)(void *data, Elm_Object_Item *it);
index 772fef5..c55572c 100644 (file)
@@ -645,6 +645,7 @@ static Eina_List *_get_group(void *handle, int type, void *data)
        struct group_info *gi;
        app_media *am;
        app_media_info *info;
+       int i;
 
        if (!handle) {
                _ERR("failed to get mediadata handle");
@@ -658,6 +659,9 @@ static Eina_List *_get_group(void *handle, int type, void *data)
 
        md = handle;
 
+       for (i = 0; i < E_FILE_MAX; i++)
+               md->media_count[i] = 0;
+
        md->media_list = _sort_list(md->media_list, type);
 
        gi = NULL;
index 2ea4cd5..a421756 100644 (file)
@@ -247,6 +247,41 @@ static void _free_place_list(struct datamgr *dmgr, Eina_List *list)
        }
 }
 
+static void _get_media_info(struct datamgr *dmgr, Eina_List *list, char *str,
+                       int size)
+{
+       int photo, video;
+
+       photo = dmgr->ops->get_count(dmgr->handle, E_FILE_PHOTO);
+       video = dmgr->ops->get_count(dmgr->handle, E_FILE_VIDEO);
+
+       if (photo < 0) {
+               _ERR("failed to get media count");
+               photo = 0;
+       }
+
+       if (video < 0) {
+               _ERR("failed to get media count");
+               video = 0;
+       }
+
+       snprintf(str, size, "%d Photos, %d Videos", photo, video);
+}
+
+static void _get_place_info(struct datamgr *dmgr, Eina_List *list, char *str,
+                       int size)
+{
+       Eina_List *l;
+       struct group_info *gi;
+       int cnt;
+
+       cnt = 0;
+       EINA_LIST_FOREACH(list, l, gi)
+               cnt += eina_list_count(gi->list);
+
+       snprintf(str, size, "%d Cities", cnt);
+}
+
 static void _key_down_cb(void *data, Elm_Object_Item *it,
                        Evas_Event_Key_Down *ev)
 {
@@ -352,6 +387,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_GALLERY_EVENT],
                .get_item_list = _get_event_list,
                .free_item_list = _free_media_list,
+               .get_item_info = _get_media_info,
                .key_down_cb = _key_down_cb,
                .selected_cb = _media_selected_cb
        },
@@ -363,6 +399,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_GALLERY_PLACE],
                .get_item_list = _get_place_list,
                .free_item_list = _free_place_list,
+               .get_item_info = _get_place_info,
                .selected_cb = _place_selected_cb
        },
        [E_GALLERY_VIDEO] = {
@@ -373,6 +410,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_GALLERY_EVENT],
                .get_item_list = _get_type_list,
                .free_item_list = _free_media_list,
+               .get_item_info = _get_media_info,
                .key_down_cb = _key_down_cb,
                .selected_cb = _media_selected_cb
        },
index 04f7e0a..6f5c9d3 100644 (file)
@@ -224,6 +224,32 @@ static void _free_group_list(struct datamgr *dmgr, Eina_List *list)
        }
 }
 
+static void _get_media_info(struct datamgr *dmgr, Eina_List *list,
+                       char *str, int size)
+{
+       int cnt;
+
+       cnt = dmgr->ops->get_count(dmgr->handle, E_FILE_VIDEO);
+       if (cnt < 0) {
+               _ERR("failed to get media count");
+               cnt = 0;
+       }
+
+       snprintf(str, size, "%d Movies", cnt);
+}
+
+static void _get_genre_info(struct datamgr *dmgr, Eina_List *list,
+                       char *str, int size)
+{
+       struct group_info *gi;
+       int cnt;
+
+       gi = eina_list_nth(list, 0);
+       cnt = eina_list_count(gi->list);
+
+       snprintf(str, size, "%d Genre", cnt);
+}
+
 static void _key_down_cb(void *data, Elm_Object_Item *it,
                        Evas_Event_Key_Down *ev)
 {
@@ -334,6 +360,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_MOVIE_NAME],
                .get_item_list = _get_name_list,
                .free_item_list = _free_media_list,
+               .get_item_info = _get_media_info,
                .key_down_cb = _key_down_cb,
                .selected_cb = _media_selected_cb
        },
@@ -345,6 +372,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_MOVIE_GENRE],
                .get_item_list = _get_genre_list,
                .free_item_list = _free_group_list,
+               .get_item_info = _get_genre_info,
                .selected_cb = _genre_selected_cb
        },
        [E_MOVIE_DATE] = {
@@ -354,7 +382,8 @@ static struct grid_data _gdata[] = {
                .grid_padding = MOVIE_NAME_GRID_PADDING,
                .gclass = &_gclass[E_MOVIE_DATE],
                .get_item_list = _get_date_list,
-               .free_item_list = _free_media_list
+               .free_item_list = _free_media_list,
+               .get_item_info = _get_media_info
        },
        /* Other view mode data will be added later */
 };
index 928478d..12bd7af 100644 (file)
@@ -291,6 +291,60 @@ static void _free_group_list(struct datamgr *dmgr, Eina_List *list)
        }
 }
 
+static void _get_media_info(struct datamgr *dmgr, Eina_List *list, char *str,
+                       int size)
+{
+       int cnt;
+
+       cnt = dmgr->ops->get_count(dmgr->handle, E_FILE_MUSIC);
+       if (cnt < 0) {
+               _ERR("failed to get media count");
+               cnt = 0;
+       }
+
+       snprintf(str, size, "%d Songs", cnt);
+}
+
+static void _get_album_info(struct datamgr *dmgr, Eina_List *list, char *str,
+                       int size)
+{
+       Eina_List *l;
+       struct group_info *gi;
+       int cnt;
+
+       cnt = 0;
+       EINA_LIST_FOREACH(list, l, gi)
+               cnt += eina_list_count(gi->list);
+
+       snprintf(str, size, "%d Albums", cnt);
+}
+
+static void _get_artist_info(struct datamgr *dmgr, Eina_List *list, char *str,
+                       int size)
+{
+       Eina_List *l;
+       struct group_info *gi;
+       int cnt;
+
+       cnt = 0;
+       EINA_LIST_FOREACH(list, l, gi)
+               cnt += eina_list_count(gi->list);
+
+       snprintf(str, size, "%d Artists", cnt);
+}
+
+static void _get_genre_info(struct datamgr *dmgr, Eina_List *list, char *str,
+                       int size)
+{
+       struct group_info *gi;
+       int cnt;
+
+       gi = eina_list_nth(list, 0);
+       cnt = eina_list_count(gi->list);
+
+       snprintf(str, size, "%d Genre", cnt);
+}
+
 static void _key_down_cb(void *data, Elm_Object_Item *it,
                        Evas_Event_Key_Down *ev)
 {
@@ -462,6 +516,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_MUSIC_SONG],
                .get_item_list = _get_song_list,
                .free_item_list = _free_item_list,
+               .get_item_info = _get_media_info,
                .key_down_cb = _key_down_cb,
                .selected_cb = _media_selected_cb,
        },
@@ -473,6 +528,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_MUSIC_ALBUM],
                .get_item_list = _get_album_list,
                .free_item_list = _free_item_list,
+               .get_item_info = _get_album_info,
                .selected_cb = _album_selected_cb,
        },
        [E_MUSIC_ARTIST] = {
@@ -483,6 +539,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_MUSIC_ARTIST],
                .get_item_list = _get_artist_list,
                .free_item_list = _free_item_list,
+               .get_item_info = _get_artist_info,
                .selected_cb = _artist_selected_cb,
        },
        [E_MUSIC_GENRE] = {
@@ -493,6 +550,7 @@ static struct grid_data _gdata[] = {
                .gclass = &_gclass[E_MUSIC_GENRE],
                .get_item_list = _get_genre_list,
                .free_item_list = _free_group_list,
+               .get_item_info = _get_genre_info,
                .selected_cb = _genre_selected_cb,
        },
        /* Other view mode data will be added later */
index 779de14..1f62e6b 100644 (file)
@@ -107,22 +107,13 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv)
 static void _update_content_info(struct _priv *priv)
 {
        struct datamgr *dmgr;
-       int photo, video;
        char buf[128];
 
        dmgr = priv->dmgr[E_DATA_MEDIA];
        if (!dmgr)
                return;
 
-       photo = dmgr->ops->get_count(dmgr->handle, E_FILE_PHOTO);
-       video = dmgr->ops->get_count(dmgr->handle, E_FILE_VIDEO);
-
-       if (photo < 0 || video < 0) {
-               _ERR("failed to get media count");
-               return;
-       }
-
-       snprintf(buf, sizeof(buf), "%d Photos, %d Videos", photo, video);
+       priv->gdata->get_item_info(dmgr, priv->media_list, buf, sizeof(buf));
 
        elm_object_part_text_set(priv->base, PART_BASE_CONTENT_INFO, buf);
 }
index 509fa12..6e44997 100644 (file)
@@ -317,20 +317,13 @@ err:
 static void _update_content_info(struct _priv *priv)
 {
        struct datamgr *dmgr;
-       int count;
        char buf[128];
 
        dmgr = priv->dmgr[E_DATA_MEDIA];
        if (!dmgr)
                return;
 
-       count = dmgr->ops->get_count(dmgr->handle, E_FILE_VIDEO);
-       if (count < 0) {
-               _ERR("failed to get media count");
-               return;
-       }
-
-       snprintf(buf, sizeof(buf), "%d Movies", count);
+       priv->gdata->get_item_info(dmgr, priv->media_list, buf, sizeof(buf));
 
        elm_object_part_text_set(priv->base, PART_BASE_CONTENT_INFO, buf);
 }
index cb9ec00..02695ef 100644 (file)
@@ -282,20 +282,13 @@ static struct datamgr *_get_datamgr(struct _priv *priv)
 static void _update_content_info(struct _priv *priv)
 {
        struct datamgr *dmgr;
-       int count;
        char buf[128];
 
        dmgr = _get_datamgr(priv);
        if (!dmgr)
                return;
 
-       count = dmgr->ops->get_count(dmgr->handle, E_FILE_MUSIC);
-       if (count < 0) {
-               _ERR("failed to get media count");
-               return;
-       }
-
-       snprintf(buf, sizeof(buf), "%d Songs", count);
+       priv->gdata->get_item_info(dmgr, priv->media_list, buf, sizeof(buf));
 
        elm_object_part_text_set(priv->base, PART_BASE_CONTENT_INFO, buf);
 }