summaryrefslogtreecommitdiff
path: root/main/src/ug-image-viewer.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ug-image-viewer.c')
-rwxr-xr-xmain/src/ug-image-viewer.c387
1 files changed, 301 insertions, 86 deletions
diff --git a/main/src/ug-image-viewer.c b/main/src/ug-image-viewer.c
index 44958fd..ab2377f 100755
--- a/main/src/ug-image-viewer.c
+++ b/main/src/ug-image-viewer.c
@@ -1,37 +1,98 @@
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
#include <Elementary.h>
#include <ui-gadget-module.h>
+#include <app.h>
+
#include <Ecore_X.h> /*EFL*/
#include "ivug-common.h" //common
#include "ivug-util.h"
-#include "ivug-main.h"
#include "ivug-main-view.h"
#include "ivug-setas-view.h"
+#include "ivug-crop-ug.h"
#include "ivug-details-view.h"
-#include "ivug-slider.h"
+
+#include "ivug-callback.h"
+#include "ivug-context.h"
#include "ug-image-viewer.h"
-#include "ivug-data.h"
#include "ivug-parameter.h"
+static void _on_base_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ Evas_Coord x,y,w,h;
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+
+ MSG_IMAGEVIEW_HIGH("Base layout resized geomtery XYWH(%d,%d,%d,%d) angle=%d", x, y, w, h, elm_win_rotation_get(ug_get_window()));
+}
+
+static void _on_base_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ Evas_Coord x,y,w,h;
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+
+ MSG_IMAGEVIEW_HIGH("Base layout moved geomtery XYWH(%d,%d,%d,%d) angle=%d", x, y, w, h, elm_win_rotation_get(ug_get_window()));
+}
+
+static void _on_receive_mouse_down (void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ MSG_MAIN_HIGH("Base layout clicked : %s Layer=%d",evas_object_name_get(obj), evas_object_layer_get(obj));
+}
+
+static void _print_render_method(Evas *e)
+{
+ IV_ASSERT(e != NULL );
+
+ Eina_List *engines, *l;
+ int cur_id;
+ int id;
+ char *name;
+
+ engines = evas_render_method_list ();
+ if (!engines) {
+ MSG_IMAGEVIEW_ERROR("No engine is specified");
+ return;
+ }
+
+ cur_id = evas_output_method_get (e);
+
+ EINA_LIST_FOREACH (engines, l, name) {
+ id = evas_render_method_lookup (name);
+ if (name && id == cur_id)
+ {
+ MSG_IMAGEVIEW_HIGH("Render method is %s", name);
+ break;
+ }
+ }
+
+}
+
+static void _on_render_post(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ MSG_IMAGEVIEW_HIGH("***************render_post***************");
+}
+
+static void _on_render_pre(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ MSG_IMAGEVIEW_HIGH("***************render_pre***************");
+}
+
static Evas_Object *create_fullview(Evas_Object *win, struct ug_data *ugd)
{
Evas_Object *base;
@@ -42,7 +103,7 @@ static Evas_Object *create_fullview(Evas_Object *win, struct ug_data *ugd)
Eina_Bool ret;
ret = elm_layout_file_set(base , EDJ_PATH"/ivug-base.edj", "ivug_base" );
-
+ evas_object_name_set(base, "Base layout");
if ( ret == EINA_FALSE)
{
MSG_IMAGEVIEW_HIGH("Cannot set layout. EDJ=%s Group=%s", EDJ_PATH"/ivug-base.edj", "ivug_base");
@@ -65,16 +126,20 @@ static Evas_Object *create_frameview(Evas_Object *parent, struct ug_data *ugd)
/* Create Frame view */
base = elm_layout_add(parent);
+ evas_object_name_set(base, "Base layout frame");
elm_layout_theme_set(base, "layout", "application", "default");
return base;
}
-static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv)
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
{
struct ug_data *ugd;
- PERF_CHECK_BEGIN("On Create");
+ PERF_CHECK_END(LVL0, "UG_MODULE_INIT -> On Create");
+
+ PERF_CHECK_BEGIN(LVL0, "On Create");
MSG_IMAGEVIEW_HIGH("Image Viewer : %s ug=0x%08x", __func__, ug);
@@ -96,25 +161,27 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo
return NULL;
}
- PERF_CHECK_BEGIN(LVL1 "main_init");
+ PERF_CHECK_BEGIN(LVL1, "init context");
//init
- if (!ivug_main_init(ug))
+ if (!ivug_context_init(ug))
{
MSG_IMAGEVIEW_ERROR("ivug_main_init error");
return NULL;
}
- PERF_CHECK_END(LVL1 "main_init");
+ PERF_CHECK_END(LVL1, "init context");
- PERF_CHECK_BEGIN(LVL1 "parse bundle");
+ PERF_CHECK_BEGIN(LVL1, "parse bundle");
- ugd->ivug_param = ivug_param_create_from_bundle(data);
+ ugd->ivug_param = ivug_param_create_from_bundle(service);
if ( ugd->ivug_param == NULL )
{
MSG_IMAGEVIEW_ERROR("Cannot parse parameter");
- ivug_main_deinit(ug);
+ ivug_context_deinit(ug);
return NULL;
}
- PERF_CHECK_END(LVL1 "parse bundle");
+ PERF_CHECK_END(LVL1, "parse bundle");
+
+ PERF_CHECK_BEGIN(LVL1, "creating base");
//create base
if (mode == UG_MODE_FULLVIEW)
@@ -127,6 +194,7 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo
MSG_IMAGEVIEW_MED("create base layout for FrameView");
ugd->base = create_frameview(ug_get_window(), ugd);
}
+ PERF_CHECK_END(LVL1, "creating base");
if ( ugd->base == NULL )
{
@@ -134,14 +202,60 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo
return NULL;
}
+ MSG_IMAGEVIEW_HIGH("UG base created : 0x%08x", ugd->base);
+ evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down, NULL);
+
+ evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_RESIZE, _on_base_resize, NULL);
+ evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_MOVE, _on_base_move, NULL);
+
+ evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_RENDER_PRE, _on_render_pre, NULL);
+ evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_RENDER_POST, _on_render_post, NULL);
+
if(ugd->ivug_param->mode == IVUG_MODE_SETAS)
{
MSG_IMAGEVIEW_HIGH("UG types=%d", ugd->ivug_param->setas_type);
- if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_WALLPAPER)
+ ivug_setas_mode setas_mode = IVUG_SETAS_UG;
+ if(ugd->ivug_param->bStandalone == true)
+ {
+ setas_mode = IVUG_SETAS_APPSVC;
+ }
+
+ if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_CALLER_ID)
+ {
+ ugd->setas_view = ivug_setas_view_callerid_ug_create(ugd->base, ugd->ivug_param->filepath,
+ setas_mode, ugd->ivug_param->width, ugd->ivug_param->height);
+ }
+ else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_VIDEO_CALL_ID)
+ {
+ ugd->setas_view = ivug_setas_view_video_call_id_ug_create(ugd->base, ugd->ivug_param->filepath,
+ setas_mode, ugd->ivug_param->width, ugd->ivug_param->height);
+ }
+ else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_WALLPAPER)
{
// From Wall paper in Setting
- ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath);
+ if(setas_mode == IVUG_SETAS_APPSVC)
+ {
+ ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath,
+ setas_mode, IVUG_CTRLBAR_SET_SCREEN_HOME);
+ }
+ else
+ {
+ ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath,
+ setas_mode, IVUG_CTRLBAR_SET_SCREEN_UNDEFINED);
+ }
+ }
+ else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_CROP)
+ {
+ // Crop UG
+ ugd->crop_ug = ivug_crop_ug_create(ugd->base,
+ ugd->ivug_param->width, ugd->ivug_param->height,
+ ugd->ivug_param->bRatioFix, ugd->ivug_param->filepath);
+ }
+ else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_WALLPAPER_ONLY)
+ {
+ ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath,
+ setas_mode, IVUG_CTRLBAR_SET_SCREEN_HOME);
}
else
{
@@ -149,19 +263,22 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo
return NULL;
}
- if(ugd->setas_view == NULL)
+ if(ugd->setas_view == NULL && ugd->crop_ug == NULL)
{
MSG_IMAGEVIEW_ERROR("SetAS UG creation failed Type:%d", ugd->ivug_param->setas_type);
- ivug_main_deinit(ug);
- if (ugd->base)
- {
- evas_object_del(ugd->base);
- ugd->base = NULL;
- }
- return NULL;
+ goto ON_CREATE_ERROR;
}
- Evas_Object *layout = ivug_setas_view_object_get(ugd->setas_view);
+ Evas_Object *layout = NULL;
+
+ if(ugd->setas_view)
+ {
+ layout = ivug_setas_view_object_get(ugd->setas_view);
+ }
+ else if(ugd->crop_ug)
+ {
+ layout = ivug_crop_ug_get_layout(ugd->crop_ug);
+ }
elm_object_part_content_set(ugd->base, "elm.swallow.content", layout); //swallow
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -170,59 +287,92 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo
}
else
{
- PERF_CHECK_BEGIN(LVL1 "main_view_create");
+ PERF_CHECK_BEGIN(LVL1, "main_view_create");
ugd->main_view = ivug_main_view_create(ugd->base, ugd->ivug_param->mode, ugd->ivug_param->view_by);
+ PERF_CHECK_END(LVL1, "main_view_create");
+
if (ugd->main_view == NULL) //set main view.
{
MSG_IMAGEVIEW_ERROR("Main View Layout Lading Fail");
- ivug_main_deinit(ug);
- if (ugd->base)
- {
- evas_object_del(ugd->base);
- ugd->base = NULL;
- }
- return NULL;
+ goto ON_CREATE_ERROR;
}
- PERF_CHECK_END(LVL1 "main_view_create");
-
// Load list.
+ PERF_CHECK_BEGIN(LVL1, "main_view_load_list");
+
if ( ivug_main_view_load_list(ugd->main_view, ugd->ivug_param) == false)
{
MSG_IMAGEVIEW_ERROR("Cannot load media list.");
// Need popup?
- ivug_main_deinit(ug);
- if (ugd->base)
- {
- evas_object_del(ugd->base);
- ugd->base = NULL;
- }
- return NULL;
-
+ goto ON_CREATE_ERROR;
}
Evas_Object *layout = ivug_main_view_object_get(ugd->main_view);
elm_object_part_content_set(ugd->base, "elm.swallow.content", layout); //swallow
+
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(layout);
-
+ PERF_CHECK_END(LVL1, "main_view_load_list");
}
- PERF_CHECK_END("On Create");
+
+ PERF_CHECK_BEGIN(LVL1, "Force render");
+
+ evas_render(evas_object_evas_get(ugd->base));
+
+ PERF_CHECK_END(LVL1, "Force render");
+
+ PERF_CHECK_END(LVL0, "On Create");
+
+ PERF_CHECK_BEGIN(LVL0, "On Create -> On Start");
return ugd->base;
+
+ON_CREATE_ERROR:
+ if(ugd->main_view)
+ {
+ ivug_main_view_destroy(ugd->main_view);
+ }
+ ivug_context_deinit(ug);
+ if (ugd->base)
+ {
+ evas_object_del(ugd->base);
+ ugd->base = NULL;
+ }
+ return NULL;
}
-static void on_start(struct ui_gadget *ug, bundle *data, void *priv)
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
{
+ PERF_CHECK_END(LVL0, "On Create -> On Start");
+
+ PERF_CHECK_BEGIN(LVL0, "On Start");
+
MSG_IMAGEVIEW_HIGH("Image Viewer : %s", __func__);
+
+ if (!ug || !priv)
+ {
+ MSG_IMAGEVIEW_ERROR("Invalid UG. UG=0x%08x Priv=0x%08x", ug, priv);
+ return ;
+ }
+
+ struct ug_data *ugd = (struct ug_data *)priv;
+
+ if ( ugd->main_view )
+ {
+ PERF_CHECK_BEGIN(LVL1, "main_view_start");
+ ivug_main_view_start(ugd->main_view);
+ PERF_CHECK_END(LVL1, "main_view_start");
+ }
+
+ PERF_CHECK_END(LVL0, "On Start");
}
-static void on_pause(struct ui_gadget *ug, bundle *data, void *priv)
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
{
MSG_IMAGEVIEW_HIGH("Image Viewer : %s", __func__);
@@ -236,12 +386,12 @@ static void on_pause(struct ui_gadget *ug, bundle *data, void *priv)
if ( ugd->main_view )
{
- ivug_slider_stop_slide_show(ugd->main_view->slider);
+ ivug_main_view_pause(ugd->main_view);
}
}
-static void on_resume(struct ui_gadget *ug, bundle *data, void *priv)
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
{
MSG_IMAGEVIEW_HIGH("Image Viewer : %s", __func__);
@@ -255,18 +405,16 @@ static void on_resume(struct ui_gadget *ug, bundle *data, void *priv)
if ( ugd->main_view )
{
- ivug_main_view_update(ugd->main_view);
-
-// ivug_slider_resume_slide_show(ugd->main_view->slider);
+ ivug_main_view_resume(ugd->main_view);
}
}
-static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv)
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
{
MSG_IMAGEVIEW_HIGH("Image Viewer : %s UG=0x%08x", __func__, ug);
- PERF_CHECK_BEGIN("On Destroy");
+ PERF_CHECK_BEGIN(LVL0, "On Destroy");
if (!ug || !priv)
{
@@ -277,17 +425,28 @@ static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv)
struct ug_data *ugd = (struct ug_data *)priv;
MSG_IMAGEVIEW_HIGH("On Destroy : ug=0x%08x", ug);
- //destroy main view.
- if ( ugd->main_view )
- {
- ivug_main_view_destroy(ugd->main_view);
- ugd->main_view = NULL;
- }
if(ugd->setas_view)
{
+ PERF_CHECK_BEGIN(LVL1, "SetAsView");
ivug_setas_view_destroy(ugd->setas_view);
ugd->setas_view = NULL;
+ PERF_CHECK_END(LVL1, "SetAsView");
+ }
+
+ if(ugd->crop_ug)
+ {
+ ivug_crop_ug_destroy(ugd->crop_ug);
+ ugd->crop_ug = NULL;
+ }
+
+ //destroy main view.
+ if ( ugd->main_view )
+ {
+ PERF_CHECK_BEGIN(LVL1, "MainView");
+ ivug_main_view_destroy(ugd->main_view);
+ ugd->main_view = NULL;
+ PERF_CHECK_END(LVL1, "MainView");
}
//delete param.
@@ -298,30 +457,66 @@ static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv)
}
//finalize data
- if ( !ivug_main_deinit(ug))
+ PERF_CHECK_BEGIN(LVL1, "Context");
+ if ( !ivug_context_deinit(ug))
{
MSG_IMAGEVIEW_ERROR("ivug_main_deinit failed");
}
+ PERF_CHECK_END(LVL1, "Context");
if (ugd->base)
{
+ PERF_CHECK_BEGIN(LVL1, "Base layout");
evas_object_del(ugd->base);
ugd->base = NULL;
+ PERF_CHECK_END(LVL1, "Base layout");
}
MSG_IMAGEVIEW_HIGH("Destroyed all ug");
- PERF_CHECK_END("On Destroy");
-
+ PERF_CHECK_END(LVL0, "On Destroy");
}
+static bool _data_print(service_h service, const char *key, void *user_data)
+{
+ MSG_IVUG_HIGH(" %s", key);
+
+ return true;
+}
-static void on_message(struct ui_gadget *ug, bundle *msg, bundle *data, void *priv)
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
{
MSG_IMAGEVIEW_HIGH("Image Viewer : %s UG=0x%08x", __func__, ug); //on message
+
+ if (!ug || !priv)
+ {
+ MSG_IMAGEVIEW_ERROR("Invalid UG. UG=0x%08x Priv=0x%08x", ug, priv);
+ return;
+ }
+
+ int ret = service_foreach_extra_data(service, _data_print, NULL);
+
+ if(SERVICE_ERROR_NONE != ret)
+ {
+ MSG_IVUG_ERROR("service_foreach_extra_data ERROR");
+ }
+
+ struct ug_data *ugd = (struct ug_data *)priv;
+
+ //ivug_msg_type msg_type = IVUG_MSG_NONE;
+
+ if(ugd->main_view == NULL)
+ {
+ MSG_IMAGEVIEW_ERROR("main view is NULL");
+ return;
+ }
+
+ ivug_callback_call(gGetCallbackHandle(), service, NULL, NULL);
+
+ return;
}
-static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, void *priv)
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
{
if (!ug || !priv)
{
@@ -330,8 +525,6 @@ static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, vo
}
MSG_IMAGEVIEW_HIGH("Image Viewer : %s UG=0x%08x", __func__, ug); //on message
- //struct ug_data *ugd = (struct ug_data *)priv;
-
switch (event) {
case UG_EVENT_LOW_MEMORY:
MSG_IMAGEVIEW_HIGH("Get Event : Low Memory");
@@ -342,6 +535,14 @@ static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, vo
case UG_EVENT_LANG_CHANGE:
MSG_IMAGEVIEW_HIGH("Get Event : Language changed");
break;
+
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ // Rotate event is not used now.. plz, use only resized callback.
+ break;
+
default:
MSG_IMAGEVIEW_ERROR("Unknown event type : %d", event);
break;
@@ -352,7 +553,7 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
{
struct ug_data *ugd;
- MSG_IMAGEVIEW_HIGH("UG_MODULE_INIT");
+ MSG_IMAGEVIEW_HIGH("UG_MODULE_INIT. Ver=12.0");
if (!ops)
{
@@ -367,7 +568,7 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
return -1;
}
- PERF_INIT();
+ IV_PERF_INIT();
ops->create = on_create;
ops->start = on_start;
@@ -379,6 +580,8 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
ops->priv = ugd;
ops->opt = UG_OPT_INDICATOR_ENABLE;
+ PERF_CHECK_BEGIN(LVL0, "UG_MODULE_INIT -> On Create");
+
return 0;
}
@@ -400,9 +603,21 @@ UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
MSG_IMAGEVIEW_HIGH("UG_MODULE_EXIT");
- PERF_SHOW_RESULT(stdout);
+#ifdef TA_SAVETO_FILE
+ FILE *fp = NULL;
+
+ fp = fopen(DATADIR"/"PACKAGE"/TimeAnal", "a");
+
+ IV_ASSERT(fp != NULL);
+
+ PERF_SHOW_RESULT(fp);
+
+ fclose(fp);
+#else
+ PERF_SHOW_RESULT(stderr);
+#endif
- PERF_DEINIT();
+ IV_PERF_DEINIT();
}