Fix issue that not read out text in popup when screen reader is on 93/103993/1
authorsungwook79.park <sungwook79.park@samsung.com>
Mon, 12 Dec 2016 05:07:29 +0000 (14:07 +0900)
committersungwook79.park <sungwook79.park@samsung.com>
Mon, 12 Dec 2016 05:07:29 +0000 (14:07 +0900)
Change-Id: Iff16be14b2bd628ffe8ec7719d8156ae5c880ef5
Signed-off-by: sungwook79.park <sungwook79.park@samsung.com>
src/option.cpp

index c706d4f..4110813 100644 (file)
@@ -155,6 +155,9 @@ static void check_sound_change_callback(void *data, Evas_Object *obj, void *even
 static void check_vibration_change_callback(void *data, Evas_Object *obj, void *event_info);
 static void check_character_pre_change_callback(void *data, Evas_Object *obj, void *event_info);
 
+static char* _accessible_body_name_cb(void *data, Evas_Object *obj);
+static void* _screen_reader_information_set(Evas_Object *obj);
+
 std::vector<ILanguageOption*> LanguageOptionManager::language_option_vector;
 void LanguageOptionManager::add_language_option(ILanguageOption *language_option) {
     language_option_vector.push_back(language_option);
@@ -232,6 +235,25 @@ static Evas_Object *create_popup_button(Evas_Object *parent, const char *style,
     return btn;
 }
 
+static char*
+_accessible_body_name_cb(void *data, Evas_Object *obj)
+{
+    Evas_Object *layout = (Evas_Object *)data;
+    return strdup(elm_object_part_text_get(layout, "elm.text"));
+}
+
+static void*
+_screen_reader_information_set(Evas_Object *obj)
+{
+    Evas_Object *to, *ao;
+    to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(obj), "elm.text");
+    if (to) {
+        ao = elm_access_object_register(to, obj);
+        elm_atspi_accessible_name_cb_set(ao, _accessible_body_name_cb, obj);
+        elm_atspi_accessible_reading_info_type_set(ao, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
+    }
+}
+
 static void reset_settings_popup(void *data, Evas_Object *obj, void *event_info)
 {
     const char *icon_path = NULL;
@@ -246,8 +268,11 @@ static void reset_settings_popup(void *data, Evas_Object *obj, void *event_info)
 
     Evas_Object *layout = elm_layout_add(popup);
     elm_layout_theme_set(layout, "layout", "popup", "content/circle/buttons2");
-    elm_object_domain_translatable_text_set(layout, PACKAGE, RESET_SETTINGS_POPUP_TEXT);
+    elm_object_domain_translatable_part_text_set(layout, "elm.text", PACKAGE, RESET_SETTINGS_POPUP_TEXT);
     elm_object_content_set(popup, layout);
+
+    /* accessibility */
+    _screen_reader_information_set(layout);
 #else
     elm_object_domain_translatable_text_set(popup, PACKAGE, RESET_SETTINGS_POPUP_TEXT);
     elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE, RESET_SETTINGS_POPUP_TITLE_TEXT);