TSAM-11367 [SE][Ref.App][Tizen_3.0_Public_Final_RC5][Mobile][Phone][EXPL] Pop-up... 19/103819/2 submit/tizen_3.0/20161209.163204
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Fri, 9 Dec 2016 13:14:35 +0000 (15:14 +0200)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Fri, 9 Dec 2016 13:19:59 +0000 (15:19 +0200)
Change-Id: I3008c36eb4b1707278c6e3052bbf481f0367d649

inc/callui.h
src/callui-view-incoming-call-noti.c
src/callui-window.c
src/callui.c

index 7a6bf98..f075c71 100755 (executable)
@@ -80,6 +80,8 @@ struct appdata {
 
        Ecore_Timer *media_key_longpress_timer;
        bool is_media_key_longpressed;
+
+       bool is_app_terminating;
 };
 
 #endif// __CALLUI_H__
index bc9aa81..da0575e 100644 (file)
@@ -254,10 +254,12 @@ static callui_result_e __callui_view_incoming_call_noti_ondestroy(call_view_data
        DELETE_EVAS_OBJECT(vd->main_ly);
        DELETE_EVAS_OBJECT(vd->rm_scroller_stroke);
 
-       _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
-       _callui_window_set_rotation_locked(ad->window, true);
-       _callui_window_set_top_level_priority(ad->window, false);
-       _callui_window_set_indicator_visible(ad->window, true);
+       if (!ad->is_app_terminating) {
+               _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
+               _callui_window_set_rotation_locked(ad->window, true);
+               _callui_window_set_top_level_priority(ad->window, false);
+               _callui_window_set_indicator_visible(ad->window, true);
+       }
 
        _callui_window_unset_keygrab_mode(ad->window, CALLUI_KEY_HOME);
 
index d68caba..a8d2d75 100644 (file)
@@ -51,6 +51,7 @@ static Evas_Object *__create_eo_window(callui_window_h window_h);
 static Evas_Object *__create_eo_conformant(Evas_Object *win);
 
 static void __eo_win_rotation_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __eo_win_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 
 static void __eo_win_update_size(callui_window_h window_h, callui_win_size_type_e size_type);
 static callui_result_e __eo_win_set_rotation_locked(callui_window_h window_h, bool is_locked);
@@ -89,10 +90,10 @@ static Evas_Object *__create_eo_conformant(Evas_Object *win)
 
 static void __eo_win_move_and_resize(callui_window_h window_h, bool force_resize)
 {
-       callui_app_data_t *ad = window_h->ad;
+       debug_enter();
 
        int angle = elm_win_rotation_get(window_h->win);
-       dbg("Window orientation changed [%d]", angle);
+       dbg("Window orientation angle [%d]", angle);
 
        int win_h = window_h->win_h;
        int win_w = window_h->win_w;
@@ -107,6 +108,8 @@ static void __eo_win_move_and_resize(callui_window_h window_h, bool force_resize
        if (force_resize) {
                evas_object_resize(window_h->win, 0, 0);
        }
+
+       dbg("Resize window w[%d] h[%d]", win_w, win_h);
        evas_object_resize(window_h->win, win_w, win_h);
 
        int move_x = 0;
@@ -116,34 +119,52 @@ static void __eo_win_move_and_resize(callui_window_h window_h, bool force_resize
                switch (angle) {
                case 90:
                        if (_callui_common_is_mirrored_mode_on()) {
-                               move_y = ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD;
+                               move_y = window_h->ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD;
                        } else {
                                move_y = ACTIVE_NOTI_LANDSCAPE_L_PAD;
                        }
                        break;
                case 180:
-                       move_y = ad->root_h - win_h;
+                       move_y = window_h->ad->root_h - win_h;
                        break;
                case 270:
-                       move_x = ad->root_w - win_h;
+                       move_x = window_h->ad->root_w - win_h;
                        if (_callui_common_is_mirrored_mode_on()) {
                                move_y = ACTIVE_NOTI_LANDSCAPE_L_PAD;
                        } else {
-                               move_y = ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD;
+                               move_y = window_h->ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD;
                        }
                        break;
                default:
                        break;
                }
        }
+       dbg("Move window to position x[%d] y[%d]", move_x, move_y);
        evas_object_move(window_h->win, move_x, move_y);
+
+       debug_leave();
 }
 
 static void __eo_win_rotation_changed_cb(void *data, Evas_Object *obj, void *event_info)
 {
+       debug_enter();
+
        CALLUI_RETURN_IF_FAIL(data);
 
        __eo_win_move_and_resize(data, true);
+
+       debug_leave();
+}
+
+static void __eo_win_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+
+       int x, y;
+       elm_win_screen_position_get(obj, &x, &y);
+       dbg("Window position x[%d] y[%d]", x, y);
+
+       debug_leave();
 }
 
 static Evas_Object *__create_eo_window(callui_window_h window_h)
@@ -157,6 +178,7 @@ static Evas_Object *__create_eo_window(callui_window_h window_h)
        elm_win_title_set(eo, _("IDS_CALL_BODY_CALL_M_APPLICATION_NAME"));
 
        evas_object_smart_callback_add(eo, "wm,rotation,changed", __eo_win_rotation_changed_cb, window_h);
+       evas_object_event_callback_add(eo, EVAS_CALLBACK_MOVE, __eo_win_move_cb, NULL);
 
        elm_win_center(eo, EINA_FALSE, EINA_FALSE);
        elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
@@ -193,6 +215,7 @@ callui_result_e __callui_window_init(callui_window_h window_h, callui_app_data_t
 void __callui_window_deinit(callui_window_h window_h)
 {
        window_h->conformant = NULL;
+       evas_object_event_callback_del_full(window_h->win, EVAS_CALLBACK_MOVE, __eo_win_move_cb, NULL);
        evas_object_smart_callback_del_full(window_h->win, "wm,rotation,changed", __eo_win_rotation_changed_cb, window_h);
        DELETE_EVAS_OBJECT(window_h->win);
 
@@ -250,14 +273,14 @@ void _callui_window_set_content(callui_window_h window_h, Evas_Object *content)
 
 static void __eo_win_update_size(callui_window_h window_h, callui_win_size_type_e size_type)
 {
-       callui_app_data_t *ad = window_h->ad;
+       debug_enter();
 
        window_h->size_type = size_type;
-       window_h->win_w = ad->root_w;
+       window_h->win_w = window_h->ad->root_w;
 
        switch (size_type) {
        case CALLUI_WIN_SIZE_FULLSCREEN:
-               window_h->win_h = ad->root_h;
+               window_h->win_h = window_h->ad->root_h;
                break;
        case CALLUI_WIN_SIZE_ACTIVE_NOTI:
                window_h->win_h = CALLUI_WIN_ACT_NOTI_HEIGHT;
@@ -266,6 +289,8 @@ static void __eo_win_update_size(callui_window_h window_h, callui_win_size_type_
                break;
        }
        __eo_win_move_and_resize(window_h, false);
+
+       debug_leave();
 }
 
 void _callui_window_set_size_type(callui_window_h window_h, callui_win_size_type_e size_type)
index ea98825..7e115c4 100755 (executable)
@@ -606,7 +606,11 @@ static void __app_terminate(void *data)
 {
        debug_enter();
 
-       __app_deinit(data);
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_app_data_t *ad = (callui_app_data_t *)data;
+       ad->is_app_terminating = true;
+       __app_deinit(ad);
 
        debug_leave();
 }
@@ -615,6 +619,8 @@ static void __app_pause(void *data)
 {
        dbg("****** PAUSE START ******");
 
+       CALLUI_RETURN_IF_FAIL(data);
+
        callui_app_data_t *ad = data;
 
        ad->on_background = true;
@@ -633,6 +639,8 @@ static void __app_resume(void *data)
 {
        dbg("****** RESUME START ******");
 
+       CALLUI_RETURN_IF_FAIL(data);
+
        callui_app_data_t *ad = data;
 
        DELETE_ECORE_TIMER(ad->app_state_check_timer);
@@ -657,6 +665,9 @@ static void __app_resume(void *data)
 
 static void __app_service(app_control_h app_control, void *data)
 {
+       CALLUI_RETURN_IF_FAIL(data);
+       CALLUI_RETURN_IF_FAIL(app_control);
+
        dbg("..");
        callui_app_data_t *ad = data;
        char *tmp = NULL;