[Widget viewer evas] Add the preview image and loading text 11/66711/1
authormoon87.park <moon87.park@samsung.com>
Wed, 20 Apr 2016 11:23:47 +0000 (20:23 +0900)
committermoon87.park <moon87.park@samsung.com>
Wed, 20 Apr 2016 11:23:47 +0000 (20:23 +0900)
Change-Id: Ibcbe88ac288ffdcd8db9b54679fba18d889b05b2

packaging/libwidget_viewer.spec
widget_viewer_evas/res/CMakeLists.txt
widget_viewer_evas/res/widget_viewer_evas.edc
widget_viewer_evas/src/widget_viewer_evas.c

index 55fae13..108b942 100644 (file)
@@ -178,6 +178,7 @@ Header & package configuration of watch-control
 %{_datarootdir}/license/%{name}_evas
 %{TZ_SYS_SHARE}/widget_viewer_evas/res/edje/widget_viewer_evas.edj
 %{TZ_SYS_SHARE}/widget_viewer_evas/res/image/*.png
+%{TZ_SYS_SHARE}/widget_viewer_evas/res/locale/*/LC_MESSAGES/*
 
 
 %files -n %{name}_evas-devel
index 28f7733..26b87b9 100644 (file)
@@ -10,4 +10,4 @@ ADD_DEPENDENCIES(${PROJECT_NAME} widget_viewer_evas.edj)
 INSTALL(FILES widget_viewer_evas.edj DESTINATION ${EDJDIR})
 INSTALL(FILES unknown.png DESTINATION ${IMGDIR})
 
-#ADD_SUBDIRECTORY(po)
+ADD_SUBDIRECTORY(po)
index 8e8a157..3a0c3d2 100644 (file)
@@ -82,8 +82,8 @@ collections {
                                repeat_events: 1;
                                description {
                                        state: "default" 0.0;
-                                       rel1 { relative: 20/320 200/320; }
-                                       rel2 { relative: 300/320 320/320; }
+                                       rel1 { relative: 0.0 0.8; to: "preview"; }
+                                       rel2 { relative: 1.0 0.9; to: "preview"; }
                                        max: 280 -1;
                                        text {
                                                style: "overlay,text";
@@ -100,6 +100,13 @@ collections {
 
                programs {
                        program {
+                               name: "enable,preview";
+                               signal: "enable";
+                               source: "preview";
+                               action: STATE_SET "default" 0.0;
+                               target: "preview";
+                       }
+                       program {
                                name: "disable,preview";
                                signal: "disable";
                                source: "preview";
index 263e754..c87fe10 100644 (file)
 #endif
 
 #if !defined(WIDGET_VIEWER_EVAS_RESOURCE_EDJ)
-#define WIDGET_VIEWER_EVAS_RESOURCE_EDJ "/usr/share/widget_viewer_evas/res/edje/widget_viewer_evas.edj"
+#define WIDGET_VIEWER_EVAS_RESOURCE_EDJ "/opt/share/widget_viewer_evas/res/edje/widget_viewer_evas.edj"
 #endif
 
 #if !defined(WIDGET_VIEWER_EVAS_RESOURCE_OVERLAY_LOADING)
 #define WIDGET_VIEWER_EVAS_RESOURCE_OVERLAY_LOADING "overlay"
 #endif
 
+#if !defined(WIDGET_VIEWER_EVAS_RESOURCE_DEFAULT_IMG)
+#define WIDGET_VIEWER_EVAS_RESOURCE_DEFAULT_IMG "/opt/share/widget_viewer_evas/res/image/unknown.png"
+#endif
+
+
 #define DEFAULT_OVERLAY_COUNTER 2
 #define DEFAULT_OVERLAY_WAIT_TIME 1.0f
 #define RESEVED_AREA_FOR_GBAR_EFFECT 100
@@ -136,11 +141,13 @@ struct widget_info {
        char *widget_id;
        char *instance_id;
        char *content_info;
-       char *title;
+       const char *title;
        bundle *b;
        int pid;
        double period;
 
+       int disable_preview;
+       int disable_loading;
        int permanent_delete;
 
        Evas_Object *layout;
@@ -201,8 +208,15 @@ static void widget_added_cb(const char *instance_id, Evas_Object *obj, void *dat
         * After swallow this widget object to the layout,
         * It will be automatically resized by EDJE.
         */
+
        elm_object_part_content_set(info->layout, "pepper,widget", surface);
 
+       if (!info->disable_preview)
+               elm_object_signal_emit(info->layout, "disable", "preview");
+
+       if (!info->disable_loading)
+               elm_object_signal_emit(info->layout, "disable", "text");
+
        event_info.error = WIDGET_ERROR_NONE;
        event_info.widget_app_id = info->widget_id;
        event_info.event = WIDGET_EVENT_CREATED;
@@ -222,6 +236,12 @@ EAPI int widget_viewer_evas_init(Evas_Object *win)
                return WIDGET_ERROR_INVALID_PARAMETER;
        }
 
