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)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 19 Aug 2011 11:47:30 +0000 (11:47 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/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 41c4b30..c7f3af3 100644 (file)
@@ -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)
 
    /**
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 848f8dc..04faaf9 100644 (file)
@@ -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;
 }
index 89ca775..037b3b8 100644 (file)
@@ -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);
+}
index aa6778d..0b9253e 100644 (file)
@@ -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);
 }
 
index 9706e49..c35070f 100644 (file)
@@ -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);