TizenRefApp-7805 [Call UI] Move window params update logic on view create and destroy... 34/104434/2 submit/tizen_3.0/20161213.160316
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Fri, 9 Dec 2016 12:28:48 +0000 (14:28 +0200)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Tue, 13 Dec 2016 09:12:38 +0000 (11:12 +0200)
Change-Id: I020c57d54165e9dabb50d57d5d914cfb50f18558

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

index f075c71..7a6bf98 100755 (executable)
@@ -80,8 +80,6 @@ struct appdata {
 
        Ecore_Timer *media_key_longpress_timer;
        bool is_media_key_longpressed;
-
-       bool is_app_terminating;
 };
 
 #endif// __CALLUI_H__
index da0575e..20b03ee 100644 (file)
@@ -217,16 +217,6 @@ static callui_result_e __callui_view_incoming_call_noti_oncreate(call_view_data_
 
        vd->base_view.ad = ad;
 
-       _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_ACTIVE_NOTI);
-       _callui_window_set_rotation_locked(ad->window, false);
-       _callui_window_set_top_level_priority(ad->window, true);
-       _callui_window_set_indicator_visible(ad->window, false);
-       _callui_window_hide_quickpanel(ad->window);
-
-       if (_callui_common_is_homekey_answering_call_mode_on()) {
-               _callui_window_set_keygrab_mode(ad->window, CALLUI_KEY_HOME, CALLUI_WIN_KEYGRAB_EXCLUSIVE);
-       }
-
        callui_result_e res = __create_main_content(vd, parent);
        CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
@@ -254,15 +244,6 @@ 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);
 
-       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);
-
        free(vd);
 
        return CALLUI_RESULT_OK;
