summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-10-02 17:45:06 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-10-02 17:48:00 +0900
commit96b99ce28cfe7cd3ca3b6a6bf474a4e39a0af817 (patch)
treedf142b079c5a79df00aa4bee6ffd3c1f8791211c
parenta759a446c4093a7dc0eeaed907caae7f6fd7d781 (diff)
downloadair_mediahub-96b99ce28cfe7cd3ca3b6a6bf474a4e39a0af817.tar.gz
air_mediahub-96b99ce28cfe7cd3ca3b6a6bf474a4e39a0af817.tar.bz2
air_mediahub-96b99ce28cfe7cd3ca3b6a6bf474a4e39a0af817.zip
base: modify the method of updating content infosubmit/tizen/20151005.003307accepted/tizen/tv/20151005.055316
Change-Id: I302dd20f77fad03f22ff77f9207aa270c8431d79 Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
-rw-r--r--include/grid/grid.h2
-rw-r--r--src/data/mediadata.c4
-rw-r--r--src/grid/grid_gallery.c38
-rw-r--r--src/grid/grid_movie.c31
-rw-r--r--src/grid/grid_music.c58
-rw-r--r--src/layout/gallery.c11
-rw-r--r--src/layout/movie.c9
-rw-r--r--src/layout/music.c9
8 files changed, 135 insertions, 27 deletions
diff --git a/include/grid/grid.h b/include/grid/grid.h
index 5c7855f..53b1de5 100644
--- a/include/grid/grid.h
+++ b/include/grid/grid.h
@@ -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);
diff --git a/src/data/mediadata.c b/src/data/mediadata.c
index 772fef5..c55572c 100644
--- a/src/data/mediadata.c
+++ b/src/data/mediadata.c
@@ -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;
diff --git a/src/grid/grid_gallery.c b/src/grid/grid_gallery.c
index 2ea4cd5..a421756 100644
--- a/src/grid/grid_gallery.c
+++ b/src/grid/grid_gallery.c
@@ -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
},
diff --git a/src/grid/grid_movie.c b/src/grid/grid_movie.c
index 04f7e0a..6f5c9d3 100644
--- a/src/grid/grid_movie.c
+++ b/src/grid/grid_movie.c
@@ -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 */
};
diff --git a/src/grid/grid_music.c b/src/grid/grid_music.c
index 928478d..12bd7af 100644
--- a/src/grid/grid_music.c
+++ b/src/grid/grid_music.c
@@ -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 */
diff --git a/src/layout/gallery.c b/src/layout/gallery.c
index 779de14..1f62e6b 100644
--- a/src/layout/gallery.c
+++ b/src/layout/gallery.c
@@ -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);
}
diff --git a/src/layout/movie.c b/src/layout/movie.c
index 509fa12..6e44997 100644
--- a/src/layout/movie.c
+++ b/src/layout/movie.c
@@ -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);
}
diff --git a/src/layout/music.c b/src/layout/music.c
index cb9ec00..02695ef 100644
--- a/src/layout/music.c
+++ b/src/layout/music.c
@@ -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);
}