Remove preview image after finish loading 17/169117/2
authorhyunho <hhstark.kang@samsung.com>
Fri, 2 Feb 2018 10:13:04 +0000 (19:13 +0900)
committerhyunho <hhstark.kang@samsung.com>
Fri, 2 Feb 2018 11:20:16 +0000 (20:20 +0900)
Change-Id: Ic1352747134e5539497e11f0fb9dcd686e28a7e7
Signed-off-by: hyunho <hhstark.kang@samsung.com>
widget_viewer_evas/src/widget_viewer_evas.c

index 4aaedcfe66d947ecdac929d07a1af6c2e22ee340..d5e0df45cde87c6e6c63c80c39e3199bf3e358d1 100644 (file)
@@ -413,6 +413,7 @@ static void __screen_connector_toolkit_evas_added_cb(const char *appid, const ch
 {
        struct widget_info *info;
        int x, y, w, h;
+       Evas_Object *preview;
 
        if (!image) {
                ErrPrint("Invalid parameters");/* LCOV_EXCL_LINE */
@@ -437,8 +438,12 @@ static void __screen_connector_toolkit_evas_added_cb(const char *appid, const ch
        DbgPrint("widget geometry:%d %d %d %d", x, y, w, h);
        elm_object_part_content_set(info->layout, "tbm,widget", image);
 
-       if (!info->disable_preview)
+       if (!info->disable_preview) {
                elm_object_signal_emit(info->layout, "disable", "preview");
+               preview = elm_object_part_content_unset(info->layout, "preview");
+               if (preview)
+                       evas_object_del(preview);
+       }
 
        if (!info->disable_loading)
                elm_object_signal_emit(info->layout, "disable", "loading,text");
@@ -455,6 +460,43 @@ static void __screen_connector_toolkit_evas_added_cb(const char *appid, const ch
         */
 }
 
+static void __create_preview_image(Evas_Object *layout, char *widget_id)
+{
+       LOGI("create preview image");
+       Evas_Object *preview = NULL;
+       int x, y, w, h;
+       char *preview_path = NULL;
+       widget_size_type_e size_type;
+
+       if (layout == NULL) {
+               LOGE("layout is NULL");
+               return;
+       }
+
+       preview = elm_object_part_content_get(layout, "preview");
+       if (!preview)
+               evas_object_del(preview);
+
+       evas_object_geometry_get(layout, &x, &y, &w, &h);
+       widget_service_get_size_type(w, h, &size_type);
+       preview_path = widget_service_get_preview_image_path(widget_id, size_type);
+       if (preview_path == NULL) {
+               LOGE("can not get preview path");
+               return;
+       }
+
+       preview = elm_image_add(layout);
+       if (preview == NULL) {
+               LOGE("can not get preview image");
+               free(preview_path);
+               return;
+       }
+
+       elm_image_file_set(preview, preview_path, NULL);
+       elm_object_part_content_set(layout, "preview", preview);
+       free(preview_path);
+}
+
 static void __screen_connector_toolkit_evas_removed_cb(const char *appid, const char *instance_id, int pid,
        Evas_Object *image, void *data)
 {
@@ -473,8 +515,10 @@ static void __screen_connector_toolkit_evas_removed_cb(const char *appid, const
        DbgPrint("widget removed: %s", appid);
        elm_object_part_content_set(info->layout, "tbm,widget", NULL);
 
-       if (info->disable_preview)
+       if (info->disable_preview) {
+               __create_preview_image(info->layout, info->widget_id);
                elm_object_signal_emit(info->layout, "enable", "preview");
+       }
 
        if (info->disable_loading)
                elm_object_signal_emit(info->layout, "enable", "loading,text");
@@ -1018,11 +1062,8 @@ static void __del_cb(void *data, Evas *e, Evas_Object *layout, void *event_info)
 
 static void __resize_cb(void *data, Evas *e, Evas_Object *layout, void *event_info)
 {
-       Evas_Object *preview = NULL;
        struct widget_info *info = data;
-       char *preview_path = NULL;
        int x, y, w, h;
-       widget_size_type_e size_type;
        screen_connector_toolkit_evas_ops ops;
        struct pending_item *item;
 
@@ -1032,20 +1073,8 @@ static void __resize_cb(void *data, Evas *e, Evas_Object *layout, void *event_in
                 * @note
                 * Create a new instance in this case.
                 */
-
-               if (!info->disable_preview) {
-                       widget_service_get_size_type(w, h, &size_type);
-                       preview_path = widget_service_get_preview_image_path(info->widget_id, size_type);
-                       if (preview_path) {
-                               preview = elm_image_add(layout);
-                               if (preview) {
-                                       elm_image_file_set(preview, preview_path, NULL);
-                                       elm_object_part_content_set(layout, "preview", preview);
-                               }
-
-                               free(preview_path);
-                       }
-               }
+               if (!info->disable_preview)
+                       __create_preview_image(layout, info->widget_id);
 
                if (!info->disable_loading)
                        elm_object_part_text_set(layout, "text", T_("IDS_ST_POP_LOADING_ING"));
@@ -1132,8 +1161,10 @@ static void __move_cb(void *data, Evas *e, Evas_Object *layout, void *event_info
                if (info->pid < 0) {
                        info->restart = true;
                        DbgPrint("restart! %s", info->widget_id);
-                       if (!info->disable_preview)
+                       if (!info->disable_preview) {
+                               __create_preview_image(info->layout, info->widget_id);
                                elm_object_signal_emit(info->layout, "enable", "preview");
+                       }
 
                        if (!info->disable_loading) {
                                elm_object_part_text_set(info->layout, "text", T_("IDS_ST_POP_LOADING_ING"));
@@ -1898,8 +1929,10 @@ EAPI void widget_viewer_evas_activate_faulted_widget(Evas_Object *widget)
 
                evas_object_geometry_get(info->layout, NULL, NULL, &w, &h);
 
-               if (!info->disable_preview)
+               if (!info->disable_preview) {
+                       __create_preview_image(info->layout, info->widget_id);
                        elm_object_signal_emit(info->layout, "enable", "preview");
+               }
 
                if (!info->disable_loading) {
                        elm_object_part_text_set(info->layout, "text", T_("IDS_ST_POP_LOADING_ING"));