#include "callui-sound-manager.h"
#include "callui-state-provider.h"
#include "callui-bidi-text-utils.h"
+#include "callui-accessibility-utils.h"
#define CALLUI_LY_STYLE_QUICKPANEL "quickpanel"
} callui_qp_mc_btn_type_e;
struct _callui_qp_mc {
- Evas_Object *win_quickpanel;
- Evas_Object *quickpanel_layout;
- Evas_Object *caller_id;
+ Evas_Object *win;
+ Evas_Object *main_ly;
bool is_activated;
int rotate_angle;
callui_app_data_t *ad;
Evas_Object *buttons[CALLUI_QP_BTN_COUNT];
bool is_available[CALLUI_QP_BTN_COUNT];
+ bool is_active[CALLUI_QP_BTN_COUNT];
Ecore_Timer *call_duration_timer;
struct tm *call_duration_tm;
+
+ /* Accessible objects */
+ Evas_Object *ao_caller_info;
+ Evas_Object *ao_call_status;
};
typedef struct _callui_qp_mc callui_qp_mc_t;
struct __btn_params {
char *part;
+ char *name;
Evas_Smart_Cb click_cb_func;
btn_update_func update_func;
__btn_style_t style;
static void __update_resume_btn(callui_qp_mc_h qp);
static void __update_mute_btn(callui_qp_mc_h qp);
static void __update_speaker_btn(callui_qp_mc_h qp);
+static void __update_end_btn(callui_qp_mc_h qp);
-static void __set_caller_info_emergency_name(Evas_Object *eo);
-static void __set_caller_info_unknown_name(Evas_Object *eo);
-static void __set_caller_info_phone_number(Evas_Object *eo, const char *call_number);
-static void __set_caller_info_caller_name(Evas_Object *eo, const callui_call_data_t *call_data);
-static void __set_caller_info_conference_call(Evas_Object *eo);
+static void __set_caller_info_emergency_name(callui_qp_mc_h qp);
+static void __set_caller_info_unknown_name(callui_qp_mc_h qp);
+static void __set_caller_info_phone_number(callui_qp_mc_h qp, const char *call_number);
+static void __set_caller_info_caller_name(callui_qp_mc_h qp, const callui_call_data_t *call_data);
+static void __set_caller_info_conference_call(callui_qp_mc_h qp);
static __btn_params_t btn_params[CALLUI_QP_BTN_COUNT] = {
{
- "swallow.call_button",__caller_btn_click_cb, __update_call_btn,
- {"callui_qp_btn_call", NULL}
+ "swallow.call_button", "IDS_CALL_HEADER_ANSWER_CALL_ABB", __caller_btn_click_cb,
+ __update_call_btn, {"callui_qp_btn_call", NULL}
},
{
- "swallow.resume_button", __resume_btn_click_cb, __update_resume_btn,
- {"callui_qp_btn_resume", "callui_qp_btn_resume_on"}
+ "swallow.resume_button", "IDS_CALL_BUTTON_RESUME_ABB", __resume_btn_click_cb,
+ __update_resume_btn, {"callui_qp_btn_resume", "callui_qp_btn_resume_on"}
},
{
- "swallow.mute_button", __mute_btn_click_cb, __update_mute_btn,
- {"callui_qp_btn_mute", "callui_qp_btn_mute_on"}
+ "swallow.mute_button", "IDS_CALL_BUTTON_MUTE_ABB", __mute_btn_click_cb,
+ __update_mute_btn, {"callui_qp_btn_mute", "callui_qp_btn_mute_on"}
},
{
- "swallow.speaker_button", __speaker_btn_click_cb, __update_speaker_btn,
- {"callui_qp_btn_speaker", "callui_qp_btn_speaker_on"}
+ "swallow.speaker_button", "IDS_CALL_BUTTON_SPEAKER", __speaker_btn_click_cb,
+ __update_speaker_btn, {"callui_qp_btn_speaker", "callui_qp_btn_speaker_on"}
},
{
- "swallow.end_button", __end_btn_click_cb, NULL,
- {"callui_qp_btn_end", NULL}
+ "swallow.end_button", "IDS_CALL_SK3_END_CALL", __end_btn_click_cb,
+ __update_end_btn, {"callui_qp_btn_end", NULL}
}
};
static void __hide_minicontrol(callui_qp_mc_h qp);
static void __main_layout_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
-static void __update_caller_info(Evas_Object *eo, const callui_call_data_t *call_data);
+static void __update_caller_info(callui_qp_mc_h qp, const callui_call_data_t *call_data);
static void __update_layout_components(callui_qp_mc_h qp);
static void __minicontrol_provider_cb(minicontrol_viewer_event_e event_type, bundle *event_arg);
static void __update_all_btns_state(callui_qp_mc_h qp);
static void __update_all_btns(callui_qp_mc_h qp);
+static void __update_btn_accessibility_info(callui_qp_mc_h qp, callui_qp_mc_btn_type_e type);
+
+static callui_result_e __create_accessible_objects(callui_qp_mc_h qp);
+static void __destroy_accessible_objects(callui_qp_mc_h qp);
static void __call_state_event_cb(void *user_data,
callui_call_event_type_e call_event_type,
free(qp);
}
+static void __update_btn_accessibility_info(callui_qp_mc_h qp, callui_qp_mc_btn_type_e type)
+{
+ CALLUI_RETURN_IF_FAIL(qp);
+ CALLUI_RETURN_IF_FAIL((type >= CALLUI_QP_BTN_CALL && type < CALLUI_QP_BTN_COUNT));
+
+ Evas_Object *btn = qp->buttons[type];
+ CALLUI_RETURN_IF_FAIL(btn);
+
+ switch (type) {
+ case CALLUI_QP_BTN_SPEAKER:
+ case CALLUI_QP_BTN_MUTE:
+ {
+ char buff[CALLUI_BUFF_SIZE_HUG] = { '\0' };
+ snprintf(buff,
+ CALLUI_BUFF_SIZE_HUG,
+ "%s, %s",
+ (qp->is_active[type]? _("IDS_STORYALBUM_BODY_ON_T_TTS"):_("IDS_STORYALBUM_BODY_OFF_T_TTS")),
+ (qp->is_available[type]? "":_("IDS_GCTS_OPT_DIMMED_TTS")));
+ elm_atspi_accessible_description_set(btn, buff);
+ }
+ break;
+ case CALLUI_QP_BTN_CALL:
+ case CALLUI_QP_BTN_RESUME:
+ elm_atspi_accessible_description_set(btn, ((qp->is_available[type])? "" : "IDS_GCTS_OPT_DIMMED_TTS" ));
+ break;
+ case CALLUI_QP_BTN_END:
+ if (_callui_stp_get_call_data(qp->ad->state_provider, CALLUI_CALL_DATA_INCOMING)) {
+ elm_atspi_accessible_name_set(btn, "IDS_KM_OPT_REJECT_CALL_TTS");
+ } else {
+ elm_atspi_accessible_name_set(btn, btn_params[CALLUI_QP_BTN_END].name);
+ }
+ elm_atspi_accessible_description_set(btn, ((qp->is_available[type])? "" : "IDS_GCTS_OPT_DIMMED_TTS" ));
+ break;
+ default:
+ return;
+ }
+}
+
+callui_result_e _callui_qp_mc_update_accessibility_info(callui_qp_mc_h qp)
+{
+ CALLUI_RETURN_VALUE_IF_FAIL(qp, CALLUI_RESULT_INVALID_PARAM);
+
+ if (!qp->is_activated) {
+ dbg("Ignored. Quick panel minicontrol is not active");
+ }
+
+ int i = 0;
+ for (; i < CALLUI_QP_BTN_COUNT; i++) {
+ __update_btn_accessibility_info(qp, i);
+ }
+ return CALLUI_RESULT_OK;
+}
+
static void __caller_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
{
CALLUI_RETURN_IF_FAIL(data);
static void __hide_minicontrol(callui_qp_mc_h qp)
{
- minicontrol_send_event(qp->win_quickpanel, MINICONTROL_PROVIDER_EVENT_REQUEST_HIDE, NULL);
+ minicontrol_send_event(qp->win, MINICONTROL_PROVIDER_EVENT_REQUEST_HIDE, NULL);
}
-static void __set_caller_info_emergency_name(Evas_Object *eo)
+static void __set_caller_info_emergency_name(callui_qp_mc_h qp)
{
- elm_object_translatable_part_text_set(eo, CALLUI_QP_PART_CONTACT_NAME, "IDS_COM_BODY_EMERGENCY_NUMBER");
+ elm_object_translatable_part_text_set(qp->main_ly, CALLUI_QP_PART_CONTACT_NAME, "IDS_COM_BODY_EMERGENCY_NUMBER");
+
+ elm_atspi_accessible_name_set(qp->ao_caller_info, "IDS_KM_BODY_EMERGENCY_CALL_TTS");
}
-static void __set_caller_info_unknown_name(Evas_Object *eo)
+static void __set_caller_info_unknown_name(callui_qp_mc_h qp)
{
- elm_object_translatable_part_text_set(eo, CALLUI_QP_PART_CONTACT_NAME, "IDS_CALL_BODY_UNKNOWN");
+ elm_object_translatable_part_text_set(qp->main_ly, CALLUI_QP_PART_CONTACT_NAME, "IDS_CALL_BODY_UNKNOWN");
+
+ elm_atspi_accessible_name_set(qp->ao_caller_info, "IDS_CALL_BODY_UNKNOWN");
}
-static void __set_caller_info_conference_call(Evas_Object *eo)
+static void __set_caller_info_conference_call(callui_qp_mc_h qp)
{
- elm_object_translatable_part_text_set(eo, CALLUI_QP_PART_CONTACT_NAME, "IDS_CALL_OPT_CONFERENCE_CALL");
+ elm_object_translatable_part_text_set(qp->main_ly, CALLUI_QP_PART_CONTACT_NAME, "IDS_CALL_OPT_CONFERENCE_CALL");
+
+ elm_atspi_accessible_name_set(qp->ao_caller_info, "IDS_CALL_OPT_CONFERENCE_CALL");
}
-static void __set_caller_info_phone_number(Evas_Object *eo, const char *call_number)
+static void __set_caller_info_phone_number(callui_qp_mc_h qp, const char *call_number)
{
char *enclosed_call_number = _callui_bidi_text_utils_enclose_text(call_number, CALLUI_BIDI_TEXT_ENCLOSE_LRM);
- elm_object_part_text_set(eo, CALLUI_QP_PART_CONTACT_NAME, enclosed_call_number);
+ elm_object_part_text_set(qp->main_ly, CALLUI_QP_PART_CONTACT_NAME, enclosed_call_number);
free(enclosed_call_number);
+
+ elm_atspi_accessible_name_set(qp->ao_caller_info, call_number);
}
-static void __set_caller_info_caller_name(Evas_Object *eo, const callui_call_data_t *call_data)
+static void __set_caller_info_caller_name(callui_qp_mc_h qp, const callui_call_data_t *call_data)
{
if (_callui_common_is_display_contact_name_support_rtl(call_data->call_ct_info.call_disp_name_type)) {
- elm_object_part_text_set(eo, CALLUI_QP_PART_CONTACT_NAME, call_data->call_ct_info.call_disp_name);
+ elm_object_part_text_set(qp->main_ly, CALLUI_QP_PART_CONTACT_NAME, call_data->call_ct_info.call_disp_name);
} else {
char *enclosed_call_name = _callui_bidi_text_utils_enclose_text(call_data->call_ct_info.call_disp_name, CALLUI_BIDI_TEXT_ENCLOSE_LRM);
- elm_object_part_text_set(eo, CALLUI_QP_PART_CONTACT_NAME, enclosed_call_name);
+ elm_object_part_text_set(qp->main_ly, CALLUI_QP_PART_CONTACT_NAME, enclosed_call_name);
free(enclosed_call_name);
}
+
+ elm_atspi_accessible_name_set(qp->ao_caller_info, call_data->call_ct_info.call_disp_name);
}
-static void __update_caller_info(Evas_Object *eo, const callui_call_data_t *call_data)
+static void __update_caller_info(callui_qp_mc_h qp, const callui_call_data_t *call_data)
{
- CALLUI_RETURN_IF_FAIL(eo);
- CALLUI_RETURN_IF_FAIL(call_data);
-
if (call_data->is_emergency) {
- __set_caller_info_emergency_name(eo);
+ __set_caller_info_emergency_name(qp);
} else if (call_data->conf_member_count > 1) {
- __set_caller_info_conference_call(eo);
+ __set_caller_info_conference_call(qp);
} else if (STRING_EMPTY(call_data->call_num)) {
- __set_caller_info_unknown_name(eo);
+ __set_caller_info_unknown_name(qp);
} else if (STRING_EMPTY(call_data->call_ct_info.call_disp_name)) {
- __set_caller_info_phone_number(eo, call_data->call_num);
+ __set_caller_info_phone_number(qp, call_data->call_num);
} else {
- __set_caller_info_caller_name(eo, call_data);
+ __set_caller_info_caller_name(qp, call_data);
}
- _callui_caller_info_set_caller_image(eo, call_data);
+ _callui_caller_info_set_caller_image(qp->main_ly, call_data);
}
static void __set_split_call_duration_time(struct tm *time, Evas_Object *obj, const char *txt_part)
return ECORE_CALLBACK_CANCEL;
}
- _callui_common_try_update_call_duration_time(qp->call_duration_tm,
- new_tm,
- __set_split_call_duration_time,
- qp->quickpanel_layout,
- CALLUI_QP_PART_TIMER);
-
+ _callui_common_try_update_call_duration_time(qp->call_duration_tm, new_tm,
+ __set_split_call_duration_time, qp->main_ly, CALLUI_QP_PART_TIMER);
free(new_tm);
+ elm_atspi_accessible_name_set(qp->ao_call_status, elm_object_part_text_get(qp->main_ly, CALLUI_QP_PART_TIMER));
+
return ECORE_CALLBACK_RENEW;
}
return ECORE_CALLBACK_CANCEL;
}
- _callui_common_try_update_call_duration_time(qp->call_duration_tm,
- new_tm,
- _callui_common_set_call_duration_time,
- qp->quickpanel_layout,
- CALLUI_QP_PART_TIMER);
-
+ _callui_common_try_update_call_duration_time(qp->call_duration_tm, new_tm,
+ _callui_common_set_call_duration_time, qp->main_ly, CALLUI_QP_PART_TIMER);
free(new_tm);
+ elm_atspi_accessible_name_set(qp->ao_call_status, elm_object_part_text_get(qp->main_ly, CALLUI_QP_PART_TIMER));
+
return ECORE_CALLBACK_RENEW;
}
{
qp->call_duration_tm = _callui_stp_get_call_duration(qp->ad->state_provider, CALLUI_CALL_DATA_ACTIVE);
CALLUI_RETURN_IF_FAIL(qp->call_duration_tm);
- __set_split_call_duration_time(qp->call_duration_tm, qp->quickpanel_layout, CALLUI_QP_PART_TIMER);
+ __set_split_call_duration_time(qp->call_duration_tm, qp->main_ly, CALLUI_QP_PART_TIMER);
+ elm_atspi_accessible_name_set(qp->ao_call_status, elm_object_part_text_get(qp->main_ly, CALLUI_QP_PART_TIMER));
qp->call_duration_timer = ecore_timer_add(0.1, __split_call_duration_timer_cb, qp);
CALLUI_RETURN_IF_FAIL(qp->call_duration_timer);
{
qp->call_duration_tm = _callui_stp_get_call_duration(qp->ad->state_provider, CALLUI_CALL_DATA_ACTIVE);
CALLUI_RETURN_IF_FAIL(qp->call_duration_tm);
- _callui_common_set_call_duration_time(qp->call_duration_tm, qp->quickpanel_layout, CALLUI_QP_PART_TIMER);
+ _callui_common_set_call_duration_time(qp->call_duration_tm, qp->main_ly, CALLUI_QP_PART_TIMER);
+ elm_atspi_accessible_name_set(qp->ao_call_status, elm_object_part_text_get(qp->main_ly, CALLUI_QP_PART_TIMER));
qp->call_duration_timer = ecore_timer_add(0.1, __active_call_duration_timer_cb, qp);
CALLUI_RETURN_IF_FAIL(qp->call_duration_timer);
static void __update_layout_components(callui_qp_mc_h qp)
{
- callui_app_data_t *ad = qp->ad;
- Evas_Object *eo = qp->quickpanel_layout;
-
__update_all_btns_state(qp);
__update_all_btns(qp);
__deinit_call_duration_timer(qp);
- const callui_call_data_t *incom = _callui_stp_get_call_data(ad->state_provider,
+ const callui_call_data_t *incom = _callui_stp_get_call_data(qp->ad->state_provider,
CALLUI_CALL_DATA_INCOMING);
- const callui_call_data_t *active = _callui_stp_get_call_data(ad->state_provider,
+ const callui_call_data_t *active = _callui_stp_get_call_data(qp->ad->state_provider,
CALLUI_CALL_DATA_ACTIVE);
- const callui_call_data_t *held = _callui_stp_get_call_data(ad->state_provider,
+ const callui_call_data_t *held = _callui_stp_get_call_data(qp->ad->state_provider,
CALLUI_CALL_DATA_HELD);
if (incom) {
- __update_caller_info(eo, incom);
- elm_object_signal_emit(eo, "incoming_call", "");
- elm_object_translatable_part_text_set(eo, CALLUI_QP_PART_TIMER, "IDS_CALL_BODY_INCOMING_CALL");
+ __update_caller_info(qp, incom);
+ elm_object_signal_emit(qp->main_ly, "incoming_call", "");
+ elm_object_translatable_part_text_set(qp->main_ly, CALLUI_QP_PART_TIMER, "IDS_CALL_BODY_INCOMING_CALL");
+ elm_atspi_accessible_name_set(qp->ao_call_status, "IDS_CALL_BODY_INCOMING_CALL");
} else if (active && active->is_dialing) {
- __update_caller_info(eo, active);
- elm_object_signal_emit(eo, "outgoing_call", "");
- elm_object_translatable_part_text_set(eo, CALLUI_QP_PART_TIMER, "IDS_CALL_POP_DIALLING");
+ __update_caller_info(qp, active);
+ elm_object_signal_emit(qp->main_ly, "outgoing_call", "");
+ elm_object_translatable_part_text_set(qp->main_ly, CALLUI_QP_PART_TIMER, "IDS_CALL_POP_DIALLING");
+ elm_atspi_accessible_name_set(qp->ao_call_status, "IDS_CALL_POP_DIALLING");
} else if (active) {
- __update_caller_info(eo, active);
- elm_object_signal_emit(eo, "during_call", "");
+ __update_caller_info(qp, active);
+ elm_object_signal_emit(qp->main_ly, "during_call", "");
if (held) {
__init_split_call_duration_timer(qp);
} else {
__init_active_call_duration_timer(qp);
}
} else if (held) {
- __update_caller_info(eo, held);
- elm_object_signal_emit(eo, "resume_call", "");
- elm_object_translatable_part_text_set(eo, CALLUI_QP_PART_TIMER, "IDS_CALL_BODY_ON_HOLD_ABB");
+ __update_caller_info(qp, held);
+ elm_object_signal_emit(qp->main_ly, "resume_call", "");
+ elm_object_translatable_part_text_set(qp->main_ly, CALLUI_QP_PART_TIMER, "IDS_CALL_BODY_ON_HOLD_ABB");
+ elm_atspi_accessible_name_set(qp->ao_call_status, "IDS_CALL_BODY_ON_HOLD_ABB");
} else {
dbg("incoming call. error!");
}
static Evas_Object *__create_qp_btn(callui_qp_mc_h qp, callui_qp_mc_btn_type_e type)
{
- Evas_Object *btn = elm_button_add(qp->quickpanel_layout);
+ Evas_Object *btn = elm_button_add(qp->main_ly);
CALLUI_RETURN_NULL_IF_FAIL(btn);
elm_object_style_set(btn, btn_params[type].style.normal);
- elm_object_part_content_set(qp->quickpanel_layout, btn_params[type].part, btn);
+ elm_object_part_content_set(qp->main_ly, btn_params[type].part, btn);
evas_object_smart_callback_add(btn, "clicked", btn_params[type].click_cb_func, qp);
evas_object_propagate_events_set(btn, EINA_FALSE);
+
+ /* Accessibility */
+ elm_atspi_accessible_reading_info_type_set(btn,
+ ELM_ACCESSIBLE_READING_INFO_TYPE_NAME |
+ ELM_ACCESSIBLE_READING_INFO_TYPE_ROLE |
+ ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION);
+ elm_atspi_accessible_translation_domain_set(btn, CALLUI_TEXT_DOMAIN);
+ elm_atspi_accessible_name_set(btn, btn_params[type].name);
+
return btn;
}
_g_ad = qp->ad;
- if (!qp->win_quickpanel) {
- qp->win_quickpanel = __create_window(qp->ad);
- if (qp->win_quickpanel == NULL) {
+ if (!qp->win) {
+ qp->win = __create_window(qp->ad);
+ if (qp->win == NULL) {
err("__create_window() FAILED!");
return CALLUI_RESULT_FAIL;
}
- qp->rotate_angle = elm_win_rotation_get(qp->win_quickpanel);
+ qp->rotate_angle = elm_win_rotation_get(qp->win);
dbg("current rotate angle(%d)", qp->rotate_angle);
- qp->quickpanel_layout = _callui_create_layout(qp->win_quickpanel, CALLUI_LY_STYLE_QUICKPANEL);
- if (qp->quickpanel_layout == NULL) {
+ qp->main_ly = _callui_create_layout(qp->win, CALLUI_LY_STYLE_QUICKPANEL);
+ if (qp->main_ly == NULL) {
err("__callui_qp_mc_create_contents() FAILED!");
return CALLUI_RESULT_FAIL;
}
- elm_win_resize_object_add(qp->win_quickpanel, qp->quickpanel_layout);
- evas_object_event_callback_add(qp->quickpanel_layout, EVAS_CALLBACK_MOUSE_UP,
+ elm_win_resize_object_add(qp->win, qp->main_ly);
+ evas_object_event_callback_add(qp->main_ly, EVAS_CALLBACK_MOUSE_UP,
__main_layout_mouse_up_cb, qp);
qp->buttons[i] = __create_qp_btn(qp, i);
qp->is_available[i] = true;
}
+
+ if (__create_accessible_objects(qp) != CALLUI_RESULT_OK) {
+ err("Create accessible objects failed.");
+ }
}
qp->is_activated = true;
if (qp->rotate_angle == 0 || qp->rotate_angle == 180) {
dbg("portrait mode layout");
- evas_object_resize(qp->win_quickpanel, qp->ad->root_w, ELM_SCALE_SIZE(QP_WIN_H));
+ evas_object_resize(qp->win, qp->ad->root_w, ELM_SCALE_SIZE(QP_WIN_H));
} else if (qp->rotate_angle == 90 || qp->rotate_angle == 270) {
dbg("landscape mode layout");
- evas_object_resize(qp->win_quickpanel, qp->ad->root_h, ELM_SCALE_SIZE(QP_WIN_H));
+ evas_object_resize(qp->win, qp->ad->root_h, ELM_SCALE_SIZE(QP_WIN_H));
}
__update_layout_components(qp);
- evas_object_show(qp->win_quickpanel);
- evas_object_show(qp->quickpanel_layout);
+ evas_object_show(qp->win);
+ evas_object_show(qp->main_ly);
/* Prohibit remove of mini control */
- minicontrol_send_event(qp->win_quickpanel, MINICONTROL_EVENT_REQUEST_LOCK, NULL);
+ minicontrol_send_event(qp->win, MINICONTROL_EVENT_REQUEST_LOCK, NULL);
}
static void __deactivate(callui_qp_mc_h qp)
qp->is_activated = false;
+ __destroy_accessible_objects(qp);
+
int i = 0;
for (; i < CALLUI_QP_BTN_COUNT; i++) {
evas_object_smart_callback_del_full(qp->buttons[i], "clicked", btn_params[i].click_cb_func, qp);
qp->is_available[i] = true;
}
- if (qp->caller_id) {
- evas_object_del(qp->caller_id);
- }
-
- if (qp->quickpanel_layout) {
- evas_object_event_callback_del_full(qp->quickpanel_layout, EVAS_CALLBACK_MOUSE_UP,
+ if (qp->main_ly) {
+ evas_object_event_callback_del_full(qp->main_ly, EVAS_CALLBACK_MOUSE_UP,
__main_layout_mouse_up_cb, qp);
- evas_object_del(qp->quickpanel_layout);
- qp->quickpanel_layout = NULL;
+ evas_object_del(qp->main_ly);
+ qp->main_ly = NULL;
}
- if (qp->win_quickpanel) {
- evas_object_del(qp->win_quickpanel);
- qp->win_quickpanel = NULL;
+ if (qp->win) {
+ evas_object_del(qp->win);
+ qp->win = NULL;
}
__deinit_call_duration_timer(qp);
CALLUI_RETURN_IF_FAIL(btn);
elm_object_disabled_set(btn, !qp->is_available[CALLUI_QP_BTN_CALL]);
+
+ __update_btn_accessibility_info(qp, CALLUI_QP_BTN_CALL);
}
static void __update_resume_btn(callui_qp_mc_h qp)
_callui_stp_get_call_data(qp->ad->state_provider, CALLUI_CALL_DATA_HELD);
if (held) {
elm_object_style_set(btn, btn_params[CALLUI_QP_BTN_RESUME].style.normal);
+ qp->is_active[CALLUI_QP_BTN_RESUME] = false;
} else {
elm_object_style_set(btn, btn_params[CALLUI_QP_BTN_RESUME].style.active);
+ qp->is_active[CALLUI_QP_BTN_RESUME] = true;
}
elm_object_disabled_set(btn, !qp->is_available[CALLUI_QP_BTN_RESUME]);
+
+ __update_btn_accessibility_info(qp, CALLUI_QP_BTN_RESUME);
}
static void __update_speaker_btn(callui_qp_mc_h qp)
callui_audio_state_type_e audio_state = _callui_sdm_get_audio_state(qp->ad->sound_manager);
if (audio_state != CALLUI_AUDIO_STATE_SPEAKER) {
elm_object_style_set(btn, btn_params[CALLUI_QP_BTN_SPEAKER].style.normal);
+ qp->is_active[CALLUI_QP_BTN_SPEAKER] = false;
} else {
elm_object_style_set(btn, btn_params[CALLUI_QP_BTN_SPEAKER].style.active);
+ qp->is_active[CALLUI_QP_BTN_SPEAKER] = true;
}
elm_object_disabled_set(btn, !qp->is_available[CALLUI_QP_BTN_SPEAKER]);
+
+ __update_btn_accessibility_info(qp, CALLUI_QP_BTN_SPEAKER);
+}
+
+static void __update_end_btn(callui_qp_mc_h qp)
+{
+ Evas_Object *btn = qp->buttons[CALLUI_QP_BTN_END];
+ CALLUI_RETURN_IF_FAIL(btn);
+
+ __update_btn_accessibility_info(qp, CALLUI_QP_BTN_END);
}
static void __update_mute_btn(callui_qp_mc_h qp)
if (_callui_sdm_get_mute_state(qp->ad->sound_manager)) {
elm_object_style_set(btn, btn_params[CALLUI_QP_BTN_MUTE].style.active);
+ qp->is_active[CALLUI_QP_BTN_MUTE] = true;
} else {
elm_object_style_set(btn, btn_params[CALLUI_QP_BTN_MUTE].style.normal);
+ qp->is_active[CALLUI_QP_BTN_MUTE] = false;
}
elm_object_disabled_set(btn, !qp->is_available[CALLUI_QP_BTN_MUTE]);
+
+ __update_btn_accessibility_info(qp, CALLUI_QP_BTN_MUTE);
}
static void __resume_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
err("__end_btn_click_cb() failed. res[%d]", res);
}
}
+
+static callui_result_e __create_accessible_objects(callui_qp_mc_h qp)
+{
+ qp->ao_caller_info = _callui_au_register_accessible_object(qp->main_ly, qp->main_ly, "contact_name.access");
+ CALLUI_RETURN_VALUE_IF_FAIL(qp->ao_caller_info, CALLUI_RESULT_FAIL);
+ elm_atspi_accessible_translation_domain_set(qp->ao_caller_info, CALLUI_TEXT_DOMAIN);
+ elm_atspi_accessible_reading_info_type_set(qp->ao_caller_info, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
+
+ qp->ao_call_status = _callui_au_register_accessible_object(qp->main_ly, qp->main_ly, "txt_timer.access");
+ CALLUI_RETURN_VALUE_IF_FAIL(qp->ao_call_status, CALLUI_RESULT_FAIL);
+ elm_atspi_accessible_translation_domain_set(qp->ao_call_status, CALLUI_TEXT_DOMAIN);
+ elm_atspi_accessible_reading_info_type_set(qp->ao_call_status, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
+
+ return CALLUI_RESULT_OK;
+}
+
+static void __destroy_accessible_objects(callui_qp_mc_h qp)
+{
+ _callui_au_unregister_accessible_object(qp->ao_caller_info);
+ DELETE_EVAS_OBJECT(qp->ao_caller_info);
+ _callui_au_unregister_accessible_object(qp->ao_call_status);
+ DELETE_EVAS_OBJECT(qp->ao_call_status);
+}