From: Minkyu Kang Date: Mon, 29 Jun 2015 10:37:12 +0000 (+0900) Subject: viewer: show image files to content area X-Git-Tag: accepted/tizen/tv/20150728.070555~115 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F02%2F42502%2F2;p=profile%2Ftv%2Fapps%2Fnative%2Fair_mediahub.git viewer: show image files to content area Change-Id: I757c6a5056ab848121f560f6a153e020fd69b058 Signed-off-by: Minkyu Kang --- diff --git a/src/view/viewer.c b/src/view/viewer.c index fedf010..96a05b6 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -56,6 +56,9 @@ struct _playlist { struct _priv { Evas_Object *win; Evas_Object *base; + Evas_Object *photo; + Evas_Object *photo_pre; + Evas_Object *favorite; struct _viewer viewer; struct _playlist playlist; @@ -238,6 +241,118 @@ static void _up_string(char *str) } } +static void _draw_thumbnail(struct _priv *priv, int id, app_media_info *mi) +{ + Evas_Object *obj; + + if (priv->photo_pre) { + evas_object_del(priv->photo_pre); + priv->photo_pre = NULL; + } + + if (priv->photo) { + evas_object_del(priv->photo); + priv->photo = NULL; + } + + obj = elm_image_add(priv->base); + if (!obj) { + _ERR("failed to adding image"); + return; + } + + elm_image_file_set(obj, mi->thumbnail_path, NULL); + elm_object_part_content_set(priv->base, PART_VIEWER_CONTENT, obj); + + priv->photo = obj; +} + +static void _image_loaded(void *data, Evas_Object *obj, void *ev) +{ + struct _priv *priv; + + if (!data || !obj) + return; + + priv = data; + + if (priv->photo != priv->photo_pre) { + if (priv->photo) + evas_object_del(priv->photo); + + priv->photo = obj; + } + + elm_object_part_content_set(priv->base, PART_VIEWER_CONTENT, obj); +} + +static void _image_loaded_detail(void *data, Evas_Object *obj, void *ev) +{ + struct _priv *priv; + + if (!data) + return; + + priv = data; + + priv->photo_pre = NULL; +} + +static void _load_image_file(struct _priv *priv, int id, app_media_info *mi) +{ + Evas_Object *obj; + int w, h; + int mode; + + if (id == VIEWER_MOVIE) { + elm_object_part_content_unset(priv->base, PART_VIEWER_CONTENT); + return; + } else if (id == VIEWER_VIDEO) { + _draw_thumbnail(priv, id, mi); + return; + } + + if (!mi->file_path) + return; + + if (priv->photo_pre) { + obj = priv->photo_pre; + } else { + obj = elm_photocam_add(priv->base); + if (!obj) { + _ERR("failed to adding photocam"); + return; + } + + evas_object_smart_callback_add(obj, "loaded", + _image_loaded, priv); + evas_object_smart_callback_add(obj, "loaded,detail", + _image_loaded_detail, priv); + + elm_object_focus_allow_set(obj, EINA_FALSE); + elm_scroller_policy_set(obj, + ELM_SCROLLER_POLICY_AUTO, + ELM_SCROLLER_POLICY_AUTO); + + /* + * set this photocam object to photo_pre (preloaded photo) + * On "loaded" callback, photo_pre object will pass to photo + * On "loaded,detail" callback, photo_pre object will set to NULL + */ + priv->photo_pre = obj; + } + + elm_photocam_file_set(obj, mi->file_path); + + elm_photocam_image_size_get(obj, &w, &h); + if (h > w) + mode = ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT; + else + mode = ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL; + + elm_photocam_zoom_mode_set(obj, mode); +} + static void _draw_title_bar(struct _priv *priv, int id, app_media_info *mi) { char buf[32] = {0,}; @@ -283,19 +398,11 @@ static void _draw_time_info(struct _priv *priv, int id, app_media_info *mi) static void _draw_favorite_icon(struct _priv *priv, int id, app_media_info *mi) { - Evas_Object *img; - if (!mi->favorite) return; - img = elm_image_add(priv->base); - if (!img) - return; - - elm_image_file_set(img, IMAGE_VIEWER_FAVORITE, NULL); - - evas_object_show(img); - elm_object_part_content_set(priv->base, PART_VIEWER_FAVORITE, img); + elm_object_part_content_set(priv->base, + PART_VIEWER_FAVORITE, priv->favorite); } static bool _viewer_show(struct _priv *priv, int cur, int foc) @@ -355,6 +462,8 @@ static bool _viewer_show(struct _priv *priv, int cur, int foc) } ctl->ops->focus(ctl->handle, loc, true); + _load_image_file(priv, id, mi); + _draw_title_bar(priv, id, mi); _draw_time_info(priv, id, mi); _draw_favorite_icon(priv, id, mi); @@ -451,6 +560,7 @@ static bool _viewer_next(struct _priv *priv) static bool _ui_init(struct _priv *priv) { + Evas_Object *obj; bool r; int i; @@ -460,6 +570,15 @@ static bool _ui_init(struct _priv *priv) goto err; } + obj = elm_image_add(priv->base); + if (!obj) { + _ERR("failed to adding image"); + goto err; + } + + elm_image_file_set(obj, IMAGE_VIEWER_FAVORITE, NULL); + priv->favorite = obj; + return true; err: