TizenRefApp-7710 [Call UI] Add Incoming Call Active Notification view components... 56/99556/2
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Wed, 23 Nov 2016 08:41:33 +0000 (10:41 +0200)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Wed, 23 Nov 2016 12:43:00 +0000 (04:43 -0800)
Change-Id: Idbec79312f7c048cd52e2ce0d2bf31c32bca0b68

edje_src/edc/callui-view-incoming-call-noti.edc
inc/callui-accessibility-utils.h
src/callui-accessibility-utils.c
src/callui-view-incoming-call-noti.c

index a4b6107..05bd133 100644 (file)
@@ -1155,16 +1155,6 @@ group {
                                color: COLOR_BG_ALPHA;
                        }
                )
-               CU_PART_RECT( "contact_icon.access",
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       description { state: "default" 0.0;
-                               rel1 { relative: 0.0 0.0; to: "contact_icon.base"; }
-                               rel2 { relative: 1.0 1.0; to: "contact_icon.base"; }
-                               fixed: 1 1;
-                               color: COLOR_BG_ALPHA;
-                       }
-               )
                CU_PART_RECT( "contact_info.access",
                        mouse_events: 1;
                        repeat_events: 1;
index 9aa987f..9c901be 100644 (file)
@@ -42,18 +42,6 @@ Evas_Object *_callui_au_register_accessible_object(Evas_Object *parent, Evas_Obj
 void _callui_au_unregister_accessible_object(Evas_Object *obj);
 
 /**
- * @brief Registers accessible object and append it to relationship rout
- *
- * @param[in]  parent                  Accessible object parent
- * @param[in]  rel_from_obj    Relationship object (highlighting source)
- * @param[in]  ly                              Layout from which part for creation accessible object is taken
- * @param[in]  ly_part                 Part of layout for creation accessible object
- *
- * @return Accessible object on success or NULL otherwise
- */
-Evas_Object *_callui_au_register_and_append_accessible_object(Evas_Object *parent, Evas_Object *rel_from_obj, Evas_Object *ly, const char *ly_part);
-
-/**
  * @brief Symmetrically appends custom relationship between objects
  *
  * @param[in]  from                    Highlight from object
index 778bc51..45f94d7 100644 (file)
@@ -39,22 +39,6 @@ void _callui_au_unregister_accessible_object(Evas_Object *obj)
        elm_access_object_unregister(obj);
 }
 
-Evas_Object *_callui_au_register_and_append_accessible_object(Evas_Object *parent, Evas_Object *rel_from_obj, Evas_Object *ly, const char *ly_part)
-{
-       CALLUI_RETURN_NULL_IF_FAIL(parent);
-       CALLUI_RETURN_NULL_IF_FAIL(ly);
-       CALLUI_RETURN_NULL_IF_FAIL(ly_part);
-
-       Evas_Object *ao = _callui_au_register_accessible_object(parent, ly, ly_part);
-       CALLUI_RETURN_NULL_IF_FAIL(ao);
-
-       if (rel_from_obj) {
-               elm_atspi_accessible_relationship_append(rel_from_obj, ELM_ATSPI_RELATION_FLOWS_TO, ao);
-               elm_atspi_accessible_relationship_append(ao, ELM_ATSPI_RELATION_FLOWS_FROM, rel_from_obj);
-       }
-       return ao;
-}
-
 callui_result_e _callui_au_append_symmetric_relationship(Evas_Object *from, Evas_Object *to)
 {
        CALLUI_RETURN_VALUE_IF_FAIL(from, CALLUI_RESULT_INVALID_PARAM);
index c4adde7..67d10f1 100644 (file)
@@ -92,7 +92,8 @@ struct _callui_view_incoming_call_noti {
 
        Evas_Object *parent;
 
-       Evas_Object *layout;
+       Evas_Object *main_ly;
+       Evas_Object *rm_btn;
        Evas_Object *rm_scroller;
        Evas_Object *rm_scroller_anchor;
        Evas_Object *rm_scroller_stroke;
@@ -128,19 +129,27 @@ static void __appear_transit_del_cb(void *data, Elm_Transit *transit);
 static void __disappear_transit_del_cb(void *data, Elm_Transit *transit);
 static Eina_Bool __appear_effect_activated_cb(void *data);
 static Eina_Bool __disappear_effect_activated_cb(void *data);
-static void __show_reject_msg_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __reject_msg_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
 static void __layout_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 
 static void __call_action_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
 static Evas_Event_Flags __gesture_layer_flick_end_cb(void *data, void *event_info);
-static Evas_Object *__create_gesture_layer(callui_view_incoming_call_noti_h vd);
 static void __contact_info_click_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
 static callui_result_e __create_main_content(callui_view_incoming_call_noti_h vd, Evas_Object *parent);
-static Evas_Object *__create_btn(callui_view_incoming_call_noti_h vd,
+static callui_result_e __create_dim_rectangle(callui_view_incoming_call_noti_h vd, Evas_Object *parent);
+static callui_result_e __create_main_layout(callui_view_incoming_call_noti_h vd, Evas_Object *parent);
+static callui_result_e __create_answer_call_btn(callui_view_incoming_call_noti_h vd);
+static callui_result_e __create_reject_call_btn(callui_view_incoming_call_noti_h vd);
+static callui_result_e __create_reject_message_btn(callui_view_incoming_call_noti_h vd);
+static callui_result_e __create_gesture_layer(callui_view_incoming_call_noti_h vd);
+static Evas_Object *__create_action_btn(callui_view_incoming_call_noti_h vd,
                const char *style, const char *icon_name, const char *txt, Evas_Smart_Cb click_cb, void *cb_data);
+
 static callui_result_e __update_displayed_data(callui_view_incoming_call_noti_h vd);
 static void __move_active_noti(callui_view_incoming_call_noti_h vd);
 static void __parent_resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __update_caller_info_text(callui_view_incoming_call_noti_h vd, const callui_call_data_t *call_data);
 
 static void __rm_create_content(callui_view_incoming_call_noti_h vd);
 static void __rm_destroy_content(callui_view_incoming_call_noti_h vd);
@@ -174,9 +183,9 @@ static void __set_caller_info_unknown_number(callui_view_incoming_call_noti_h vd
 static void __set_caller_info_phone_number(callui_view_incoming_call_noti_h vd, const char *call_number);
 static void __set_caller_info_phone_number_and_name(callui_view_incoming_call_noti_h vd, const callui_call_data_t *call_data, const char *call_number);
 
-static void __register_def_accessibility_rout(callui_view_incoming_call_noti_h vd);
+static callui_result_e __create_accessible_objects(callui_view_incoming_call_noti_h vd);
 
-static Evas_Object *__create_btn(callui_view_incoming_call_noti_h vd,
+static Evas_Object *__create_action_btn(callui_view_incoming_call_noti_h vd,
                const char *style,
                const char *icon_name,
                const char *txt,
@@ -240,7 +249,7 @@ static callui_result_e __callui_view_incoming_call_noti_ondestroy(call_view_data
 
        DELETE_ECORE_IDLE_ENTERER(vd->transit_effect_idler);
        DELETE_ELM_TRANSIT_HARD(vd->transit);
-       DELETE_EVAS_OBJECT(vd->layout);
+       DELETE_EVAS_OBJECT(vd->main_ly);
        DELETE_EVAS_OBJECT(vd->rm_scroller_stroke);
 
        _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_FULLSCREEN);
@@ -258,7 +267,7 @@ static callui_result_e __callui_view_incoming_call_noti_ondestroy(call_view_data
 static void __reset_params_after_transit(callui_view_incoming_call_noti_h vd)
 {
        vd->transit = NULL;
-       evas_object_freeze_events_set(vd->layout, EINA_FALSE);
+       evas_object_freeze_events_set(vd->main_ly, EINA_FALSE);
 }
 
 static void __appear_transit_del_cb(void *data, Elm_Transit *transit)
@@ -286,7 +295,7 @@ static Eina_Bool __appear_effect_activated_cb(void *data)
        callui_view_incoming_call_noti_h vd = data;
 
        int height = 0;
-       evas_object_geometry_get(vd->layout, NULL, NULL, NULL, &height);
+       evas_object_geometry_get(vd->main_ly, NULL, NULL, NULL, &height);
 
        DELETE_ELM_TRANSIT_HARD(vd->transit);
        vd->transit = elm_transit_add();
@@ -296,14 +305,14 @@ static Eina_Bool __appear_effect_activated_cb(void *data)
                return ECORE_CALLBACK_CANCEL;
        }
        elm_transit_del_cb_set(vd->transit, __appear_transit_del_cb, vd);
-       elm_transit_object_add(vd->transit, vd->layout);
+       elm_transit_object_add(vd->transit, vd->main_ly);
        elm_transit_effect_translation_add(vd->transit, 0, -height, 0, 0);
        elm_transit_duration_set(vd->transit, CALLUI_MOVE_TRANSITION_TIME_SEC);
        elm_transit_objects_final_state_keep_set(vd->transit, EINA_TRUE);
        elm_transit_go(vd->transit);
 
        vd->transit_effect_idler = NULL;
-       evas_object_freeze_events_set(vd->layout, EINA_TRUE);
+       evas_object_freeze_events_set(vd->main_ly, EINA_TRUE);
 
        return ECORE_CALLBACK_DONE;
 }
@@ -318,7 +327,7 @@ static Eina_Bool __disappear_effect_activated_cb(void *data)
        int ypos = 0;
        int width = 0;
        int height = 0;
-       evas_object_geometry_get(vd->layout, &xpos, &ypos, &width, &height);
+       evas_object_geometry_get(vd->main_ly, &xpos, &ypos, &width, &height);
        int transit_y = -(height + ypos);
 
        DELETE_ELM_TRANSIT_HARD(vd->transit);
@@ -329,14 +338,14 @@ static Eina_Bool __disappear_effect_activated_cb(void *data)
                return ECORE_CALLBACK_CANCEL;
        }
        elm_transit_del_cb_set(vd->transit, __disappear_transit_del_cb, vd);
-       elm_transit_object_add(vd->transit, vd->layout);
+       elm_transit_object_add(vd->transit, vd->main_ly);
        elm_transit_effect_translation_add(vd->transit, xpos, ypos, xpos, transit_y);
        elm_transit_duration_set(vd->transit, CALLUI_MOVE_TRANSITION_TIME_SEC);
        elm_transit_objects_final_state_keep_set(vd->transit, EINA_TRUE);
        elm_transit_go(vd->transit);
 
        vd->transit_effect_idler = NULL;
-       evas_object_freeze_events_set(vd->layout, EINA_TRUE);
+       evas_object_freeze_events_set(vd->main_ly, EINA_TRUE);
 
        return ECORE_CALLBACK_CANCEL;
 }
@@ -348,7 +357,7 @@ static void __rm_reset_status_flags(callui_view_incoming_call_noti_h vd)
        vd->rm_actualize_state |= CALLUI_REJ_MSG_ANCHOR_MOVED;
 }
 
-static void __show_reject_msg_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
+static void __reject_msg_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
        CALLUI_RETURN_IF_FAIL(data);
 
@@ -358,6 +367,8 @@ static void __show_reject_msg_btn_click_cb(void *data, Evas_Object *obj, void *e
        if (vd->rm_turned_on) {
                dbg("Hide reject messages request");
 
+               elm_atspi_accessible_description_set(vd->rm_btn, "IDS_CALL_TBBODY_DOUBLE_TAP_TO_OPEN_REJECT_MESSAGE_LIST");
+
                __rm_reset_anim_params(vd);
                if (vd->rm_state == CALLUI_REJ_MSG_SHOW_IN_PROG ||
                                vd->rm_state == CALLUI_REJ_MSG_SHOW_REQ) {
@@ -370,6 +381,8 @@ static void __show_reject_msg_btn_click_cb(void *data, Evas_Object *obj, void *e
        } else {
                dbg("Show reject messages request");
 
+               elm_atspi_accessible_description_set(vd->rm_btn, "IDS_CALL_TBBODY_DOUBLE_TAP_TO_CLOSE_REJECT_MESSAGE_LIST");
+
                __rm_reset_anim_params(vd);
                if (vd->rm_state == CALLUI_REJ_MSG_HIDE_IN_PROG ||
                                vd->rm_state == CALLUI_REJ_MSG_HIDE_REQ) {
@@ -401,7 +414,7 @@ static void __layout_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, voi
 
        Evas_Coord w = 0;
        Evas_Coord h = 0;
-       evas_object_size_hint_min_get(vd->layout, &w, &h);
+       evas_object_size_hint_min_get(vd->main_ly, &w, &h);
        dbg("LY hint min size - w[%d] h[%d]", w, h);
 
        if (w == 0 || h == 0) {
@@ -609,18 +622,24 @@ static callui_result_e __rm_create_message_items(callui_view_incoming_call_noti_
                evas_object_size_hint_align_set(item_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
                elm_layout_signal_callback_add(item_ly, "cu,action,clicked", "active_noti_main", _rm_message_item_clicked_cb, SAFE_C_CAST(void *, i));
 
+               evas_object_data_set(item_ly, CALLUI_REJ_MSG_GENLIST_DATA, vd);
+
                char *txt = _callui_common_get_reject_msg_by_index(i);
                elm_object_part_text_set(item_ly, "callui.text.main", txt);
-               free(txt);
 
-               evas_object_data_set(item_ly, CALLUI_REJ_MSG_GENLIST_DATA, vd);
+               Evas_Object *ao = elm_access_object_register(item_ly, vd->main_ly);
+               if (ao) {
+                       elm_atspi_accessible_reading_info_type_set(ao, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME | ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION);
+                       elm_atspi_accessible_translation_domain_set(ao, CALLUI_TEXT_DOMAIN);
+                       elm_atspi_accessible_name_set(ao, txt);
+                       elm_atspi_accessible_description_set(ao, "IDS_CALL_BODY_DOUBLE_TAP_TO_SEND_MESSAGE_TTS");
+               } else {
+                       err("Failed to register accessible object");
+               }
+               free(txt);
 
                evas_object_show(item_ly);
                elm_box_pack_end(box, item_ly);
-
-               if (elm_access_object_register(item_ly, vd->layout)) {
-                       err("Failed to register accessible object");
-               }
        }
        *insert_item_count = item_count;
        return res;
@@ -628,7 +647,7 @@ static callui_result_e __rm_create_message_items(callui_view_incoming_call_noti_
 
 static callui_result_e __rm_create_compose_item(callui_view_incoming_call_noti_h vd, Evas_Object *box)
 {
-       Evas_Object *item_ly = _callui_create_layout(vd->layout, CALLUI_LY_STYLE_REJ_MSG_ITEM_COMPOSE);
+       Evas_Object *item_ly = _callui_create_layout(vd->main_ly, CALLUI_LY_STYLE_REJ_MSG_ITEM_COMPOSE);
        CALLUI_RETURN_VALUE_IF_FAIL(item_ly, CALLUI_RESULT_FAIL);
 
        evas_object_size_hint_weight_set(item_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -637,13 +656,19 @@ static callui_result_e __rm_create_compose_item(callui_view_incoming_call_noti_h
 
        elm_object_translatable_part_text_set(item_ly, "callui.text.main", "IDS_CALL_BUTTON_COMPOSE_MESSAGE_TO_SEND_ABB");
 
-       evas_object_show(item_ly);
-       elm_box_pack_end(box, item_ly);
-
-       if (elm_access_object_register(item_ly, vd->layout)) {
+       Evas_Object *ao = elm_access_object_register(item_ly, vd->main_ly);
+       if (ao) {
+               elm_atspi_accessible_reading_info_type_set(ao, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME | ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION);
+               elm_atspi_accessible_translation_domain_set(ao, CALLUI_TEXT_DOMAIN);
+               elm_atspi_accessible_name_set(ao, "IDS_CALL_BUTTON_COMPOSE_MESSAGE_TO_SEND_ABB");
+               elm_atspi_accessible_description_set(ao, "IDS_CALL_BODY_DOUBLE_TAP_TO_SEND_MESSAGE_TTS");
+       } else {
                err("Failed to register accessible object");
        }
 
+       evas_object_show(item_ly);
+       elm_box_pack_end(box, item_ly);
+
        return CALLUI_RESULT_OK;
 }
 
@@ -690,14 +715,14 @@ static void __rm_strock_move_cb(void *data, Evas *e, Evas_Object *obj, void *eve
 static void __rm_create_content(callui_view_incoming_call_noti_h vd)
 {
        /* Reject message list background gradient color layout */
-       vd->rm_scroller_bg = _callui_create_layout(vd->layout, CALLUI_LY_STYLE_REJ_MSG_SCROLLER_BG);
+       vd->rm_scroller_bg = _callui_create_layout(vd->main_ly, CALLUI_LY_STYLE_REJ_MSG_SCROLLER_BG);
        evas_object_event_callback_add(vd->rm_scroller_bg, EVAS_CALLBACK_RESIZE, __rm_scroller_bg_resize_cb, vd);
        evas_object_event_callback_add(vd->rm_scroller_bg, EVAS_CALLBACK_MOVE, __rm_scroller_bg_move_cb, vd);
        CALLUI_RETURN_IF_FAIL(vd->rm_scroller_bg);
        evas_object_show(vd->rm_scroller_bg);
 
        /* Reject message scroller */
-       vd->rm_scroller = elm_scroller_add(vd->layout);
+       vd->rm_scroller = elm_scroller_add(vd->main_ly);
        if (!vd->rm_scroller) {
                err("rm_scroller is NULL");
                return __rm_destroy_content(vd);
@@ -736,13 +761,13 @@ static void __rm_create_content(callui_view_incoming_call_noti_h vd)
        evas_object_show(vd->rm_scroller_stroke);
 
        /* Reject message scroller/list background EDJE anchor */
-       vd->rm_scroller_anchor = evas_object_rectangle_add(evas_object_evas_get(vd->layout));
+       vd->rm_scroller_anchor = evas_object_rectangle_add(evas_object_evas_get(vd->main_ly));
        if (!vd->rm_scroller_anchor) {
                return __rm_destroy_content(vd);
        }
        evas_object_event_callback_add(vd->rm_scroller_anchor, EVAS_CALLBACK_MOVE, __rm_scroller_anchor_move_cb, vd);
        evas_object_color_set(vd->rm_scroller_anchor, 0, 0, 0, 0);
-       elm_object_part_content_set(vd->layout, "swallow.reject_msg_gl_anchor", vd->rm_scroller_anchor);
+       elm_object_part_content_set(vd->main_ly, "swallow.reject_msg_gl_anchor", vd->rm_scroller_anchor);
 
        vd->rm_scroller_max_h = ELM_SCALE_SIZE(ACTIVE_NOTI_RM_ITEM_HEIGHT) * rm_item_count;
        vd->rm_actualize_state &= ~CALLUI_REJ_MSG_UPDATE_GL_HINT;
@@ -797,98 +822,57 @@ static Evas_Event_Flags __gesture_layer_flick_end_cb(void *data, void *event_inf
        return EVAS_EVENT_FLAG_ON_HOLD;
 }
 
-static Evas_Object *__create_gesture_layer(callui_view_incoming_call_noti_h vd)
+static callui_result_e __create_gesture_layer(callui_view_incoming_call_noti_h vd)
 {
-       Evas_Object *gesture_layer = elm_gesture_layer_add(vd->layout);
-       CALLUI_RETURN_NULL_IF_FAIL(gesture_layer);
+       Evas_Object *gesture_layer = elm_gesture_layer_add(vd->main_ly);
+       CALLUI_RETURN_VALUE_IF_FAIL(gesture_layer, CALLUI_RESULT_ALLOCATION_FAIL);
 
-       elm_gesture_layer_attach(gesture_layer, vd->layout);
+       elm_gesture_layer_attach(gesture_layer, vd->main_ly);
        elm_gesture_layer_flick_time_limit_ms_set(gesture_layer, CALLUI_REJ_MSG_FLICK_TIME_LIMIT_MS);
        elm_gesture_layer_cb_set(gesture_layer, ELM_GESTURE_N_LINES , ELM_GESTURE_STATE_END, __gesture_layer_flick_end_cb, vd);
        evas_object_show(gesture_layer);
 
-       return gesture_layer;
-}
-
-static void __contact_info_click_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
-{
-       CALLUI_RETURN_IF_FAIL(data);
-
-       callui_view_incoming_call_noti_h vd = data;
-
-       _callui_vm_change_view(vd->base_view.ad->view_manager, CALLUI_VIEW_INCOMING_CALL);
-}
-
-static void __register_def_accessibility_rout(callui_view_incoming_call_noti_h vd)
-{
-       Evas_Object *ao = _callui_au_register_and_append_accessible_object(vd->layout, NULL, vd->layout, "contact_icon.access");
-       CALLUI_RETURN_IF_FAIL(ao);
-
-       ao = _callui_au_register_and_append_accessible_object(vd->layout, ao, vd->layout, "call_status.access");
-       CALLUI_RETURN_IF_FAIL(ao);
-
-       ao = _callui_au_register_and_append_accessible_object(vd->layout, ao, vd->layout, "contact_info.access");
-       CALLUI_RETURN_IF_FAIL(ao);
+       return CALLUI_RESULT_OK;
 }
 
 static callui_result_e __create_main_content(callui_view_incoming_call_noti_h vd, Evas_Object *parent)
 {
-       vd->base_view.contents = evas_object_rectangle_add(evas_object_evas_get(parent));
-       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
-       evas_object_size_hint_weight_set(vd->base_view.contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(vd->base_view.contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_color_set(vd->base_view.contents, CALLUI_REJ_MSG_DIMMER_COLOR, CALLUI_REJ_MSG_DIMMER_ALPHA_START);
-       elm_object_part_content_set(parent, "elm.swallow.content", vd->base_view.contents);
-       evas_object_show(vd->base_view.contents);
+       callui_result_e res = __create_dim_rectangle(vd, parent);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-       vd->layout = elm_layout_add(parent);
-       CALLUI_RETURN_VALUE_IF_FAIL(vd->layout, CALLUI_RESULT_ALLOCATION_FAIL);
-       evas_object_event_callback_add(vd->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, __layout_changed_hints_cb, vd);
-       elm_layout_theme_set(vd->layout, "layout", "callui", CALLUI_LY_STYLE_ACTIVE_NOTI_CALL_MAIN);
-       evas_object_size_hint_weight_set(vd->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(vd->layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_object_signal_callback_add(vd->layout, "contact_info.clicked", "active_noti_main", __contact_info_click_cb, vd);
-       elm_object_part_content_set(parent, "elm.swallow.active_noti", vd->layout);
-
-       Evas_Object *answer_btn = __create_btn(vd,
-                       CALLUI_BTN_STYLE_AN_ACCEPT_CALL,
-                       CALLUI_GROUP_AN_ACCEPT_CALL_ICON,
-                       NULL,
-                       __call_action_btn_click_cb,
-                       CALLUI_APP_CONTROL_OPERATION_DURING_CALL);
-       CALLUI_RETURN_VALUE_IF_FAIL(answer_btn, CALLUI_RESULT_ALLOCATION_FAIL);
-       elm_object_part_content_set(vd->layout, "swallow.call_accept_btn", answer_btn);
-
-       Evas_Object *reject_btn = __create_btn(vd,
-                       CALLUI_BTN_STYLE_AN_REJECT_CALL,
-                       CALLUI_GROUP_AN_REJECT_CALL_ICON,
-                       NULL,
-                       __call_action_btn_click_cb,
-                       CALLUI_APP_CONTROL_OPERATION_END_CALL);
-       CALLUI_RETURN_VALUE_IF_FAIL(reject_btn, CALLUI_RESULT_ALLOCATION_FAIL);
-       elm_object_part_content_set(vd->layout, "swallow.call_reject_btn", reject_btn);
+       res = __create_main_layout(vd, parent);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-       CALLUI_RETURN_VALUE_IF_FAIL(__create_gesture_layer(vd), CALLUI_RESULT_ALLOCATION_FAIL);
+       res = __create_answer_call_btn(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       res = __create_reject_call_btn(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-       elm_object_signal_emit(vd->layout, "start_swipe_anim", "active_noti_main");
+       res = __create_gesture_layer(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
        vd->rm_state = CALLUI_REJ_MSG_HIDDEN;
        vd->parent = parent;
        evas_object_event_callback_add(vd->parent, EVAS_CALLBACK_RESIZE, __parent_resize_cb, vd);
 
-       __register_def_accessibility_rout(vd);
+       elm_object_signal_emit(vd->main_ly, "start_swipe_anim", "active_noti_main");
 
-       return CALLUI_RESULT_OK;
+       if (__create_accessible_objects(vd) != CALLUI_RESULT_OK) {
+               err("Register accessible objects failed");
+       }
+
+       return res;
 }
 
-static Evas_Object *__create_btn(callui_view_incoming_call_noti_h vd,
+static Evas_Object *__create_action_btn(callui_view_incoming_call_noti_h vd,
                const char *style,
                const char *icon_name,
                const char *txt,
                Evas_Smart_Cb click_cb,
                void *cb_data)
 {
-       Evas_Object *button = elm_button_add(vd->layout);
+       Evas_Object *button = elm_button_add(vd->main_ly);
        CALLUI_RETURN_NULL_IF_FAIL(button);
        elm_object_style_set(button, style);
        evas_object_smart_callback_add(button, "clicked", click_cb, cb_data);
@@ -907,29 +891,126 @@ static Evas_Object *__create_btn(callui_view_incoming_call_noti_h vd,
 
 static void __set_caller_info_unknown_number(callui_view_incoming_call_noti_h vd)
 {
-       elm_object_signal_emit(vd->layout, "show_two_lines", "active_noti_main");
-       elm_object_signal_emit(vd->layout, "hide_reject_msg_btn", "active_noti_main");
-       elm_object_translatable_part_text_set(vd->layout, "text.contact_name", "IDS_CALL_BODY_UNKNOWN");
+       elm_object_signal_emit(vd->main_ly, "show_two_lines", "active_noti_main");
+       elm_object_signal_emit(vd->main_ly, "hide_reject_msg_btn", "active_noti_main");
+       elm_object_translatable_part_text_set(vd->main_ly, "text.contact_name", "IDS_CALL_BODY_UNKNOWN");
+
+       elm_atspi_accessible_name_set(vd->base_view.ao_caller_info, "IDS_CALL_BODY_UNKNOWN");
 }
 
 static void __set_caller_info_phone_number(callui_view_incoming_call_noti_h vd, const char *call_number)
 {
-       elm_object_signal_emit(vd->layout, "show_two_lines", "active_noti_main");
-       elm_object_part_text_set(vd->layout, "text.contact_name", call_number);
+       elm_object_signal_emit(vd->main_ly, "show_two_lines", "active_noti_main");
+       elm_object_part_text_set(vd->main_ly, "text.contact_name", call_number);
+
+       elm_atspi_accessible_name_set(vd->base_view.ao_caller_info, call_number);
 }
 
 static void __set_caller_info_phone_number_and_name(callui_view_incoming_call_noti_h vd, const callui_call_data_t *call_data, const char *call_number)
 {
        const char *call_name = call_data->call_ct_info.call_disp_name;
-       elm_object_signal_emit(vd->layout, "show_three_lines", "active_noti_main");
+       elm_object_signal_emit(vd->main_ly, "show_three_lines", "active_noti_main");
        if (_callui_common_is_display_contact_name_support_rtl(call_data->call_ct_info.call_disp_name_type)) {
-               elm_object_part_text_set(vd->layout, "text.contact_name", call_name);
+               elm_object_part_text_set(vd->main_ly, "text.contact_name", call_name);
        } else {
                char *enclosed_call_name = _callui_bidi_text_utils_enclose_text(call_name, CALLUI_BIDI_TEXT_ENCLOSE_LRM);
-               elm_object_part_text_set(vd->layout, "text.contact_name", enclosed_call_name);
+               elm_object_part_text_set(vd->main_ly, "text.contact_name", enclosed_call_name);
                free(enclosed_call_name);
        }
-       elm_object_part_text_set(vd->layout, "text.contact_number", call_number);
+       elm_object_part_text_set(vd->main_ly, "text.contact_number", call_number);
+
+       char buff[CALLUI_BUFF_SIZE_HUG] = { '\0' };
+       snprintf(buff, CALLUI_BUFF_SIZE_HUG, "%s, %s", call_name, call_number);
+       elm_atspi_accessible_name_set(vd->base_view.ao_caller_info, buff);
+}
+
+static void __update_caller_info_text(callui_view_incoming_call_noti_h vd, const callui_call_data_t *call_data)
+{
+       char *enclosed_call_number = _callui_bidi_text_utils_enclose_text(call_data->call_num, CALLUI_BIDI_TEXT_ENCLOSE_LRM);
+       if (STRING_EMPTY(call_data->call_num)) {
+               __set_caller_info_unknown_number(vd);
+       } else if (STRING_EMPTY(call_data->call_ct_info.call_disp_name)) {
+               __set_caller_info_phone_number(vd, enclosed_call_number);
+       } else {
+               __set_caller_info_phone_number_and_name(vd, call_data, enclosed_call_number);
+       }
+       free(enclosed_call_number);
+}
+
+static callui_result_e __create_dim_rectangle(callui_view_incoming_call_noti_h vd, Evas_Object *parent)
+{
+       vd->base_view.contents = evas_object_rectangle_add(evas_object_evas_get(parent));
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       evas_object_size_hint_weight_set(vd->base_view.contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(vd->base_view.contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_color_set(vd->base_view.contents, CALLUI_REJ_MSG_DIMMER_COLOR, CALLUI_REJ_MSG_DIMMER_ALPHA_START);
+       elm_object_part_content_set(parent, "elm.swallow.content", vd->base_view.contents);
+       evas_object_show(vd->base_view.contents);
+
+       return CALLUI_RESULT_OK;
+}
+
+static void __contact_info_click_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_view_incoming_call_noti_h vd = data;
+       _callui_vm_change_view(vd->base_view.ad->view_manager, CALLUI_VIEW_INCOMING_CALL);
+}
+
+static callui_result_e __create_main_layout(callui_view_incoming_call_noti_h vd, Evas_Object *parent)
+{
+       vd->main_ly = elm_layout_add(parent);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->main_ly, CALLUI_RESULT_ALLOCATION_FAIL);
+       evas_object_event_callback_add(vd->main_ly, EVAS_CALLBACK_CHANGED_SIZE_HINTS, __layout_changed_hints_cb, vd);
+       elm_layout_theme_set(vd->main_ly, "layout", "callui", CALLUI_LY_STYLE_ACTIVE_NOTI_CALL_MAIN);
+       evas_object_size_hint_weight_set(vd->main_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(vd->main_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_object_signal_callback_add(vd->main_ly, "contact_info.clicked", "active_noti_main", __contact_info_click_cb, vd);
+
+       elm_object_part_content_set(parent, "elm.swallow.active_noti", vd->main_ly);
+
+       return CALLUI_RESULT_OK;
+}
+
+static callui_result_e __create_answer_call_btn(callui_view_incoming_call_noti_h vd)
+{
+       Evas_Object *answer_btn = __create_action_btn(vd, CALLUI_BTN_STYLE_AN_ACCEPT_CALL, CALLUI_GROUP_AN_ACCEPT_CALL_ICON,
+                       NULL, __call_action_btn_click_cb, CALLUI_APP_CONTROL_OPERATION_DURING_CALL);
+       CALLUI_RETURN_VALUE_IF_FAIL(answer_btn, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_atspi_accessible_translation_domain_set(answer_btn, CALLUI_TEXT_DOMAIN);
+       elm_atspi_accessible_name_set(answer_btn, "IDS_CALL_HEADER_ANSWER_CALL_ABB");
+
+       elm_object_part_content_set(vd->main_ly, "swallow.call_accept_btn", answer_btn);
+
+       return CALLUI_RESULT_OK;
+}
+
+static callui_result_e __create_reject_call_btn(callui_view_incoming_call_noti_h vd)
+{
+       Evas_Object *reject_btn = __create_action_btn(vd, CALLUI_BTN_STYLE_AN_REJECT_CALL, CALLUI_GROUP_AN_REJECT_CALL_ICON,
+                       NULL, __call_action_btn_click_cb, CALLUI_APP_CONTROL_OPERATION_END_CALL);
+       CALLUI_RETURN_VALUE_IF_FAIL(reject_btn, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_atspi_accessible_translation_domain_set(reject_btn, CALLUI_TEXT_DOMAIN);
+       elm_atspi_accessible_name_set(reject_btn, "IDS_CALL_BUTTON_REJECT");
+
+       elm_object_part_content_set(vd->main_ly, "swallow.call_reject_btn", reject_btn);
+
+       return CALLUI_RESULT_OK;
+}
+
+static callui_result_e __create_reject_message_btn(callui_view_incoming_call_noti_h vd)
+{
+       vd->rm_btn = __create_action_btn(vd, CALLUI_BTN_STYLE_AN_REJECT_CALL_WITH_MSG,
+                       NULL, "IDS_VCALL_BUTTON2_REJECT_CALL_WITH_MESSAGE", __reject_msg_btn_click_cb, vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->rm_btn, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_atspi_accessible_translation_domain_set(vd->rm_btn, CALLUI_TEXT_DOMAIN);
+       elm_atspi_accessible_name_set(vd->rm_btn, "IDS_VCALL_BUTTON2_REJECT_CALL_WITH_MESSAGE");
+       elm_atspi_accessible_description_set(vd->rm_btn, "IDS_CALL_TBBODY_DOUBLE_TAP_TO_OPEN_REJECT_MESSAGE_LIST");
+
+       elm_object_part_content_set(vd->main_ly, "swallow.reject_msg_btn", vd->rm_btn);
+
+       return CALLUI_RESULT_OK;
 }
 
 static callui_result_e __update_displayed_data(callui_view_incoming_call_noti_h vd)
@@ -939,32 +1020,19 @@ static callui_result_e __update_displayed_data(callui_view_incoming_call_noti_h
        const callui_call_data_t *incom = _callui_stp_get_call_data(ad->state_provider, CALLUI_CALL_DATA_INCOMING);
        CALLUI_RETURN_VALUE_IF_FAIL(incom, CALLUI_RESULT_FAIL);
 
-       elm_object_translatable_part_text_set(vd->layout, "text.status", "IDS_CALL_BODY_INCOMING_CALL");
+       elm_object_translatable_part_text_set(vd->main_ly, "text.status", "IDS_CALL_BODY_INCOMING_CALL");
+       elm_atspi_accessible_name_set(vd->base_view.ao_call_status, "IDS_CALL_BODY_INCOMING_CALL");
 
-       char *enclosed_call_number = _callui_bidi_text_utils_enclose_text(incom->call_num, CALLUI_BIDI_TEXT_ENCLOSE_LRM);
-       if (STRING_EMPTY(incom->call_num)) {
-               __set_caller_info_unknown_number(vd);
-       } else if (STRING_EMPTY(incom->call_ct_info.call_disp_name)) {
-               __set_caller_info_phone_number(vd, enclosed_call_number);
-       } else {
-               __set_caller_info_phone_number_and_name(vd, incom, enclosed_call_number);
-       }
-       free(enclosed_call_number);
+       __update_caller_info_text(vd, incom);
 
        if (!STRING_EMPTY(incom->call_num)) {
-               Evas_Object *reject_msg_btn = __create_btn(vd,
-                               CALLUI_BTN_STYLE_AN_REJECT_CALL_WITH_MSG,
-                               NULL,
-                               "IDS_VCALL_BUTTON2_REJECT_CALL_WITH_MESSAGE",
-                               __show_reject_msg_btn_click_cb,
-                               vd);
-               CALLUI_RETURN_VALUE_IF_FAIL(reject_msg_btn, CALLUI_RESULT_ALLOCATION_FAIL);
-               elm_object_part_content_set(vd->layout, "swallow.reject_msg_btn", reject_msg_btn);
+               callui_result_e res = __create_reject_message_btn(vd);
+               CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
        }
 
-       _callui_caller_info_set_caller_image(vd->layout, incom);
+       _callui_caller_info_set_caller_image(vd->main_ly, incom);
 
-       evas_object_show(vd->layout);
+       evas_object_show(vd->main_ly);
 
        return CALLUI_RESULT_OK;
 }
@@ -1105,7 +1173,6 @@ static void __rm_calc_available_size(callui_view_incoming_call_noti_h vd)
                break;
        default:
                return;
-               break;
        }
        dbg("Available RM scroller height - [%d]",  vd->rm_scroller_available_h);
 }
@@ -1122,7 +1189,7 @@ static void __move_active_noti(callui_view_incoming_call_noti_h vd)
                        new_x = (ad->root_h - ad->root_w - ACTIVE_NOTI_LANDSCAPE_L_PAD);
                }
        }
-       evas_object_move(vd->layout, new_x, 0);
+       evas_object_move(vd->main_ly, new_x, 0);
 }
 
 static void __parent_resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
@@ -1137,3 +1204,20 @@ static void __parent_resize_cb(void *data, Evas *evas, Evas_Object *obj, void *e
        vd->rm_actualize_state &= ~CALLUI_REJ_MSG_UPDATE_AVAILABLE_SIZE;
        __rm_try_actualize(vd);
 }
+
+/* Accessibility */
+
+static callui_result_e __create_accessible_objects(callui_view_incoming_call_noti_h vd)
+{
+       vd->base_view.ao_call_status = _callui_au_register_accessible_object(vd->main_ly, vd->main_ly, "call_status.access");
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.ao_call_status, CALLUI_RESULT_FAIL);
+       elm_atspi_accessible_translation_domain_set(vd->base_view.ao_call_status, CALLUI_TEXT_DOMAIN);
+       elm_atspi_accessible_reading_info_type_set(vd->base_view.ao_call_status, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
+
+       vd->base_view.ao_caller_info = _callui_au_register_accessible_object(vd->main_ly, vd->main_ly, "contact_info.access");
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.ao_caller_info, CALLUI_RESULT_FAIL);
+       elm_atspi_accessible_translation_domain_set(vd->base_view.ao_caller_info, CALLUI_TEXT_DOMAIN);
+       elm_atspi_accessible_reading_info_type_set(vd->base_view.ao_caller_info, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
+
+       return CALLUI_RESULT_OK;
+}