From b0521d740cd3960b587dd17509559e97de9fab0a Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Tue, 21 Jul 2015 10:55:36 +0900 Subject: [PATCH] movie: update recently watched item Change-Id: I3f45a4d77bbbdcc9503fc57cc7484bacd21653fc Signed-off-by: Jehun Lim --- CMakeLists.txt | 1 + include/util/util.h | 4 +++ packaging/org.tizen.mediahub.spec | 1 + res/edc/widgets/button.edc | 9 ++++--- src/layout/movie.c | 53 ++++++++++++++++++++++++++++++++++++++- src/util/util.c | 20 +++++++++++++++ 6 files changed, 83 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 49b3cad..e0f0e99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ PROJECT("mediahub" C) INCLUDE(FindPkgConfig) pkg_check_modules(PKGS REQUIRED + glib-2.0 elementary capi-appfw-application capi-media-player diff --git a/include/util/util.h b/include/util/util.h index dd4bbb7..3ee45ae 100644 --- a/include/util/util.h +++ b/include/util/util.h @@ -17,6 +17,9 @@ #ifndef __AIR_MEDIAHUB_UTIL_H__ #define __AIR_MEDIAHUB_UTIL_H__ +#include +#include + Evas_Object *util_add_box(Evas_Object *base); Evas_Object *util_add_gengrid(Evas_Object *base, int item_size_x, int item_size_y); @@ -28,5 +31,6 @@ void util_time_string(char *str, int size, unsigned int ms, bool full); void util_up_string(char *str); int util_get_media_index(Eina_List *list, void *info); +app_media *util_find_media_info(Eina_List *list, const char *id); #endif /* __AIR_MEDIAHUB_UTIL_H__ */ diff --git a/packaging/org.tizen.mediahub.spec b/packaging/org.tizen.mediahub.spec index 969283d..89f74f0 100644 --- a/packaging/org.tizen.mediahub.spec +++ b/packaging/org.tizen.mediahub.spec @@ -8,6 +8,7 @@ Source0: %{name}-%{version}.tar.gz Source1: %{name}.manifest BuildRequires: cmake +BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(elementary) BuildRequires: pkgconfig(capi-appfw-application) BuildRequires: pkgconfig(capi-media-player) diff --git a/res/edc/widgets/button.edc b/res/edc/widgets/button.edc index 0b66c7a..e51d82f 100644 --- a/res/edc/widgets/button.edc +++ b/res/edc/widgets/button.edc @@ -1050,6 +1050,7 @@ group { description { state: "default" 0.0; min: 740 614; + color: 0 0 0 0; } } part { @@ -1244,7 +1245,7 @@ group { rel2.to: "bg"; min: 0 198; align: 0.5 1.0; - color: COLOR_ITEM_BG; + color: COLOR_TEXT_BG; fixed: 0 1; map { perspective_on: 1; @@ -1266,7 +1267,7 @@ group { state: "default" 0.0; rel1.to: "defaultbg_text"; rel2.to: "defaultbg_text"; - color: COLOR_ITEM_BG; + color: COLOR_TEXT_BG; map { perspective_on: 1; perspective: "map"; @@ -1439,7 +1440,7 @@ group { relative: 0.0 1.0; } text { - font: TEXT_LIGHT; + font: FONT_LIGHT; size: 20; align: 0.0 0.5; } @@ -1470,7 +1471,7 @@ group { } rel2.to: "padding_text_time"; text { - font: TEXT_LIGHT; + font: FONT_LIGHT; size: 20; align: 1.0 0.5; } diff --git a/src/layout/movie.c b/src/layout/movie.c index 20f623e..a9df8fc 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -14,9 +14,11 @@ * limitations under the License. */ +#include #include #include #include +#include #include #include #include @@ -126,6 +128,7 @@ static bool _update_recent(void *data, Evas_Object *base) { Evas_Object *recent, *image; app_media_info *info; + struct tm tm; struct _priv *priv; char buf[32]; @@ -161,7 +164,8 @@ static bool _update_recent(void *data, Evas_Object *base) elm_object_part_text_set(recent, PART_RECENT_CONTENT_TITLE, info->title); - util_time_string(buf, sizeof(buf), info->played_time, false); + localtime_r(&info->played_time, &tm); + strftime(buf, sizeof(buf), "%Y.%m.%d", &tm); elm_object_part_text_set(recent, PART_RECENT_CONTENT_DATE, buf); progressbar_reset(priv->prog, info->video->position, @@ -362,6 +366,51 @@ static void _update_content_list(struct _priv *priv) priv->media_list = list; } +static void _update_recent_item(struct _priv *priv) +{ + GList *list; + app_media *am; + app_media_info *info; + struct recent_data *recent; + int r; + + list = NULL; + info = NULL; + + r = app_contents_get_recent_list(CONTENTS_MOVIE, 1, &list); + if (r != APP_CONTENTS_ERROR_NONE) { + _ERR("failed to get movie recent list"); + return; + } + + recent = (struct recent_data *)g_list_nth_data(list, 0); + + if (recent) { + am = util_find_media_info(mediadata_get_medialist(priv->md), + recent->id); + if (!am) { + _ERR("failed to get app media"); + g_list_free(list); + return; + } + + info = app_media_get_info(am); + if (!info) { + _ERR("failed to get app media info"); + g_list_free(list); + return; + } + + priv->recent_info = am; + } + + if (!listmgr_update_play_info(priv->listmgr, info)) + _ERR("failed to update recently watched item"); + + + g_list_free(list); +} + static bool _create(layoutmgr *lmgr, void *data) { struct listmgr *listmgr; @@ -523,6 +572,7 @@ static void _update(void *layout_data, int update_type, void *data) switch (update_type) { case UPDATE_CONTENT: _update_content_list(priv); + _update_recent_item(priv); break; case UPDATE_FOCUS: if (!data) { @@ -533,6 +583,7 @@ static void _update(void *layout_data, int update_type, void *data) index = *(int *)data; listmgr_update_focus_item(priv->listmgr, index); + _update_recent_item(priv); break; default: break; diff --git a/src/util/util.c b/src/util/util.c index 8446b7a..28f6f0d 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -18,6 +18,8 @@ #include #include +#include "util/util.h" + Evas_Object *util_add_box(Evas_Object *base) { Evas_Object *box; @@ -173,3 +175,21 @@ int util_get_media_index(Eina_List *list, void *data) return -1; } + +app_media *util_find_media_info(Eina_List *list, const char *id) +{ + Eina_List *l; + app_media *am; + app_media_info *info; + + EINA_LIST_FOREACH(list, l, am) { + info = app_media_get_info(am); + if (!info) + continue; + + if (!strcmp(info->media_id, id)) + return am; + } + + return NULL; +} -- 2.7.4