From 8b288f7f69282cac33d6620281628e70027c74f2 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Fri, 8 Jul 2016 19:42:45 +0900 Subject: Accessibility: support elm_access used for embedded toolkit Change-Id: Ie136e9c22cc7e8cfe4be8a40e915d4218c929520 --- src/accessibility/screen_reader/access_object.c | 41 ++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/src/accessibility/screen_reader/access_object.c b/src/accessibility/screen_reader/access_object.c index cbcc013..53aa5cc 100644 --- a/src/accessibility/screen_reader/access_object.c +++ b/src/accessibility/screen_reader/access_object.c @@ -17,28 +17,59 @@ #include "main.h" +static int highlight_keep_count = 0; + static Eina_Bool _access_action_cb(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info) { + char buf[1024]; + char *action_by; Evas_Object *label; - dlog_print(DLOG_DEBUG, LOG_TAG, "action type: %d", action_info->action_type); + dlog_print(DLOG_DEBUG, LOG_TAG, "action type: %d, action_by: %d", action_info->action_type, action_info->action_by); label = data; switch (action_info->action_type) { case ELM_ACCESS_ACTION_HIGHLIGHT: - elm_object_text_set(label, "HIGHLIGHT"); + if (action_info->action_by == ELM_ACCESS_ACTION_HIGHLIGHT_NEXT) { + highlight_keep_count = 1; + action_by = "Next"; + } + else if (action_info->action_by == ELM_ACCESS_ACTION_HIGHLIGHT_PREV) { + highlight_keep_count = 3; + action_by = "Prev"; + } + else { + highlight_keep_count = 2; + action_by = "Default"; + } + + snprintf(buf, sizeof(buf), "HIGHLIGHT by %s (index: %d)", action_by, highlight_keep_count); + elm_object_text_set(label, buf); break; case ELM_ACCESS_ACTION_UNHIGHLIGHT: - elm_object_text_set(label, "UNHIGHLIGHT"); + highlight_keep_count = 0; + snprintf(buf, sizeof(buf), "UNHIGHLIGHT (index restored: %d)", highlight_keep_count); + elm_object_text_set(label, buf); break; case ELM_ACCESS_ACTION_HIGHLIGHT_NEXT: - elm_object_text_set(label, "HIGHLIGHT NEXT"); + highlight_keep_count++; + if (highlight_keep_count > 3) return EINA_FALSE; + /* keep the highlight on the access object */ + snprintf(buf, sizeof(buf), "HIGHLIGHT NEXT (index: %d)", highlight_keep_count); + elm_object_text_set(label, buf); + return EINA_TRUE; break; case ELM_ACCESS_ACTION_HIGHLIGHT_PREV: - elm_object_text_set(label, "HIGHLIGHT PREV"); + highlight_keep_count--; + if (highlight_keep_count < 1) return EINA_FALSE; + + /* keep the highlight on the access object */ + snprintf(buf, sizeof(buf), "HIGHLIGHT PREV (index: %d)", highlight_keep_count); + elm_object_text_set(label, buf); + return EINA_TRUE; break; case ELM_ACCESS_ACTION_ACTIVATE: -- cgit v1.2.3