index 61816e8..2c038ff 100644 (file)
@@ -147,14 +147,6 @@ static callui_result_e __callui_view_incoming_call_oncreate(call_view_data_base_
 
        vd->base_view.ad = ad;
 
-       _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
-       _callui_window_set_rotation_locked(ad->window, true);
-       _callui_window_hide_quickpanel(ad->window);
-
-       _callui_window_set_keygrab_mode(ad->window, CALLUI_KEY_HOME, CALLUI_WIN_KEYGRAB_EXCLUSIVE);
-
-       _callui_window_set_quickpanel_disable(ad->window, true);
-
        callui_result_e res = __create_main_content(vd, parent);
        CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
@@ -184,10 +176,6 @@ static callui_result_e __callui_view_incoming_call_ondestroy(call_view_data_base
 
        DELETE_EVAS_OBJECT(vd->base_view.contents);
 
-       _callui_window_unset_keygrab_mode(ad->window, CALLUI_KEY_HOME);
-
-       _callui_window_set_quickpanel_disable(ad->window, false);
-
        free(vd);
 
        return CALLUI_RESULT_OK;
index a8925b1..764a163 100644 (file)
@@ -62,6 +62,8 @@ static callui_result_e __destroy_cur_view(callui_vm_h vm);
 static callui_result_e __create_update_view(callui_vm_h vm, callui_view_type_e type);
 static call_view_data_base_t *__allocate_view(callui_view_type_e view_type);
 static callui_result_e __change_view(callui_vm_h vm, callui_view_type_e type);
+static void __update_window_params_on_view_create(callui_vm_h vm, callui_view_type_e type);
+static void __update_window_params_on_view_destroy(callui_vm_h vm, callui_view_type_e type);
 static void __update_cur_view(callui_vm_h vm);
 static void __update_vm(callui_vm_h vm);
 static callui_result_e __auto_change_view(callui_vm_h vm, callui_call_data_t *call_data, callui_sim_slot_type_e sim_slot);
@@ -515,6 +517,8 @@ static callui_result_e __destroy_cur_view(callui_vm_h vm)
                warn("destroy() is not set! Possible memory leak");
        }
 
+       __update_window_params_on_view_destroy(vm, vm->cur_view_type);
+
        vm->cur_view = NULL;
        vm->cur_view_type = CALLUI_VIEW_UNDEFINED;
        return res;
@@ -554,6 +558,8 @@ static callui_result_e __create_update_view(callui_vm_h vm, callui_view_type_e t
                        return CALLUI_RESULT_FAIL;
                }
 
+               __update_window_params_on_view_create(vm, type);
+
                if (vm->cur_lock_state == CALLUI_LOCK_MNG_STATE_LOCKED && view->lock) {
                        if (view->lock) {
                                view->lock(view, _callui_lock_manager_get_type(vm->ad->lock_manager));
@@ -573,6 +579,56 @@ static callui_result_e __create_update_view(callui_vm_h vm, callui_view_type_e t
        return CALLUI_RESULT_OK;
 }
 
+static void __update_window_params_on_view_create(callui_vm_h vm, callui_view_type_e type)
+{
+       switch (type) {
+       case CALLUI_VIEW_DIALLING:
+               _callui_window_set_size_type(vm->ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
+               _callui_window_set_rotation_locked(vm->ad->window, true);
+               break;
+       case CALLUI_VIEW_INCOMING_CALL_NOTI:
+               _callui_window_set_size_type(vm->ad->window, CALLUI_WIN_SIZE_ACTIVE_NOTI);
+               _callui_window_set_rotation_locked(vm->ad->window, false);
+               _callui_window_set_top_level_priority(vm->ad->window, true);
+               _callui_window_set_indicator_visible(vm->ad->window, false);
+               _callui_window_hide_quickpanel(vm->ad->window);
+               if (_callui_common_is_homekey_answering_call_mode_on()) {
+                       _callui_window_set_keygrab_mode(vm->ad->window, CALLUI_KEY_HOME, CALLUI_WIN_KEYGRAB_EXCLUSIVE);
+               }
+               break;
+       case CALLUI_VIEW_INCOMING_CALL:
+               _callui_window_set_size_type(vm->ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
+               _callui_window_set_rotation_locked(vm->ad->window, true);
+               _callui_window_hide_quickpanel(vm->ad->window);
+               _callui_window_set_keygrab_mode(vm->ad->window, CALLUI_KEY_HOME, CALLUI_WIN_KEYGRAB_EXCLUSIVE);
+               _callui_window_set_quickpanel_disable(vm->ad->window, true);
+               break;
+       case CALLUI_VIEW_SINGLECALL:
+               _callui_window_set_size_type(vm->ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
+               _callui_window_set_rotation_locked(vm->ad->window, true);
+               break;
+       default:
+               break;
+       }
+}
+
+static void __update_window_params_on_view_destroy(callui_vm_h vm, callui_view_type_e type)
+{
+       switch (type) {
+       case CALLUI_VIEW_INCOMING_CALL_NOTI:
+               _callui_window_set_top_level_priority(vm->ad->window, false);
+               _callui_window_set_indicator_visible(vm->ad->window, true);
+               _callui_window_unset_keygrab_mode(vm->ad->window, CALLUI_KEY_HOME);
+               break;
+       case CALLUI_VIEW_INCOMING_CALL:
+               _callui_window_set_quickpanel_disable(vm->ad->window, false);
+               _callui_window_unset_keygrab_mode(vm->ad->window, CALLUI_KEY_HOME);
+               break;
+       default:
+               break;
+       }
+}
+
 /**
  * @brief Changes view by type
  *
index a8d2d75..e81d166 100644 (file)
@@ -52,6 +52,7 @@ 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_resize_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);
@@ -167,6 +168,17 @@ static void __eo_win_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_
        debug_leave();
 }
 
+static void __eo_win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+
+       Evas_Coord x, y, w, h;
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       dbg("Window geometry x[%d] y[%d] w[%d] h[%d]", x, y, w, h);
+
+       debug_leave();
+}
+
 static Evas_Object *__create_eo_window(callui_window_h window_h)
 {
        Evas_Object *eo = elm_win_add(NULL, CALLUI_PACKAGE, ELM_WIN_NOTIFICATION);
@@ -179,6 +191,7 @@ static Evas_Object *__create_eo_window(callui_window_h window_h)
 
        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);
+       evas_object_event_callback_add(eo, EVAS_CALLBACK_RESIZE, __eo_win_resize_cb, NULL);
 
        elm_win_center(eo, EINA_FALSE, EINA_FALSE);
        elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
@@ -191,7 +204,6 @@ static Evas_Object *__create_eo_window(callui_window_h window_h)
 callui_result_e __callui_window_init(callui_window_h window_h, callui_app_data_t *appdata)
 {
        window_h->ad = appdata;
-       window_h->rotation_locked = false;
 
        window_h->win = __create_eo_window(window_h);
        CALLUI_RETURN_VALUE_IF_FAIL(window_h->win, CALLUI_RESULT_FAIL);
@@ -215,6 +227,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_RESIZE, __eo_win_resize_cb, 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);
@@ -315,6 +328,8 @@ callui_result_e _callui_window_validate_position(callui_window_h window_h)
 
 static callui_result_e __eo_win_set_rotation_locked(callui_window_h window_h, bool is_locked)
 {
+       dbg("try set locked state [%d]", is_locked);
+
        CALLUI_RETURN_VALUE_IF_FAIL(window_h->rotation_locked != is_locked,
                        CALLUI_RESULT_ALREADY_REGISTERED);
 
@@ -342,6 +357,8 @@ static callui_result_e __eo_win_set_rotation_locked(callui_window_h window_h, bo
 
 callui_result_e _callui_window_set_rotation_locked(callui_window_h window_h, bool is_locked)
 {
+       debug_enter();
+
        CALLUI_RETURN_VALUE_IF_FAIL(window_h, CALLUI_RESULT_INVALID_PARAM);
 
        return __eo_win_set_rotation_locked(window_h, is_locked);
@@ -356,6 +373,8 @@ int _callui_window_get_rotation(callui_window_h window_h)
 
 callui_result_e _callui_window_set_top_level_priority(callui_window_h window_h, bool is_toplevel)
 {
+       debug_enter();
+
        CALLUI_RETURN_VALUE_IF_FAIL(window_h, CALLUI_RESULT_INVALID_PARAM);
 
        efl_util_notification_level_e efl_noti_level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
@@ -376,6 +395,8 @@ callui_result_e _callui_window_set_top_level_priority(callui_window_h window_h,
 
 callui_result_e _callui_window_set_screen_mode(callui_window_h window_h, callui_win_screen_mode_e screen_mode)
 {
+       debug_enter();
+
        CALLUI_RETURN_VALUE_IF_FAIL(window_h, CALLUI_RESULT_INVALID_PARAM);
        CALLUI_RETURN_VALUE_IF_FAIL((screen_mode >= CALLUI_WIN_SCREEN_MODE_DEFAULT &&
                        screen_mode <= CALLUI_WIN_SCREEN_MODE_ALWAYS_ON), CALLUI_RESULT_INVALID_PARAM);
index 7e115c4..9d95221 100755 (executable)
@@ -609,7 +609,7 @@ static void __app_terminate(void *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();
@@ -711,8 +711,6 @@ static void __app_service(app_control_h app_control, void *data)
                        sec_dbg("number: [%s]", tmp);
                        if (tmp) {
                                sec_dbg("number: [%s]", tmp);
-                               _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
-                               _callui_window_set_rotation_locked(ad->window, true);
                                if (!ad->waiting_dialing) {
                                        __process_outgoing_call(ad, tmp);
                                }