}
}
-group { name: "elm/button/base/callui/add_contact";
- images {
- image: "core_button_add.png" COMP;
- }
- parts {
- CU_PART_IMAGE( "btn",
- description { state: "default" 0.0;
- fixed: 1 1;
- min: CI_EC_ADD_CONT_BTN_SIZE;
- max: CI_EC_ADD_CONT_BTN_SIZE;
- image.normal: "core_button_add.png";
- color: COLOR_WHITE;
- }
- )
- CU_PART_RECT( "over",
- mouse_events: 1;
- description { state: "default" 0.0;
- color: COLOR_BG_ALPHA;
- rel1 { relative: 0.0 0.0; to: "btn"; }
- rel2 { relative: 1.0 1.0; to: "btn"; }
- }
- )
- }
- programs {
- program { name: "mouse_clicked";
- signal: "mouse,clicked,1";
- source: "over";
- after: "touch_sound";
- after: "clicked_signal";
- }
- program { name: "touch_sound";
- action: RUN_PLUGIN "touch_sound";
- }
- program { name: "clicked_signal";
- in: 0.001 0.0;
- action: SIGNAL_EMIT "elm,action,click" "";
- }
- }
-}
-
group{
name: "elm/layout/callui/caller_info";
images {
min: CI_MANAGE_CALLS_BTN_SIZE;
max: CI_MANAGE_CALLS_BTN_SIZE;
align: 1 1;
+ fixed: 1 1;
}
description { state: "hide" 0.0;
inherit: "default" 0.0;
inherit: "default" 0.0;
}
)
- CU_PART_SPACER( "add_contact.base",
+ CU_PART_IMAGE( "ec_add_contact_img",
description { state: "default" 0.0;
+ visible: 0;
fixed: 1 1;
align: 1.0 0.0;
min: CI_EC_ADD_CONT_BTN_SIZE;
max: CI_EC_ADD_CONT_BTN_SIZE;
rel1 { relative: 0.0 1.0; to_x: "ec_add_cont.padding.left"; to_y: "ec_add_cont.padding.top"; }
rel2 { relative: 0.0 1.0; to_x: "ec_add_cont.padding.left"; }
- }
- )
- CU_PART_SWALLOW( "swl.add_contact",
- description { state: "default" 0.0;
- visible: 0;
- fixed: 1 1;
- rel1 { relative: 0.0 0.0; to: "add_contact.base"; }
- rel2 { relative: 1.0 1.0; to: "add_contact.base"; }
+ image.normal: "core_button_add.png";
+ color: COLOR_WHITE;
}
description { state: "show" 0.0;
inherit: "default" 0.0;
inherit: "default" 0.0;
}
)
+ CU_PART_RECT( "ec_add_contact.click_area",
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ visible: 0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 1.0; to: "bg"; }
+ color: COLOR_BG_ALPHA;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ }
+ )
// ACCESSIBILITY: CONFERENCE CALL
}
program { name: "show_ec_add_cont_btn";
action: STATE_SET "show" 0.0;
- target: "swl.add_contact";
+ target: "ec_add_contact_img";
+ target: "ec_add_contact.click_area";
}
program { name: "hide_add_contact_btn";
action: STATE_SET "hide" 0.0;
- target: "swl.add_contact";
+ target: "ec_add_contact_img";
+ target: "ec_add_contact.click_area";
}
program { name: "try_show_ec_add_cont_btn";
script {
}
}
}
+ program { name: "contact_info_area_clicked";
+ signal: "mouse,clicked,1";
+ source: "ec_add_contact.click_area";
+ after: "touch_sound";
+ after: "contact_info_area_clicked_signal";
+ }
+ program { name: "touch_sound";
+ action: RUN_PLUGIN "touch_sound";
+ }
+ program { name: "contact_info_area_clicked_signal";
+ in: 0.001 0.0;
+ action: SIGNAL_EMIT "add_contact_area.clicked" "caller_info";
+ }
// MINIMIZE / MAXIMIZE START LOGIC
#define CALLUI_CALLER_INFO_EC_PART_NAME "ec_contact_name"
#define CALLUI_CALLER_INFO_EC_PART_NUMBER "ec_phone_number"
-#define CALLUI_BTN_STYLE_ADD_CONTACT "callui/add_contact"
-
#define CALLUI_ENDING_TIMER_INTERVAL 2.0
#define CALLUI_BLINKING_TIMER_INTERVAL 0.5
#define CALLUI_BLINKING_MAX_COUNT 5
Evas_Object *callback_btn;
Evas_Object *message_btn;
- Evas_Object *add_contact;
Evas_Object *contact_popup;
Evas_Object *reply_btns_box;
Ecore_Timer *ending_timer;
char *time_string;
int blink_count;
+
+ /* Accessibility */
+ Evas_Object *ao_add_contact;
};
typedef struct _callui_view_callend _callui_view_callend_t;
static void __create_contact_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
static void __update_contact_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
static void __popup_close_by_user_event_cb(void *data, Evas_Object *obj, void *event_info);
-static void __add_contact_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __add_contact_area_click_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static Eina_Bool __add_contact_area_activate_cb(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info);
+static void __show_add_contact_popup(callui_view_callend_h vd, Evas_Object *obj);
static Eina_Bool __ending_timer_expired_cb(void *data);
static Eina_Bool __ending_timer_blink_cb(void *data);
static Evas_Object *__create_message_btn(callui_view_callend_h vd);
static Evas_Object *__create_reply_btns_divider(callui_view_callend_h vd);
-static Evas_Object *__create_add_contact_btn(callui_view_callend_h vd);
-
static bool __set_caller_info(callui_view_callend_h vd, const callui_call_data_t *call_data);
static void __set_caller_info_emergency_name(callui_view_callend_h vd);
static void __bg_mouse_down_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
static void __minimize_anim_completed_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
static void __maximize_anim_completed_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void __view_ly_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
static void __run_minimize_animation(callui_view_callend_h vd);
static void __run_maximize_animation(callui_view_callend_h vd);
_callui_action_bar_hide(vd->base_view.ad->action_bar);
edje_object_signal_callback_del_full(_EDJ(vd->base_view.contents), "mouse,down,*", "background", __bg_mouse_down_cb, vd);
+ eext_object_event_callback_del(vd->base_view.contents, EEXT_CALLBACK_BACK, __view_ly_back_btn_clicked_cb);
DELETE_EVAS_OBJECT(vd->contact_popup);
DELETE_EVAS_OBJECT(vd->base_view.contents);
_callui_action_bar_set_access_possibility(ad->action_bar, false);
}
+static void __view_ly_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ _callui_common_exit_app();
+}
+
static callui_result_e __create_main_content(callui_view_callend_h vd, Evas_Object *parent)
{
vd->base_view.contents = _callui_create_layout(parent, CALLUI_LY_STYLE_ENDCALL_VIEW);
elm_object_signal_callback_add(vd->base_view.contents,
"maximize.anim.finished", "end_call_view", __maximize_anim_completed_cb, vd);
+ eext_object_event_callback_add(vd->base_view.contents, EEXT_CALLBACK_BACK, __view_ly_back_btn_clicked_cb, NULL);
+
vd->caller_info = _callui_create_layout(vd->base_view.contents, CALLUI_LY_STYLE_CALLER_INFO);
CALLUI_RETURN_VALUE_IF_FAIL(vd->caller_info, CALLUI_RESULT_ALLOCATION_FAIL);
elm_object_part_content_set(vd->base_view.contents, CALLUI_PART_SWL_CALLER_INFO, vd->caller_info);
- vd->add_contact = __create_add_contact_btn(vd);
- CALLUI_RETURN_VALUE_IF_FAIL(vd->add_contact, CALLUI_RESULT_ALLOCATION_FAIL);
- elm_object_part_content_set(vd->caller_info, "swl.add_contact", vd->add_contact);
+ if (!_callui_dpm_is_need_enforce_change_password(vd->base_view.ad->dpm)) {
+ elm_object_signal_callback_add(vd->caller_info, "add_contact_area.clicked", "caller_info", __add_contact_area_click_cb, vd);
+ }
Evas_Object *end_call_btn = _callui_create_end_call_button(vd->base_view.contents, NULL, NULL);
CALLUI_RETURN_VALUE_IF_FAIL(end_call_btn, CALLUI_RESULT_ALLOCATION_FAIL);
return eo;
}
-static Evas_Object *__create_add_contact_btn(callui_view_callend_h vd)
-{
- Evas_Object *eo = elm_button_add(vd->base_view.contents);
- CALLUI_RETURN_NULL_IF_FAIL(eo);
- elm_object_style_set(eo, CALLUI_BTN_STYLE_ADD_CONTACT);
-
- if (!_callui_dpm_is_need_enforce_change_password(vd->base_view.ad->dpm)) {
- evas_object_smart_callback_add(eo, "clicked", __add_contact_click_cb, vd);
- }
-
- elm_atspi_accessible_translation_domain_set(eo, CALLUI_TEXT_DOMAIN);
- elm_atspi_accessible_name_set(eo, "IDS_COM_OPT_ADD_TO_CONTACTS");
-
- return eo;
-}
-
static void __set_caller_info_emergency_name(callui_view_callend_h vd)
{
elm_object_signal_emit(vd->caller_info, "1line", "caller_name");
}
}
-static void __add_contact_click_cb(void *data, Evas_Object *obj, void *event_info)
+static void __show_add_contact_popup(callui_view_callend_h vd, Evas_Object *obj)
{
- CALLUI_RETURN_IF_FAIL(data);
-
- callui_view_callend_h vd = data;
-
if (vd->ending_timer) {
ecore_timer_freeze(vd->ending_timer);
} else if (vd->blink_timer) {
evas_object_show(vd->contact_popup);
}
+static Eina_Bool __add_contact_area_activate_cb(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info)
+{
+ CALLUI_RETURN_VALUE_IF_FAIL(data, EINA_FALSE);
+
+ if (action_info->action_type == ELM_ACCESS_ACTION_ACTIVATE) {
+ callui_view_callend_h vd = (callui_view_callend_h)data;
+ __show_add_contact_popup(vd, vd->base_view.contents);
+ return EINA_TRUE;
+ }
+ return EINA_FALSE;
+}
+
+static void __add_contact_area_click_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ CALLUI_RETURN_IF_FAIL(data);
+
+ callui_view_callend_h vd = (callui_view_callend_h)data;
+
+ __show_add_contact_popup(vd, obj);
+}
+
static void __msg_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
{
CALLUI_RETURN_IF_FAIL(data);
{
elm_atspi_component_highlight_clear(vd->base_view.ao_call_status);
elm_atspi_component_highlight_clear(vd->base_view.ao_caller_info);
- elm_atspi_component_highlight_clear(vd->add_contact);
+ elm_atspi_component_highlight_clear(vd->ao_add_contact);
if (vd->reply_btns_box) {
elm_atspi_component_highlight_clear(vd->callback_btn);
elm_atspi_component_highlight_clear(vd->message_btn);
{
elm_atspi_accessible_can_highlight_set(vd->base_view.ao_call_status, EINA_FALSE);
elm_atspi_accessible_can_highlight_set(vd->base_view.ao_caller_info, EINA_FALSE);
- elm_atspi_accessible_can_highlight_set(vd->add_contact, EINA_FALSE);
+ elm_atspi_accessible_can_highlight_set(vd->ao_add_contact, EINA_FALSE);
if (vd->reply_btns_box) {
elm_atspi_accessible_can_highlight_set(vd->callback_btn, EINA_FALSE);
elm_atspi_accessible_can_highlight_set(vd->message_btn, EINA_FALSE);
elm_atspi_accessible_reading_info_type_set(vd->base_view.ao_caller_info, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
elm_atspi_accessible_name_set(vd->base_view.ao_caller_info, vd->ao_caller_info_buff);
+ vd->ao_add_contact = _callui_au_register_accessible_object(vd->caller_info, vd->caller_info, "ec_add_contact_img");
+ CALLUI_RETURN_VALUE_IF_FAIL(vd->ao_add_contact, CALLUI_RESULT_FAIL);
+ elm_atspi_accessible_translation_domain_set(vd->ao_add_contact, CALLUI_TEXT_DOMAIN);
+ elm_atspi_accessible_role_set(vd->ao_add_contact, ELM_ATSPI_ROLE_PUSH_BUTTON);
+ elm_atspi_accessible_reading_info_type_set(vd->ao_add_contact, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
+ elm_atspi_accessible_name_set(vd->ao_add_contact, "IDS_COM_OPT_ADD_TO_CONTACTS");
+ if (!_callui_dpm_is_need_enforce_change_password(vd->base_view.ad->dpm)) {
+ elm_access_action_cb_set(vd->ao_add_contact, ELM_ACCESS_ACTION_ACTIVATE, __add_contact_area_activate_cb, vd);
+ }
+
return CALLUI_RESULT_OK;
}
DELETE_EVAS_OBJECT(vd->base_view.ao_call_status);
_callui_au_unregister_accessible_object(vd->base_view.ao_caller_info);
DELETE_EVAS_OBJECT(vd->base_view.ao_caller_info);
+ _callui_au_unregister_accessible_object(vd->ao_add_contact);
+ DELETE_EVAS_OBJECT(vd->base_view.ao_caller_info);
}
static void __register_accessibility_rout(callui_view_callend_h vd)
res = _callui_au_append_symmetric_relationship(vd->base_view.ao_call_status, vd->base_view.ao_caller_info);
CALLUI_RETURN_IF_FAIL(res == CALLUI_RESULT_OK);
- res = _callui_au_append_symmetric_relationship(vd->base_view.ao_caller_info, vd->add_contact);
+ res = _callui_au_append_symmetric_relationship(vd->base_view.ao_caller_info, vd->ao_add_contact);
CALLUI_RETURN_IF_FAIL(res == CALLUI_RESULT_OK);
if (vd->reply_btns_box) {
- res = _callui_au_append_symmetric_relationship(vd->add_contact, vd->callback_btn);
+ res = _callui_au_append_symmetric_relationship(vd->ao_add_contact, vd->callback_btn);
CALLUI_RETURN_IF_FAIL(res == CALLUI_RESULT_OK);
res = _callui_au_append_symmetric_relationship(vd->callback_btn, vd->message_btn);
res = _callui_au_append_relationship_end_point(vd->message_btn);
CALLUI_RETURN_IF_FAIL(res == CALLUI_RESULT_OK);
} else {
- res = _callui_au_append_relationship_end_point(vd->add_contact);
+ res = _callui_au_append_relationship_end_point(vd->ao_add_contact);
CALLUI_RETURN_IF_FAIL(res == CALLUI_RESULT_OK);
}
}
{
_callui_au_remove_symmetric_relationship(vd->base_view.ao_first, vd->base_view.ao_call_status);
_callui_au_remove_symmetric_relationship(vd->base_view.ao_call_status, vd->base_view.ao_caller_info);
- _callui_au_remove_symmetric_relationship(vd->base_view.ao_caller_info, vd->add_contact);
+ _callui_au_remove_symmetric_relationship(vd->base_view.ao_caller_info, vd->ao_add_contact);
if (vd->reply_btns_box) {
- _callui_au_remove_symmetric_relationship(vd->add_contact, vd->callback_btn);
+ _callui_au_remove_symmetric_relationship(vd->ao_add_contact, vd->callback_btn);
_callui_au_remove_symmetric_relationship(vd->callback_btn, vd->message_btn);
_callui_au_remove_relationship_end_point(vd->message_btn);
} else {
- _callui_au_remove_relationship_end_point(vd->add_contact);
+ _callui_au_remove_relationship_end_point(vd->ao_add_contact);
}
}
static void __delete_more_menu_popup(callui_vm_h vm)
{
if (vm->more_ctxpopup) {
+ dbg("Delete more menu ctxpopup");
evas_object_event_callback_del_full(vm->more_ctxpopup, EVAS_CALLBACK_DEL, __more_menu_popup_delete_cb, vm);
DELETE_EVAS_OBJECT(vm->more_ctxpopup);
}
CALLUI_RETURN_IF_FAIL(data);
callui_vm_h vm = (callui_vm_h)data;
- evas_object_event_callback_del_full(vm->more_ctxpopup, EVAS_CALLBACK_DEL, __more_menu_popup_delete_cb, vm);
- vm->more_ctxpopup = NULL;
+ if (vm->more_ctxpopup) {
+ dbg("Delete more menu ctxpopup");
+ evas_object_event_callback_del_full(vm->more_ctxpopup, EVAS_CALLBACK_DEL, __more_menu_popup_delete_cb, vm);
+ vm->more_ctxpopup = NULL;
+ }
}
static void __more_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
{
+ debug_enter();
+
CALLUI_RETURN_IF_FAIL(data);
callui_vm_h vm = (callui_vm_h)data;
CALLUI_RETURN_IF_FAIL(data);
callui_vm_h vm = (callui_vm_h)data;
- evas_object_event_callback_del_full(vm->action_popup, EVAS_CALLBACK_DEL, __action_popup_del_cb, vm);
- vm->action_popup = NULL;
- vm->action_popup_type = CALLUI_ACTION_POPUP_UNDEFINED;
+ if (vm->action_popup) {
+ dbg("Delete action popup [%d]", vm->action_popup_type);
+ evas_object_event_callback_del_full(vm->action_popup, EVAS_CALLBACK_DEL, __action_popup_del_cb, vm);
+ vm->action_popup = NULL;
+ vm->action_popup_type = CALLUI_ACTION_POPUP_UNDEFINED;
+ }
}
static void __delete_action_popup(callui_vm_h vm)
{
if (vm->action_popup) {
+ dbg("Delete action popup [%d]", vm->action_popup_type);
evas_object_event_callback_del_full(vm->action_popup, EVAS_CALLBACK_DEL, __action_popup_del_cb, vm);
DELETE_EVAS_OBJECT(vm->action_popup);
vm->action_popup_type = CALLUI_ACTION_POPUP_UNDEFINED;