detail: modify content info 56/49156/1
authorJehun Lim <jehun.lim@samsung.com>
Wed, 7 Oct 2015 09:39:22 +0000 (18:39 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Wed, 7 Oct 2015 09:39:22 +0000 (18:39 +0900)
Change-Id: I902ab2e874bc5ceb595d1b66fa855be0c59eaea3
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
include/data/albumdata.h
src/data/albumdata.c
src/view/detail.c

index 6c39494..525e6d9 100644 (file)
@@ -35,6 +35,7 @@ struct album_info {
        char *name;
        char *artist;
        char *album_art;
+       int media_count;
 };
 
 struct data_ops *albumdata_get_ops(void);
index 6f62715..a0497c5 100644 (file)
@@ -198,13 +198,13 @@ static void _destroy_album_list(Eina_List *list)
 
 static bool _get_each_media_info(media_info_h media_h, void *data)
 {
-       Eina_List **list;
        app_media *am;
+       struct albumdata *ad;
 
        if (!data)
                return false;
 
-       list = data;
+       ad = data;
 
        am = app_media_create(media_h);
        if (!am) {
@@ -212,20 +212,21 @@ static bool _get_each_media_info(media_info_h media_h, void *data)
                return false;
        }
 
-       *list = eina_list_append(*list, am);
+       ad->media_list = eina_list_append(ad->media_list, am);
 
        return true;
 }
 
 static bool _get_each_album_info(media_album_h album, void *data)
 {
-       Eina_List **list;
+       filter_h filter;
+       struct albumdata *ad;
        struct album_info *ai;
 
        if (!data)
                return false;
 
-       list = data;
+       ad = data;
 
        ai = calloc(1, sizeof(*ai));
        if (!ai) {
@@ -233,37 +234,52 @@ static bool _get_each_album_info(media_album_h album, void *data)
                return false;
        }
 
+       if (!_create_filter(ad, &filter, NULL, E_FILTER_ALBUM)) {
+               _ERR("failed to create filter");
+               free(ai);
+               return false;
+       }
+
        if (media_album_get_album_id(album, &(ai->id))
                != MEDIA_CONTENT_ERROR_NONE) {
                _ERR("failed to fetch album id");
-               free(ai);
-               return false;
+               goto err;
        }
 
        if (media_album_get_name(album, &(ai->name))
                != MEDIA_CONTENT_ERROR_NONE) {
                _ERR("failed to fetch album name");
-               free(ai);
-               return false;
+               goto err;
        }
 
        if (media_album_get_artist(album, &(ai->artist))
                != MEDIA_CONTENT_ERROR_NONE) {
                _ERR("failed to fetch album artist");
-               free(ai);
-               return false;
+               goto err;
        }
 
        if (media_album_get_album_art(album, &(ai->album_art))
                != MEDIA_CONTENT_ERROR_NONE) {
                _ERR("failed to fetch album art");
-               free(ai);
-               return false;
+               goto err;
        }
 
-       *list = eina_list_append(*list, ai);
+       if (media_album_get_media_count_from_db(ai->id, filter,
+               &(ai->media_count)) != MEDIA_CONTENT_ERROR_NONE) {
+               _ERR("failed to get album media count");
+               goto err;
+       }
+
+       ad->album_list = eina_list_append(ad->album_list, ai);
+
+       media_filter_destroy(filter);
 
        return true;
+
+err:
+       media_filter_destroy(filter);
+       free(ai);
+       return false;
 }
 
 static bool _get_each_group_info(const char *group_name, void *data)
@@ -289,7 +305,7 @@ static bool _get_each_group_info(const char *group_name, void *data)
        media_filter_set_offset(filter, 0, 1);
 
        ret = media_album_foreach_album_from_db(filter,
-                               _get_each_album_info, &ad->album_list);
+                               _get_each_album_info, ad);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
                _ERR("failed to get album info");
                media_filter_destroy(filter);
@@ -319,7 +335,7 @@ static bool _get_media_list(struct albumdata *ad, int album_id)
        }
 
        ret = media_album_foreach_media_from_db(album_id, filter,
-                               _get_each_media_info, &ad->media_list);
+                               _get_each_media_info, ad);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
                _ERR("failed to get media info");
                _destroy_media_list(ad->media_list);
@@ -352,7 +368,7 @@ static bool _get_name_list(struct albumdata *ad, const char *cond)
        }
 
        ret = media_album_foreach_album_from_db(filter,
-                               _get_each_album_info, &ad->album_list);
+                               _get_each_album_info, ad);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
                _ERR("failed to get album info");
                _destroy_album_list(ad->album_list);
