From 6ad5d088e5152c73511fd1a9d07ac2a6f4044504 Mon Sep 17 00:00:00 2001 From: raster Date: Fri, 19 Aug 2011 11:47:30 +0000 Subject: [PATCH] and now add a "clicked" say... when u click. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@62587 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/Elementary.h.in | 10 ++++++++++ src/lib/elm_access.c | 18 ++++++++++++++++++ src/lib/elm_button.c | 4 +++- src/lib/elm_main.c | 6 ++++++ src/lib/elm_widget.c | 19 +++++++++++++++++++ src/lib/elm_widget.h | 3 +++ 6 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 41c4b30..c7f3af3 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -1059,6 +1059,16 @@ extern "C" { */ EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part); + /** + * Set the text to read out when in accessibility mode + * + * @param obj The object which is described + * @param txt The text that describes the widget to people with poor or no vision + * + * @ingroup General + */ + EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt); + #define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL) /** diff --git a/src/lib/elm_access.c b/src/lib/elm_access.c index d441d63..b32d22a 100644 --- a/src/lib/elm_access.c +++ b/src/lib/elm_access.c @@ -217,6 +217,24 @@ _elm_access_read(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Ite if (txt) free(txt); } +EAPI void +_elm_access_say(const char *txt) +{ + _access_init(); + if (mapi) + { + if (mapi->out_done_callback_set) + mapi->out_done_callback_set(_access_read_done, NULL); + if (mapi->out_cancel) mapi->out_cancel(); + if (txt) + { + if (mapi->out_read) mapi->out_read(txt); + if (mapi->out_read) mapi->out_read(".\n"); + } + if (mapi->out_read_done) mapi->out_read_done(); + } +} + EAPI Elm_Access_Info * _elm_access_object_get(Evas_Object *obj) { diff --git a/src/lib/elm_button.c b/src/lib/elm_button.c index 848f8dc..04faaf9 100644 --- a/src/lib/elm_button.c +++ b/src/lib/elm_button.c @@ -212,6 +212,7 @@ _activate(Evas_Object *obj) wd->timer = NULL; } wd->repeating = EINA_FALSE; + _elm_access_say(E_("Clicked")); evas_object_smart_callback_call(obj, SIG_CLICKED, NULL); } @@ -319,7 +320,8 @@ _elm_button_label_get(const Evas_Object *obj, const char *item) static char * _access_info_cb(const void *data __UNUSED__, Evas_Object *obj, Elm_Widget_Item *item __UNUSED__) { - char *txt = (char *)_elm_button_label_get(obj, NULL); + char *txt = (char *)elm_widget_access_info_get(obj); + if (!txt) txt = (char *)_elm_button_label_get(obj, NULL); if (txt) return strdup(txt); return txt; } diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c index 89ca775..037b3b8 100644 --- a/src/lib/elm_main.c +++ b/src/lib/elm_main.c @@ -2074,3 +2074,9 @@ elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part) { return elm_widget_item_text_part_get(it, part); } + +EAPI void +elm_object_access_info_set(Evas_Object *obj, const char *txt) +{ + elm_widget_access_info_set(obj, txt); +} diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index aa6778d..0b9253e 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -89,6 +89,7 @@ struct _Smart_Data double scale; Elm_Theme *theme; const char *style; + const char *access_info; unsigned int focus_order; Eina_Bool focus_order_on_calc; @@ -2238,6 +2239,23 @@ elm_widget_content_part_unset(Evas_Object *obj, const char *part) return sd->on_content_unset_func(obj, part); } +EAPI void +elm_widget_access_info_set(Evas_Object *obj, const char *txt) +{ + API_ENTRY return; + if (sd->access_info) eina_stringshare_del(sd->access_info); + if (!txt) sd->access_info = NULL; + else sd->access_info = eina_stringshare_add(txt); +} + +EAPI const char * +elm_widget_access_info_get(Evas_Object *obj) +{ + API_ENTRY return NULL; + return sd->access_info; +} + + EAPI Elm_Theme * elm_widget_theme_get(const Evas_Object *obj) { @@ -3189,6 +3207,7 @@ _smart_del(Evas_Object *obj) if (sd->type) eina_stringshare_del(sd->type); if (sd->theme) elm_theme_free(sd->theme); _if_focused_revert(obj, EINA_TRUE); + if (sd->access_info) eina_stringshare_del(sd->access_info); free(sd); } diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index 9706e49..c35070f 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -229,6 +229,7 @@ EAPI void _elm_access_text_set(Elm_Access_Info *ac, int type, const EAPI void _elm_access_callback_set(Elm_Access_Info *ac, int type, Elm_Access_Content_Cb func, const void *data); EAPI char *_elm_access_text_get(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item); EAPI void _elm_access_read(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item); +EAPI void _elm_access_say(const char *txt); EAPI Elm_Access_Info *_elm_access_object_get(Evas_Object *obj); EAPI void _elm_access_object_register(Evas_Object *obj, Evas_Object *hoverobj); @@ -403,6 +404,8 @@ EAPI const char *elm_widget_text_part_get(const Evas_Object *obj, const cha EAPI void elm_widget_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content); EAPI Evas_Object *elm_widget_content_part_get(const Evas_Object *obj, const char *part); EAPI Evas_Object *elm_widget_content_part_unset(Evas_Object *obj, const char *part); +EAPI void elm_widget_access_info_set(Evas_Object *obj, const char *txt); +EAPI const char *elm_widget_access_info_get(Evas_Object *obj); EAPI Elm_Widget_Item *_elm_widget_item_new(Evas_Object *parent, size_t alloc_size); EAPI void _elm_widget_item_del(Elm_Widget_Item *item); EAPI void _elm_widget_item_pre_notify_del(Elm_Widget_Item *item); -- 2.7.4