[access] read at once - Tizen TTS engine performance issue
[framework/uifw/elementary.git] / src / lib / elm_access.h
1 /**
2  * @defgroup Access Access
3  * @ingroup Elementary
4  *
5  * TODO: description
6  *
7  */
8
9 enum _Elm_Access_Info_Type
10 {
11    ELM_ACCESS_INFO_FIRST = -1,
12    ELM_ACCESS_INFO,         /* next read is info - this is
13                              * normally label */
14    ELM_ACCESS_TYPE,         /* when reading out widget or item
15                              * this is read first */
16    ELM_ACCESS_STATE,        /* if there is a state (eg checkbox)
17                              * then read state out */
18    ELM_ACCESS_CONTEXT_INFO, /* to give contextual information */
19    ELM_ACCESS_INFO_LAST
20 };
21
22 /**
23  * @typedef Elm_Access_Info_Type
24  */
25 typedef enum _Elm_Access_Info_Type Elm_Access_Info_Type;
26
27 typedef char *(*Elm_Access_Info_Cb)(void *data, Evas_Object *obj);
28 typedef void (*Elm_Access_Activate_Cb)(void *data, Evas_Object *part_obj, Elm_Object_Item *item);
29
30 /**
31  * @brief Register evas object as an accessible object.
32  * @since 1.8
33  *
34  * @param obj The evas object to register as an accessible object.
35  * @param parent The elementary object which is used for creating
36  * accessible object.
37  *
38  * @ingroup Access
39  */
40 EAPI Evas_Object *elm_access_object_register(Evas_Object *obj, Evas_Object *parent);
41
42 /**
43  * @brief Unregister accessible object.
44  * @since 1.8
45  *
46  * @param obj The Evas object to unregister accessible object.
47  *
48  * @ingroup Access
49  */
50 EAPI void elm_access_object_unregister(Evas_Object *obj);
51
52 /**
53  * @brief Get an accessible object of the evas object.
54  * @since 1.8
55  *
56  * @param obj The evas object.
57  * @return Accessible object of the evas object or NULL for any error
58  *
59  * @ingroup Access
60  */
61 EAPI Evas_Object *elm_access_object_get(const Evas_Object *obj);
62
63 /**
64  * @brief Set text to give information for specific type.
65  * @since 1.8
66  *
67  * @param obj Accessible object.
68  * @param type The type of content that will be read
69  * @param text The text information that will be read
70  *
71  * @see elm_access_info_cb_set
72  * @ingroup Access
73  */
74 EAPI void elm_access_info_set(Evas_Object *obj, int type, const char *text);
75
76 /**
77  * @brief Set text to give information for specific type.
78  * @since 1.8
79  *
80  * @param obj Accessible object.
81  * @param type The type of content that will be read
82  *
83  * @see elm_access_info_cb_set
84  * @ingroup Access
85  */
86 EAPI char *elm_access_info_get(const Evas_Object *obj, int type);
87
88 /**
89  * @brief Set content callback to give information for specific type.
90  * @since 1.8
91  *
92  * @param obj Accessible object.
93  * @param type The type of content that will be read
94  * @param func The function to be called when the content is read
95  * @param data The data pointer to be passed to @p func
96  *
97  * The type would be one of ELM_ACCESS_TYPE, ELM_ACCESS_INFO,
98  * ELM_ACCESS_STATE, ELM_ACCESS_CONTEXT_INFO.
99  *
100  * In the case of button widget, the content of ELM_ACCESS_TYPE would be
101  * "button". The label of button such as "ok", "cancel" is for ELM_ACCESS_INFO.
102  * If the button is disabled, content of ELM_ACCESS_STATE would be "disabled".
103  * And if there is contextual information, use ELM_ACCESS_CONTEXT_INFO.
104  *
105  * @ingroup Access
106  */
107 EAPI void elm_access_info_cb_set(Evas_Object *obj, int type, Elm_Access_Info_Cb func, const void *data);
108
109 /**
110  * @brief Set activate callback to activate highlight object.
111  * @since 1.8
112  *
113  * @param obj Accessible object.
114  * @param func The function to be called when the activate gesture is detected
115  * @param data The data pointer to be passed to @p func
116  *
117  * @ingroup Access
118  */
119 EAPI void elm_access_activate_cb_set(Evas_Object *obj, Elm_Access_Activate_Cb func, void *data);
120
121 /**
122  * @brief Read out text information directly.
123  * @since 1.8
124  *
125  * @param text The text information that will be read
126  *
127  * This function will not free the @p text internally.
128  *
129  * @ingroup Access
130  */
131 EAPI void elm_access_say(const char *text);
132
133 /**
134  * @brief Give the highlight to the object directly.
135  * @since 1.8
136  *
137  * @param obj The object that will have the highlight and its information be read.
138  *
139  * The object should be an elementary object or an access object.
140  *
141  * @see elm_access_object_get
142  * @ingroup Access
143  */
144 EAPI void elm_access_highlight_set(Evas_Object* obj);
145
146 //TODO: remvoe below - use elm_access_text_set(); or elm_access_cb_set();
147 EINA_DEPRECATED EAPI void elm_access_external_info_set(Evas_Object *obj, const char *text);
148 EINA_DEPRECATED EAPI char *elm_access_external_info_get(const Evas_Object *obj);