+       if (!bindtextdomain(PKGNAME, WIDGET_VIEWER_EVAS_RESOURCE_PO)) {
+               ErrPrint("bindtextdomain: %d\n", errno);
+       } else {
+               DbgPrint("%s - %s\n", PKGNAME, WIDGET_VIEWER_EVAS_RESOURCE_PO);
+       }
+
        s_info.win = win;
 
        _compositor_init(win); /* YOU MUST CALL _compositor_init() PRIOR TO widget_instance_init() */
@@ -305,6 +325,13 @@ EAPI int widget_viewer_evas_notify_orientation_of_viewer(int orientation)
 static void del_cb(void *data, Evas *e, Evas_Object *layout, void *event_info)
 {
        struct widget_info *info = data;
+       struct widget_evas_event_info evas_info;
+
+       evas_info.error = WIDGET_ERROR_NONE;
+       evas_info.widget_app_id = info->widget_id;
+       evas_info.event = WIDGET_EVENT_CREATED;
+
+       smart_callback_call(info->layout, WIDGET_SMART_SIGNAL_WIDGET_DELETED, &evas_info);
 
        if (info->widget_id && info->instance_id) {
                widget_instance_terminate(info->widget_id, info->instance_id);
@@ -326,8 +353,16 @@ 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;
+
+       if (!info || !layout) {
+               ErrPrint("Failed to load the info(%p) or layout(%p)\n", info, layout);
+               return;
+       }
 
        evas_object_geometry_get(layout, &x, &y, &w, &h);
 
@@ -336,6 +371,27 @@ static void resize_cb(void *data, Evas *e, Evas_Object *layout, void *event_info
                 * @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_path = WIDGET_VIEWER_EVAS_RESOURCE_DEFAULT_IMG;
+                       }
+
+                       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_loading) {
+                       elm_object_part_text_set(layout, "text", T_("IDS_ST_POP_LOADING_ING"));
+               }
+
                _compositor_set_handler(info->instance_id, widget_added_cb, NULL);
                info->pid = widget_instance_launch(info->widget_id, info->instance_id, info->b, w, h);
                if (info->pid < 0) {
@@ -412,6 +468,8 @@ static inline struct widget_info *create_info(Evas_Object *parent, const char *w
        evas_object_event_callback_add(info->layout, EVAS_CALLBACK_DEL, del_cb, info);
 
        info->permanent_delete = 0;
+       info->disable_preview = 0;
+       info->disable_loading = 0;
 
        return info;
 }
@@ -628,6 +686,7 @@ EAPI const char *widget_viewer_evas_get_title_string(Evas_Object *widget)
 {
        Evas_Object *pepper_obj = NULL;
        const char *title = NULL;
+       struct widget_info *info;
 
        if (!is_widget_feature_enabled())
                return NULL;
@@ -642,6 +701,12 @@ EAPI const char *widget_viewer_evas_get_title_string(Evas_Object *widget)
                return NULL;
        }
 
+       info = evas_object_data_get(widget, WIDGET_INFO_TAG);
+       if (!info) {
+               ErrPrint("widget(%p) don't have the info\n", widget);
+               return NULL;
+       }
+
        pepper_obj = elm_object_part_content_get(widget, "pepper,widget");
        if (!pepper_obj) {
                ErrPrint("widget object is invalid\n");
@@ -650,15 +715,12 @@ EAPI const char *widget_viewer_evas_get_title_string(Evas_Object *widget)
 
        title = pepper_efl_object_title_get(pepper_obj);
        if (!title) {
-               struct widget_info *info;
-               info = evas_object_data_get(widget, WIDGET_INFO_TAG);
-               if (!info) {
-                       ErrPrint("widget(%p) don't have the info\n", widget);
-                       return NULL;
-               }
-               title = info->widget_id;
+               //title = widget_service_get_app_id_of_setup_app(info->widget_id);
+               title = widget_service_get_name(info->widget_id, NULL);
        }
 
+       info->title = title;
+
        return title;
 }
 
@@ -795,6 +857,7 @@ EAPI void widget_viewer_evas_disable_preview(Evas_Object *widget)
                return;
        }
 
+       info->disable_preview = 1;
        elm_object_signal_emit(info->layout, "disable", "preview");
 
        return;
@@ -862,6 +925,7 @@ EAPI void widget_viewer_evas_disable_loading(Evas_Object *widget)
                return;
        }
 
+       info->disable_loading = 1;
        elm_object_signal_emit(info->layout, "disable", "text");
        return;
 }
@@ -895,6 +959,12 @@ 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)
+                       elm_object_signal_emit(info->layout, "enable", "preview");
+
+               if (info->disable_loading)
+                       elm_object_signal_emit(info->layout, "enable", "text");
+
                info->pid = widget_instance_launch(info->widget_id, info->instance_id, info->b, w, h);
                if (info->pid < 0) {
                        ErrPrint("Failed to launch an widget\n");