and now add a "clicked" say... when u click.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 19 Aug 2011 11:47:30 +0000 (11:47 +0000)
committerMike McCormack <mj.mccormack@samsung.com>
Mon, 14 Nov 2011 07:46:00 +0000 (16:46 +0900)
git-svn-id: https://svn.enlightenment.org/svn/e/trunk/elementary@62587 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/Elementary.h.in
src/lib/elm_access.c
src/lib/elm_button.c
src/lib/elm_main.c
src/lib/elm_widget.c
src/lib/elm_widget.h

index a3d9795..3e32d6d 100644 (file)
@@ -1170,6 +1170,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)
 
    /**
index d441d63..b32d22a 100644 (file)
@@ -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)
 {
index 7f784ea..402346e 100644 (file)
@@ -306,6 +306,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);
 }
 
@@ -428,7 +429,8 @@ _elm_button_label_get(const Evas_Object *obj, const char *item)
 static char *
 _access_info_cb(const void *data, Evas_Object *obj, Elm_Widget_Item *item)
 {
-   const char *txt = _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;
 }
index 3f151fb..40d05a2 100644 (file)
@@ -2208,3 +2208,9 @@ elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const cha
 {
    elm_widget_item_signal_emit(it, emission, source);
 }
+
+EAPI void
+elm_object_access_info_set(Evas_Object *obj, const char *txt)
+{
+   elm_widget_access_info_set(obj, txt);
+}
index 90dde24..c44c734 100644 (file)
@@ -90,6 +90,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;
 
@@ -2364,6 +2365,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)
 {
@@ -3351,6 +3369,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);
 }
 
index f8690c9..2938db7 100644 (file)
@@ -230,6 +230,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);
 
@@ -408,6 +409,8 @@ EAPI const char      *elm_widget_translatable_text_part_get(const Evas_Object *o
 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);