summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-10-07 18:39:22 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-10-07 18:39:22 +0900
commitd536efa3201fd06a2085ecc380f2412c450851ef (patch)
tree3e801badaf104d2270cadde3d2ae262ac8016c5f
parentb3fe7f9facf2aee7803020f9c67e03605d6e8e43 (diff)
downloadair_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.h1
-rw-r--r--src/data/albumdata.c50
-rw-r--r--src/view/detail.c58
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);