index 784d0cf..a182fb0 100644 (file)
@@ -43,8 +43,9 @@ static Evas_Object *_album_content_get(void *data, Evas_Object *obj,
 
 static void _get_movie_info(struct _priv *priv, const char *title);
 static void _get_gallery_info(struct _priv *priv, const char *title);
-static void _get_song_info(struct _priv *priv, const char *title);
 static void _get_album_info(struct _priv *priv, const char *title);
+static void _get_artist_info(struct _priv *priv, const char *title);
+static void _get_genre_info(struct _priv *priv, const char *title);
 
 static void _album_selected(void *data);
 
@@ -100,7 +101,7 @@ static struct _view_info view_info[E_DETAIL_MAX] = {
                .grid_item_y = MUSIC_SONG_ITEM_Y,
                .get_grid_text = _grid_text_get,
                .get_grid_content = _grid_content_get,
-               .get_content_info = _get_song_info,
+               .get_content_info = _get_album_info,
                .detail_update = EINA_FALSE,
                .app_contents_type = CONTENTS_MUSIC,
        },
@@ -110,7 +111,7 @@ static struct _view_info view_info[E_DETAIL_MAX] = {
                .grid_item_y = MUSIC_ALBUM_ITEM_Y,
                .get_grid_text = _album_text_get,
                .get_grid_content = _album_content_get,
-               .get_content_info = _get_album_info,
+               .get_content_info = _get_artist_info,
                .selected = _album_selected,
                .detail_update = EINA_TRUE,
                .app_contents_type = CONTENTS_MUSIC,
@@ -121,7 +122,7 @@ static struct _view_info view_info[E_DETAIL_MAX] = {
                .grid_item_y = MUSIC_SONG_ITEM_Y,
                .get_grid_text = _grid_text_get,
                .get_grid_content = _grid_content_get,
-               .get_content_info = _get_song_info,
+               .get_content_info = _get_genre_info,
                .detail_update = EINA_FALSE,
                .app_contents_type = CONTENTS_MUSIC,
        },
@@ -674,7 +675,7 @@ static void _get_gallery_info(struct _priv *priv, const char *title)
        elm_object_part_text_set(priv->base, PART_DETAIL_CONTENT_INFO, buf);
 }
 
-static void _get_song_info(struct _priv *priv, const char *title)
+static void _get_album_info(struct _priv *priv, const char *title)
 {
        app_media *am;
        app_media_info *mi;
@@ -682,31 +683,29 @@ static void _get_song_info(struct _priv *priv, const char *title)
 
        elm_object_part_text_set(priv->base, PART_DETAIL_TITLE, title);
 
-       if (priv->view_type == E_DETAIL_MUSIC_ALBUM) {
-               am = eina_list_nth(priv->media_list, 0);
-               mi = app_media_get_info(am);
+       am = eina_list_nth(priv->media_list, 0);
+       mi = app_media_get_info(am);
 
-               if (mi && mi->thumbnail_path) {
-                       elm_image_file_set(priv->thumbnail,
-                                               mi->thumbnail_path, NULL);
-                       elm_image_aspect_fixed_set(priv->thumbnail, EINA_FALSE);
+       if (mi && mi->thumbnail_path) {
+               elm_image_file_set(priv->thumbnail,
+                                       mi->thumbnail_path, NULL);
+               elm_image_aspect_fixed_set(priv->thumbnail, EINA_FALSE);
 
-                       elm_object_signal_emit(priv->base, SIG_SHOW_THUMBNAIL,
-                                               SIG_SOURCE_SRC);
-               }
-       } else {
-               elm_object_signal_emit(priv->base, SIG_HIDE_THUMBNAIL,
+               elm_object_signal_emit(priv->base, SIG_SHOW_THUMBNAIL,
                                        SIG_SOURCE_SRC);
        }
 
-       snprintf(buf, sizeof(buf), "%d songs",
+       snprintf(buf, sizeof(buf), "%s | %d songs", mi->audio->artist,
                                eina_list_count(priv->media_list));
 
        elm_object_part_text_set(priv->base, PART_DETAIL_CONTENT_INFO, buf);
 }
 
-static void _get_album_info(struct _priv *priv, const char *title)
+static void _get_artist_info(struct _priv *priv, const char *title)
 {
+       Eina_List *l;
+       struct album_info *ai;
+       int cnt;
        char buf[64];
 
        elm_object_part_text_set(priv->base, PART_DETAIL_TITLE, title);
@@ -714,7 +713,26 @@ static void _get_album_info(struct _priv *priv, const char *title)
        elm_object_signal_emit(priv->base,
                                SIG_HIDE_THUMBNAIL, SIG_SOURCE_SRC);
 
-       snprintf(buf, sizeof(buf), "%d albums",
+       cnt = 0;
+       EINA_LIST_FOREACH(priv->media_list, l, ai)
+               cnt += ai->media_count;
+
+       snprintf(buf, sizeof(buf), "%d albums, %d songs",
+                               eina_list_count(priv->media_list), cnt);
+
+       elm_object_part_text_set(priv->base, PART_DETAIL_CONTENT_INFO, buf);
+}
+
+static void _get_genre_info(struct _priv *priv, const char *title)
+{
+       char buf[64];
+
+       elm_object_part_text_set(priv->base, PART_DETAIL_TITLE, title);
+
+       elm_object_signal_emit(priv->base, SIG_HIDE_THUMBNAIL,
+                                       SIG_SOURCE_SRC);
+
+       snprintf(buf, sizeof(buf), "%d songs",
                                eina_list_count(priv->media_list));
 
        elm_object_part_text_set(priv->base, PART_DETAIL_CONTENT_INFO, buf);