Ecore_Timer *media_key_longpress_timer;
bool is_media_key_longpressed;
-
- bool is_app_terminating;
};
#endif// __CALLUI_H__
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);
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;
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);
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;
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);
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;
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));
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
*
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);
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);
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);
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);
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);
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);
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);
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;
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);
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();
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);
}