movie: update recently watched item 14/44314/1
authorJehun Lim <jehun.lim@samsung.com>
Tue, 21 Jul 2015 01:55:36 +0000 (10:55 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Tue, 21 Jul 2015 01:59:06 +0000 (10:59 +0900)
Change-Id: I3f45a4d77bbbdcc9503fc57cc7484bacd21653fc
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
CMakeLists.txt
include/util/util.h
packaging/org.tizen.mediahub.spec
res/edc/widgets/button.edc
src/layout/movie.c
src/util/util.c

index 49b3cad..e0f0e99 100644 (file)
@@ -18,6 +18,7 @@ PROJECT("mediahub" C)
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(PKGS REQUIRED
+               glib-2.0
                elementary
                capi-appfw-application
                capi-media-player
index dd4bbb7..3ee45ae 100644 (file)
@@ -17,6 +17,9 @@
 #ifndef __AIR_MEDIAHUB_UTIL_H__
 #define __AIR_MEDIAHUB_UTIL_H__
 
+#include <media_content.h>
+#include <app_media.h>
+
 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__ */
index 969283d..89f74f0 100644 (file)
@@ -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)
index 0b66c7a..e51d82f 100644 (file)
@@ -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;
                                }
index 20f623e..a9df8fc 100644 (file)
  * limitations under the License.
  */
 
+#include <glib.h>
 #include <Elementary.h>
 #include <media_content.h>
 #include <app_debug.h>
+#include <app_contents.h>
 #include <app_media.h>
 #include <gridmgr.h>
 #include <layoutmgr.h>
@@ -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;
index 8446b7a..28f6f0d 100644 (file)
@@ -18,6 +18,8 @@
 #include <Elementary.h>
 #include <app_debug.h>
 
+#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;
+}