diff options
author | Jehun Lim <jehun.lim@samsung.com> | 2015-10-07 18:39:22 +0900 |
---|---|---|
committer | Jehun Lim <jehun.lim@samsung.com> | 2015-10-07 18:39:22 +0900 |
commit | d536efa3201fd06a2085ecc380f2412c450851ef (patch) | |
tree | 3e801badaf104d2270cadde3d2ae262ac8016c5f | |
parent | b3fe7f9facf2aee7803020f9c67e03605d6e8e43 (diff) | |
download | air_mediahub-d536efa3201fd06a2085ecc380f2412c450851ef.tar.gz air_mediahub-d536efa3201fd06a2085ecc380f2412c450851ef.tar.bz2 air_mediahub-d536efa3201fd06a2085ecc380f2412c450851ef.zip |
detail: modify content info
Change-Id: I902ab2e874bc5ceb595d1b66fa855be0c59eaea3
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
-rw-r--r-- | include/data/albumdata.h | 1 | ||||
-rw-r--r-- | src/data/albumdata.c | 50 | ||||
-rw-r--r-- | src/view/detail.c | 58 |
3 files changed, 72 insertions, 37 deletions
diff --git a/include/data/albumdata.h b/include/data/albumdata.h index 6c39494..525e6d9 100644 --- a/include/data/albumdata.h +++ b/include/data/albumdata.h @@ -35,6 +35,7 @@ struct album_info { char *name; char *artist; char *album_art; + int media_count; }; struct data_ops *albumdata_get_ops(void); diff --git a/src/data/albumdata.c b/src/data/albumdata.c index 6f62715..a0497c5 100644 --- a/src/data/albumdata.c +++ b/src/data/albumdata.c @@ -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); diff --git a/src/view/detail.c b/src/view/detail.c index 784d0cf..a182fb0 100644 --- a/src/view/detail.c +++ b/src/view/detail.c @@ -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); |