From ec6494accc1e7d13db7b6d3126a4bde23c929d7b Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Wed, 22 Jul 2015 14:46:39 +0900 Subject: [PATCH] base: add the total number of contents Change-Id: I147588b6ae3b8c5555f19ac27e4b2581e26d3224 Signed-off-by: Jehun Lim --- include/data/mediadata.h | 10 ++++++++++ include/layout/movie.h | 1 + include/view/base.h | 1 - res/edc/layout/movie.edc | 51 ++++++++++++++++++++++++++++++++++++++++++------ res/edc/view/base.edc | 18 ++--------------- src/data/mediadata.c | 19 ++++++++++++++++++ src/layout/gallery.c | 24 +++++++++++++++++++++-- src/layout/movie.c | 18 +++++++++++++++++ src/layout/music.c | 18 +++++++++++++++++ 9 files changed, 135 insertions(+), 25 deletions(-) diff --git a/include/data/mediadata.h b/include/data/mediadata.h index c9f15c8..3c9ba59 100644 --- a/include/data/mediadata.h +++ b/include/data/mediadata.h @@ -21,6 +21,15 @@ struct mediadata; +enum media_type { + E_MEDIA_PHOTO = 0, + E_MEDIA_VIDEO, + E_MEDIA_SOUND, + E_MEDIA_MUSIC, + E_MEDIA_OTHER, + E_MEDIA_MAX +}; + enum source_type { E_SOURCE_INTERNAL = 0, E_SOURCE_EXTERNAL, @@ -51,6 +60,7 @@ struct mediadata *mediadata_create(const char *media_type, void mediadata_destroy(struct mediadata *md); Eina_List *mediadata_get_medialist(struct mediadata *md); +int mediadata_get_media_count(struct mediadata *md, int media_type); Eina_List *mediadata_get_list(struct mediadata *md, int list_type); void mediadata_free_list(Eina_List *list); diff --git a/include/layout/movie.h b/include/layout/movie.h index 640ea4e..8d45163 100644 --- a/include/layout/movie.h +++ b/include/layout/movie.h @@ -27,6 +27,7 @@ /* part */ #define PART_CONTENT "part.content" #define PART_NOCONTENT "part.nocontent" +#define PART_CONTENT_INFO "part.content_info" #define PART_RECENT_CONTENT_THUMBNAIL "part.recent_content_thumbnail" #define PART_RECENT_CONTENT_TITLE "part.recent_content_title" #define PART_RECENT_CONTENT_DATE "part.recent_content_date" diff --git a/include/view/base.h b/include/view/base.h index 23422cb..c7f791a 100644 --- a/include/view/base.h +++ b/include/view/base.h @@ -28,7 +28,6 @@ #define PART_TITLE "part.title" #define PART_MENU_AREA "part.menu_area" #define PART_THUMBNAIL_AREA "part.thumbnail_area" -#define PART_BOTTOM_AREA "part.bottom_area" #define PART_ITEM_TITLE "part.item_title" #define PART_ITEM_CONTENT "part.item_content" diff --git a/res/edc/layout/movie.edc b/res/edc/layout/movie.edc index d029dd9..479d8ad 100644 --- a/res/edc/layout/movie.edc +++ b/res/edc/layout/movie.edc @@ -23,7 +23,6 @@ group { scale: 1; description { state: "default" 0.0; - min: 1920 704; visible: 0; } } @@ -36,11 +35,11 @@ group { rel1.to: "area"; rel2 { to: "area"; - relative: 0.0 0.0; + relative: 0.0 1.0; } min: 62 0; - align: 0.0 0.0; - fixed: 1 1; + align: 0.0 0.5; + fixed: 1 0; } } part { @@ -51,9 +50,12 @@ group { state: "default" 0.0; rel1 { to: "padding_thumbnail_area"; - relative: 1.0 1.0; + relative: 1.0 0.0; + } + rel2 { + to: "padding_content_info"; + relative: 1.0 0.0; } - rel2.to: "area"; } } part { @@ -72,5 +74,42 @@ group { color: COLOR_TEXT_NORMAL; } } + part { + name: "padding_content_info"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1.to: PART_CONTENT_INFO; + rel2 { + to: PART_CONTENT_INFO; + relative: 1.0 0.0; + } + min: 0 16; + align: 0.5 1.0; + fixed: 0 1; + } + } + part { + name: PART_CONTENT_INFO; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "padding_thumbnail_area"; + relative: 1.0 1.0; + } + text { + font: FONT_LIGHT; + size: 28; + align: 0.0 0.5; + } + min: 0 64; + align: 0.5 1.0; + color: COLOR_TEXT_INDEX; + fixed: 0 1; + } + } } } diff --git a/res/edc/view/base.edc b/res/edc/view/base.edc index 931ffda..f1d4bb8 100644 --- a/res/edc/view/base.edc +++ b/res/edc/view/base.edc @@ -133,25 +133,11 @@ group { relative: 0.0 1.0; } rel2.to: "padding_thumbnail_area"; - min: 0 704; + min: 0 784; align: 0.5 0.0; fixed: 0 1; } } - part { - name: PART_BOTTOM_AREA; - type: SWALLOW; - scale: 1; - description { - state: "default" 0.0; - rel1 { - to: PART_THUMBNAIL_AREA; - relative: 0.0 1.0; - } - rel2.to: PART_THUMBNAIL_AREA; - align: 0.5 0.0; - } - } } } @@ -164,7 +150,7 @@ group { scale: 1; description { state: "default" 0.0; - min: 0 703; + min: 0 704; fixed: 0 1; visible: 0; } diff --git a/src/data/mediadata.c b/src/data/mediadata.c index ffb85ab..cd2cb4e 100644 --- a/src/data/mediadata.c +++ b/src/data/mediadata.c @@ -43,6 +43,8 @@ enum _filter_type { struct mediadata { Eina_List *folder_list; Eina_List *media_list; + + int media_count[E_MEDIA_MAX]; }; struct _data { @@ -473,11 +475,28 @@ Eina_List *mediadata_get_list(struct mediadata *md, int list_type) } gi->list = eina_list_append(gi->list, am); + + md->media_count[info->media_type]++; } return list; } +int mediadata_get_media_count(struct mediadata *md, int media_type) +{ + if (!md) { + _ERR("failed to get mediadata"); + return -1; + } + + if (media_type < 0 || media_type >= E_MEDIA_MAX) { + _ERR("invalid argument"); + return -1; + } + + return md->media_count[media_type]; +} + void mediadata_free_list(Eina_List *list) { Eina_List *l; diff --git a/src/layout/gallery.c b/src/layout/gallery.c index b85ef88..eac45df 100644 --- a/src/layout/gallery.c +++ b/src/layout/gallery.c @@ -191,7 +191,25 @@ err: return NULL; } -static void _update_list_area(struct _priv *priv) +static void _update_content_info(struct _priv *priv) +{ + int photo, video; + char buf[128]; + + photo = mediadata_get_media_count(priv->md, E_MEDIA_PHOTO); + video = mediadata_get_media_count(priv->md, E_MEDIA_VIDEO); + + if (photo < 0 || video < 0) { + _ERR("failed to get media count"); + return; + } + + snprintf(buf, sizeof(buf), "%d Photos, %d Videos", photo, video); + + elm_object_part_text_set(priv->layout, PART_CONTENT_INFO, buf); +} + +static void _update_content_list(struct _priv *priv) { Eina_List *list; @@ -209,6 +227,8 @@ static void _update_list_area(struct _priv *priv) _ERR("failed to update list area"); priv->media_list = list; + + _update_content_info(priv); } static bool _create(layoutmgr *lmgr, void *data) @@ -369,7 +389,7 @@ static void _update(void *layout_data, int update_type, void *data) switch (update_type) { case UPDATE_CONTENT: - _update_list_area(priv); + _update_content_list(priv); break; case UPDATE_FOCUS: if (!data) { diff --git a/src/layout/movie.c b/src/layout/movie.c index f5a8561..3e92362 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -346,6 +346,22 @@ err: return NULL; } +static void _update_content_info(struct _priv *priv) +{ + int count; + char buf[128]; + + count = mediadata_get_media_count(priv->md, E_MEDIA_VIDEO); + if (count < 0) { + _ERR("failed to get media count"); + return; + } + + snprintf(buf, sizeof(buf), "%d Movies", count); + + elm_object_part_text_set(priv->layout, PART_CONTENT_INFO, buf); +} + static void _update_content_list(struct _priv *priv) { Eina_List *list; @@ -366,6 +382,8 @@ static void _update_content_list(struct _priv *priv) } priv->media_list = list; + + _update_content_info(priv); } static void _update_recent_item(struct _priv *priv) diff --git a/src/layout/music.c b/src/layout/music.c index 856f96b..2c8b373 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -320,6 +320,22 @@ err: return NULL; } +static void _update_content_info(struct _priv *priv) +{ + int count; + char buf[128]; + + count = mediadata_get_media_count(priv->md, E_MEDIA_MUSIC); + if (count < 0) { + _ERR("failed to get media count"); + return; + } + + snprintf(buf, sizeof(buf), "%d Songs", count); + + elm_object_part_text_set(priv->layout, PART_CONTENT_INFO, buf); +} + static void _update_content_list(struct _priv *priv) { Eina_List *list; @@ -338,6 +354,8 @@ static void _update_content_list(struct _priv *priv) _ERR("failed to update list area"); priv->media_list = list; + + _update_content_info(priv); } static void _update_playing_item(struct _priv *priv) -- 2.7.4