#define TTS_MAX_TEXT_SIZE 2000
-unsigned short int reading_composer_reading_attribute_get(
- AtspiAccessibleReadingMaterial *rm);
-
-void reading_composer_reading_material_free(AtspiAccessibleReadingMaterial *rm);
+typedef AtspiAccessibleReadingMaterial ReadingComposerData;
/**
* @brief This function should return "physical" textual representation o UI element,
*/
char* reading_composer_name_get(AtspiAccessible *obj);
+/**
+ * @brief This function gets object description by ipc.
+ */
+ReadingComposerData* reading_composer_data_get(AtspiAccessible *obj);
+
+/**
+ * @brief This function frees memory allocated for object description.
+ */
+void reading_composer_data_free(ReadingComposerData *data);
+
/**
* @brief Similar to reading_composer_name_get but enriches above definition with
* "static" metadata which is not rendered in GUI, such as role name, etc.
*/
-char* reading_composer_description_get(AtspiAccessible *obj);
+char* reading_composer_description_get(ReadingComposerData *data);
/**
* @brief This function provides only "dynamic" metadata describing what
* user interactions are possible for given UI element. This mapps
* to A11Y "description" attribute.
*/
-void reading_composer_extended_description_get(
- AtspiAccessible *obj,
- char **base_desc,
- char **ext_desc);
+char* reading_composer_extended_description_get(ReadingComposerData *data);
#endif
-
return trait;
}
+static
unsigned short int reading_composer_reading_attribute_get(AtspiAccessibleReadingMaterial *rm)
{
unsigned short int attribute = 0;
return attribute;
}
+static
void reading_composer_reading_material_free(AtspiAccessibleReadingMaterial *rm)
{
if (rm->parent)
return ret;
}
-char* reading_composer_description_get(AtspiAccessible *obj)
+char* reading_composer_description_get(ReadingComposerData *data)
{
- char *result;
- reading_composer_extended_description_get(obj, &result, NULL);
- return result;
-}
-
-void reading_composer_extended_description_get(
- AtspiAccessible *obj,
- char **base_desc,
- char **ext_desc)
-{
- if(base_desc)
- *base_desc = NULL;
- if(ext_desc)
- *ext_desc = NULL;
-
DEBUG("START");
char *name = NULL;
- char *description = NULL;
char *role_name = NULL;
- Eina_Strbuf *buf = NULL, *buf2 = NULL;
- char *description_from_relation = NULL;
+ Eina_Strbuf *buf = NULL;
char *name_from_relation = NULL;
char *name_from_text_iface = NULL;
- char *description_from_role = NULL;
char *state_from_role = NULL;
AtspiAccessibleReadingMaterial *rm;
- if (!obj) return;
+ if (!data)
+ return NULL;
- rm = atspi_accessible_get_reading_material(obj, NULL);
- if (!rm) return;
+ rm = data;
+ if (!rm)
+ return NULL;
display_info_about_object(rm);
unsigned short reading_attribute = reading_composer_reading_attribute_get(rm);
buf = eina_strbuf_new();
- buf2 = ext_desc ? eina_strbuf_new() : buf2;
+ if (!buf) {
+ ERROR("CRITICAL: Memory allocation failed!");
+ return NULL;
+ }
+
if (reading_attribute & ACCESSIBLE_READING_INFO_TYPE_NAME) {
DEBUG("START : ACCESSIBLE_READING_INFO_TYPE_NAME");
name = rm->name;
SCREEN_READER_SAFE_FREE(role_name, free);
DEBUG("END : ACCESSIBLE_READING_INFO_TYPE_ROLE");
}
+ if (reading_attribute & ACCESSIBLE_READING_INFO_TYPE_STATE) {
+ DEBUG("START : ACCESSIBLE_READING_INFO_TYPE_STATE");
+ state_from_role = generate_state_trait(rm);
+ if (state_from_role && strlen(state_from_role) > 0) {
+ if (eina_strbuf_length_get(buf))
+ ESAL(buf, " , ");
+ ESAL(buf, state_from_role);
+ }
+ if (!STATE_SET_CONTAINS(rm->states, ATSPI_STATE_ENABLED)) {
+ if (eina_strbuf_length_get(buf))
+ ESAL(buf, " , ");
+ ESAL(buf, _("IDS_ACCS_BODY_DISABLED_TTS"));
+ }
+ SCREEN_READER_SAFE_FREE(state_from_role, free);
+ DEBUG("END : ACCESSIBLE_READING_INFO_TYPE_STATE");
+ }
+
+ DEBUG("RESULT: %s", eina_strbuf_string_get(buf));
+ char *base_desc = eina_strbuf_string_steal(buf);
+ eina_strbuf_free(buf);
+ DEBUG("END");
+ return base_desc;
+}
+
+char* reading_composer_extended_description_get(ReadingComposerData *data)
+{
+ DEBUG("START");
+ char *description = NULL;
+ Eina_Strbuf *buf2 = NULL;
+ char *description_from_relation = NULL;
+ char *description_from_role = NULL;
+ AtspiAccessibleReadingMaterial *rm;
+
+ if (!data)
+ return NULL;
+
+ rm = data;
+ if (!rm)
+ return NULL;
+
+ display_info_about_object(rm);
+
+ unsigned short reading_attribute = reading_composer_reading_attribute_get(rm);
+
+ buf2 = eina_strbuf_new();
+ if (!buf2) {
+ ERROR("CRITICAL: Memory allocation failed!");
+ return NULL;
+ }
+
/* read_description: if description reading is enabled */
if (reading_attribute & ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION) {
/* read_description is determined by vconf value for the 'read usage hints aloud' */
SCREEN_READER_SAFE_FREE(description_from_role, free);
DEBUG("END : ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION");
}
- if (reading_attribute & ACCESSIBLE_READING_INFO_TYPE_STATE) {
- DEBUG("START : ACCESSIBLE_READING_INFO_TYPE_STATE");
- state_from_role = generate_state_trait(rm);
- if (state_from_role && strlen(state_from_role) > 0) {
- if (eina_strbuf_length_get(buf))
- ESAL(buf, " , ");
- ESAL(buf, state_from_role);
- }
- if (!STATE_SET_CONTAINS(rm->states, ATSPI_STATE_ENABLED)) {
- if (eina_strbuf_length_get(buf))
- ESAL(buf, " , ");
- ESAL(buf, _("IDS_ACCS_BODY_DISABLED_TTS"));
- }
- SCREEN_READER_SAFE_FREE(state_from_role, free);
- DEBUG("END : ACCESSIBLE_READING_INFO_TYPE_STATE");
- }
- DEBUG("RESULT: %s", eina_strbuf_string_get(buf));
DEBUG("RESULT description: %s", eina_strbuf_string_get(buf2));
- if(base_desc)
- *base_desc = eina_strbuf_string_steal(buf);
- if (ext_desc)
- *ext_desc = eina_strbuf_string_steal(buf2);
-
- eina_strbuf_free(buf);
- if (buf != buf2)
- eina_strbuf_free(buf2);
- reading_composer_reading_material_free(rm);
+ char *ext_desc = eina_strbuf_string_steal(buf2);
+ eina_strbuf_free(buf2);
DEBUG("END");
+ return ext_desc;
}
+ReadingComposerData* reading_composer_data_get(AtspiAccessible *obj)
+{
+ return obj ? atspi_accessible_get_reading_material(obj, NULL) : NULL;
+}
+
+void reading_composer_data_free(ReadingComposerData *data) {
+ if (data)
+ reading_composer_reading_material_free(data);
+}