* UI parts has change its visuals, including moving, resizing widgets, scrolling etc.
*
* @APP_TRACKER_EVENT_VIEW_CHANGED occuring when any of application's
- * UI parts has changed its visuals and a prefined time period elapsed
+ * UI parts has changed its visuals and a prefined time period elapsed
*
*/
-typedef enum {
- APP_TRACKER_EVENT_VIEW_CHANGE_STARTED,
- APP_TRACKER_EVENT_VIEW_CHANGED,
- APP_TRACKER_EVENT_COUNT
+typedef enum
+{
+ APP_TRACKER_EVENT_VIEW_CHANGE_STARTED,
+ APP_TRACKER_EVENT_VIEW_CHANGED,
+ APP_TRACKER_EVENT_COUNT
} AppTrackerEventType;
/**
#include <dlog.h>
#ifdef DEBUG
- #define PLOG(fmt, ...) \
+#define PLOG(fmt, ...) \
fprintf(stderr, "<D> %s(%d) --> ", __FUNCTION__, __LINE__); \
fprintf(stderr, fmt, ##__VA_ARGS__);\
fprintf(stderr, "\n");\
LOGD(fmt, ##__VA_ARGS__);
- #define PLOGD(fmt, ...) \
+#define PLOGD(fmt, ...) \
PLOG(fmt, ##__VA_ARGS__)
- #define PLOGW(fmt, ...) \
+#define PLOGW(fmt, ...) \
fprintf(stderr, "<W> %s(%d) --> ", __FUNCTION__, __LINE__); \
fprintf(stderr, fmt, ##__VA_ARGS__);\
fprintf(stderr, "\n");\
LOGD(fmt, ##__VA_ARGS__);
- #define PLOGE(fmt, ...) \
+#define PLOGE(fmt, ...) \
fprintf(stderr, "<E> %s(%d) --> ", __FUNCTION__, __LINE__); \
fprintf(stderr, fmt, ##__VA_ARGS__);\
fprintf(stderr, "\n");\
LOGD(fmt, ##__VA_ARGS__);
- #define PLOGI(fmt, ...) \
+#define PLOGI(fmt, ...) \
fprintf(stderr, "<I> %s(%d) --> ", __FUNCTION__, __LINE__); \
fprintf(stderr, fmt, ##__VA_ARGS__);\
fprintf(stderr, "\n");\
#else
- #define PLOG(fmt, ...) \
+#define PLOG(fmt, ...) \
LOGD(fmt, ##__VA_ARGS__);
- #define PLOGD(fmt, ...) \
+#define PLOGD(fmt, ...) \
PLOG(fmt, ##__VA_ARGS__);
- #define PLOGW(fmt, ...) \
+#define PLOGW(fmt, ...) \
LOGW(fmt, ##__VA_ARGS__);
- #define PLOGE(fmt, ...) \
+#define PLOGE(fmt, ...) \
LOGE(fmt, ##__VA_ARGS__);
- #define PLOGI(fmt, ...) \
+#define PLOGI(fmt, ...) \
LOGI(fmt, ##__VA_ARGS__);\
-
+
#endif
#endif /* COMMON_HELPERS_H_ */
#include <Elementary.h>
#include <Evas.h>
-struct appdata {
- Evas_Object *win;
+struct appdata
+{
+ Evas_Object *win;
};
-#endif
\ No newline at end of file
+#endif
\ No newline at end of file
/**
* @brief Supported Keys
*/
-enum _Key {
- KEY_LEFT,
- KEY_RIGHT,
- KEY_UP,
- KEY_DOWN,
- KEY_COUNT
+enum _Key
+{
+ KEY_LEFT,
+ KEY_RIGHT,
+ KEY_UP,
+ KEY_DOWN,
+ KEY_COUNT
};
typedef enum _Key Key;
#include <atspi/atspi.h>
-typedef struct {
- // Boundaries of object taken from atspi_component_get_extents function.
- // NULL if object do not implemetn AtspiComponent interface
- AtspiRect *bounds;
+typedef struct
+{
+ // Boundaries of object taken from atspi_component_get_extents function.
+ // NULL if object do not implemetn AtspiComponent interface
+ AtspiRect *bounds;
} ObjectCache;
typedef void (*ObjectCacheReadyCb)(void *data);
typedef struct
{
- char *language;
- int voice_type;
+ char *language;
+ int voice_type;
} Voice_Info;
typedef enum
{
- read_as_xml,
- read_as_plain,
- dont_read
+ read_as_xml,
+ read_as_plain,
+ dont_read
} Wrong_Validation_Reacction;
typedef struct _Service_Data
{
- //Set by vconf
- int information_level;
- bool run_service;
- char language[LAN_NAME];
- int voice_type;
- int reading_speed;
- char *tracking_signal_name;
-
- //Set by tts
- tts_h tts;
- Eina_List *available_languages;
-
- char *text_to_say_info;
- char *current_value;
- char *current_char;
-
- //Actions to do when tts state is 'ready'
- int _dbus_txt_readed;
- bool say_text;
- bool update_language_list;
-
- //Set by spi
- AtspiEventListener *state_changed_listener;
- AtspiEventListener *value_changed_listener;
- AtspiEventListener *caret_moved_listener;
- AtspiEventListener *spi_listener;
-
- AtspiAccessible *currently_focused;
- AtspiAccessible *mouse_down_widget;
- AtspiAccessible *clicked_widget;
-
- //Set by dbus
- Eldbus_Proxy *proxy;
- char **last_tokens;
- char *available_requests;
- char **available_apps;
-
- const char *text_from_dbus;
+ //Set by vconf
+ int information_level;
+ bool run_service;
+ char language[LAN_NAME];
+ int voice_type;
+ int reading_speed;
+ char *tracking_signal_name;
+
+ //Set by tts
+ tts_h tts;
+ Eina_List *available_languages;
+
+ char *text_to_say_info;
+ char *current_value;
+ char *current_char;
+
+ //Actions to do when tts state is 'ready'
+ int _dbus_txt_readed;
+ bool say_text;
+ bool update_language_list;
+
+ //Set by spi
+ AtspiEventListener *state_changed_listener;
+ AtspiEventListener *value_changed_listener;
+ AtspiEventListener *caret_moved_listener;
+ AtspiEventListener *spi_listener;
+
+ AtspiAccessible *currently_focused;
+ AtspiAccessible *mouse_down_widget;
+ AtspiAccessible *clicked_widget;
+
+ //Set by dbus
+ Eldbus_Proxy *proxy;
+ char **last_tokens;
+ char *available_requests;
+ char **available_apps;
+
+ const char *text_from_dbus;
} Service_Data;
Service_Data *get_pointer_to_service_data_struct();
/**
* @brief Accessibility gestures
*/
-enum _Gesture {
- ONE_FINGER_HOVER,
- TWO_FINGERS_HOVER,
- THREE_FINGERS_HOVER,
- ONE_FINGER_FLICK_LEFT,
- ONE_FINGER_FLICK_RIGHT,
- ONE_FINGER_FLICK_UP,
- ONE_FINGER_FLICK_DOWN,
- TWO_FINGERS_FLICK_LEFT,
- TWO_FINGERS_FLICK_RIGHT,
- TWO_FINGERS_FLICK_UP,
- TWO_FINGERS_FLICK_DOWN,
- THREE_FINGERS_FLICK_LEFT,
- THREE_FINGERS_FLICK_RIGHT,
- THREE_FINGERS_FLICK_UP,
- THREE_FINGERS_FLICK_DOWN,
- ONE_FINGER_SINGLE_TAP,
- ONE_FINGER_DOUBLE_TAP,
- ONE_FINGER_TRIPLE_TAP,
- TWO_FINGERS_SINGLE_TAP,
- TWO_FINGERS_DOUBLE_TAP,
- TWO_FINGERS_TRIPLE_TAP,
- THREE_FINGERS_SINGLE_TAP,
- THREE_FINGERS_DOUBLE_TAP,
- THREE_FINGERS_TRIPLE_TAP,
- ONE_FINGER_FLICK_LEFT_RETURN,
- ONE_FINGER_FLICK_RIGHT_RETURN,
- ONE_FINGER_FLICK_UP_RETURN,
- ONE_FINGER_FLICK_DOWN_RETURN,
- TWO_FINGERS_FLICK_LEFT_RETURN,
- TWO_FINGERS_FLICK_RIGHT_RETURN,
- TWO_FINGERS_FLICK_UP_RETURN,
- TWO_FINGERS_FLICK_DOWN_RETURN,
- THREE_FINGERS_FLICK_LEFT_RETURN,
- THREE_FINGERS_FLICK_RIGHT_RETURN,
- THREE_FINGERS_FLICK_UP_RETURN,
- THREE_FINGERS_FLICK_DOWN_RETURN,
- GESTURES_COUNT,
+enum _Gesture
+{
+ ONE_FINGER_HOVER,
+ TWO_FINGERS_HOVER,
+ THREE_FINGERS_HOVER,
+ ONE_FINGER_FLICK_LEFT,
+ ONE_FINGER_FLICK_RIGHT,
+ ONE_FINGER_FLICK_UP,
+ ONE_FINGER_FLICK_DOWN,
+ TWO_FINGERS_FLICK_LEFT,
+ TWO_FINGERS_FLICK_RIGHT,
+ TWO_FINGERS_FLICK_UP,
+ TWO_FINGERS_FLICK_DOWN,
+ THREE_FINGERS_FLICK_LEFT,
+ THREE_FINGERS_FLICK_RIGHT,
+ THREE_FINGERS_FLICK_UP,
+ THREE_FINGERS_FLICK_DOWN,
+ ONE_FINGER_SINGLE_TAP,
+ ONE_FINGER_DOUBLE_TAP,
+ ONE_FINGER_TRIPLE_TAP,
+ TWO_FINGERS_SINGLE_TAP,
+ TWO_FINGERS_DOUBLE_TAP,
+ TWO_FINGERS_TRIPLE_TAP,
+ THREE_FINGERS_SINGLE_TAP,
+ THREE_FINGERS_DOUBLE_TAP,
+ THREE_FINGERS_TRIPLE_TAP,
+ ONE_FINGER_FLICK_LEFT_RETURN,
+ ONE_FINGER_FLICK_RIGHT_RETURN,
+ ONE_FINGER_FLICK_UP_RETURN,
+ ONE_FINGER_FLICK_DOWN_RETURN,
+ TWO_FINGERS_FLICK_LEFT_RETURN,
+ TWO_FINGERS_FLICK_RIGHT_RETURN,
+ TWO_FINGERS_FLICK_UP_RETURN,
+ TWO_FINGERS_FLICK_DOWN_RETURN,
+ THREE_FINGERS_FLICK_LEFT_RETURN,
+ THREE_FINGERS_FLICK_RIGHT_RETURN,
+ THREE_FINGERS_FLICK_UP_RETURN,
+ THREE_FINGERS_FLICK_DOWN_RETURN,
+ GESTURES_COUNT,
};
typedef enum _Gesture Gesture;
-typedef struct {
- Gesture type; // Type of recognized gesture
- int x_beg, x_end; // (x,y) coordinates when gesture begin (screen coords)
- int y_beg, y_end; // (x,y) coordinates when gesture ends (screen coords)
- pid_t pid; // pid of process on which gesture took place.
- int state; // 0 - begin, 1 - ongoing, 2 - ended
+typedef struct
+{
+ Gesture type; // Type of recognized gesture
+ int x_beg, x_end; // (x,y) coordinates when gesture begin (screen coords)
+ int y_beg, y_end; // (x,y) coordinates when gesture ends (screen coords)
+ pid_t pid; // pid of process on which gesture took place.
+ int state; // 0 - begin, 1 - ongoing, 2 - ended
} Gesture_Info;
/**
*
* @REALIZED_ITEMS_NOTIFICATION_EVENT
*/
-enum _Notification_Type {
- FOCUS_CHAIN_END_NOTIFICATION_EVENT,
- REALIZED_ITEMS_NOTIFICATION_EVENT,
+enum _Notification_Type
+{
+ FOCUS_CHAIN_END_NOTIFICATION_EVENT,
+ REALIZED_ITEMS_NOTIFICATION_EVENT,
};
typedef enum _Notification_Type Notification_Type;
#include "app_tracker.h"
#include "logger.h"
-typedef struct {
- AtspiAccessible *root;
- GList *callbacks;
- guint timer;
+typedef struct
+{
+ AtspiAccessible *root;
+ GList *callbacks;
+ guint timer;
} SubTreeRootData;
-typedef struct {
- AppTrackerEventType type;
- AppTrackerEventCB func;
- void *user_data;
+typedef struct
+{
+ AppTrackerEventType type;
+ AppTrackerEventCB func;
+ void *user_data;
} EventCallbackData;
#define APP_TRACKER_INVACTIVITY_TIMEOUT 200
#if 0
do
- {
- if (ancestor == descendant) return 1;
- }
+ {
+ if (ancestor == descendant) return 1;
+ }
while ((descendant = atspi_accessible_get_parent(descendant, NULL)) != NULL);
return 0;
EventCallbackData *ecd;
for (l = std->callbacks; l != NULL; l = l->next)
- {
- ecd = l->data;
- if (ecd->type == event)
- {
- ecd->func(event, ecd->user_data);
- }
- }
+ {
+ ecd = l->data;
+ if (ecd->type == event)
+ {
+ ecd->func(event, ecd->user_data);
+ }
+ }
DEBUG("END");
}
DEBUG("START");
DEBUG("signal:%s", event->type);
if (!event->source)
- ERROR("empty event source");
+ ERROR("empty event source");
GList *l;
SubTreeRootData *std;
if (!event || !event->source) return;
for (l = _roots; l != NULL; l = l->next)
- {
- std = l->data;
- if (_is_descendant(std->root, event->source))
- {
- if (std->timer)
- g_source_remove(std->timer);
- else
- _subtree_callbacks_call(APP_TRACKER_EVENT_VIEW_CHANGE_STARTED, std);
-
- std->timer = g_timeout_add(APP_TRACKER_INVACTIVITY_TIMEOUT, _on_timeout_cb, std);
- }
- }
+ {
+ std = l->data;
+ if (_is_descendant(std->root, event->source))
+ {
+ if (std->timer)
+ g_source_remove(std->timer);
+ else
+ _subtree_callbacks_call(APP_TRACKER_EVENT_VIEW_CHANGE_STARTED, std);
+
+ std->timer = g_timeout_add(APP_TRACKER_INVACTIVITY_TIMEOUT, _on_timeout_cb, std);
+ }
+ }
}
static int
SubTreeRootData *std = data;
g_list_free_full(std->callbacks, _free_callbacks);
if (std->timer)
- g_source_remove(std->timer);
+ g_source_remove(std->timer);
g_free(std);
}
{
DEBUG("START");
if (!_init_count)
- if (_app_tracker_init_internal()) return -1;
+ if (_app_tracker_init_internal()) return -1;
return ++_init_count;
}
void app_tracker_shutdown(void)
{
if (_init_count == 1)
- _app_tracker_shutdown_internal();
+ _app_tracker_shutdown_internal();
if (--_init_count < 0) _init_count = 0;
}
GList *l;
if (!_init_count || !cb)
- return;
+ return;
for (l = _roots; l != NULL; l = l->next)
- {
- rd = l->data;
- if (((SubTreeRootData*)l->data)->root == app)
- {
- rd = l->data;
- break;
- }
- }
+ {
+ rd = l->data;
+ if (((SubTreeRootData*)l->data)->root == app)
+ {
+ rd = l->data;
+ break;
+ }
+ }
if (!rd)
- {
- rd = g_new(SubTreeRootData, 1);
- rd->root = app;
- rd->callbacks = NULL;
- rd->timer = 0;
- _roots = g_list_append(_roots, rd);
- }
+ {
+ rd = g_new(SubTreeRootData, 1);
+ rd->root = app;
+ rd->callbacks = NULL;
+ rd->timer = 0;
+ _roots = g_list_append(_roots, rd);
+ }
cd = g_new(EventCallbackData, 1);
cd->type = event;
SubTreeRootData *std = NULL;
for (l = _roots; l != NULL; l = l->next)
- {
- if (((SubTreeRootData*)l->data)->root == app)
- {
- std = l->data;
- break;
- }
- }
+ {
+ if (((SubTreeRootData*)l->data)->root == app)
+ {
+ std = l->data;
+ break;
+ }
+ }
if (!std) return;
for (l = std->callbacks; l != NULL; l = l->next)
- {
- ecd = l->data;
- if ((ecd->func == cb) && (ecd->user_data == user_data))
- {
- std->callbacks = g_list_delete_link(std->callbacks, l);
- break;
- }
- }
+ {
+ ecd = l->data;
+ if ((ecd->func == cb) && (ecd->user_data == user_data))
+ {
+ std->callbacks = g_list_delete_link(std->callbacks, l);
+ break;
+ }
+ }
if (!std->callbacks)
- {
- if (std->timer) g_source_remove(std->timer);
- _roots = g_list_remove(_roots, std);
- g_free(std);
- }
+ {
+ if (std->timer) g_source_remove(std->timer);
+ _roots = g_list_remove(_roots, std);
+ g_free(std);
+ }
}
#include "object_cache.h"
#include "logger.h"
-struct _FlatNaviContext {
- AtspiAccessible *root;
- Eina_List *current;
- Eina_List *current_line;
- Eina_List *lines;
- Eina_List *candidates;
+struct _FlatNaviContext
+{
+ AtspiAccessible *root;
+ Eina_List *current;
+ Eina_List *current_line;
+ Eina_List *lines;
+ Eina_List *candidates;
};
-static const AtspiStateType required_states[] = {
- ATSPI_STATE_SHOWING,
- ATSPI_STATE_VISIBLE,
- ATSPI_STATE_FOCUSABLE,
- ATSPI_STATE_LAST_DEFINED
+static const AtspiStateType required_states[] =
+{
+ ATSPI_STATE_SHOWING,
+ ATSPI_STATE_VISIBLE,
+ ATSPI_STATE_FOCUSABLE,
+ ATSPI_STATE_LAST_DEFINED
};
-static const AtspiRole interesting_roles[] = {
- ATSPI_ROLE_CHECK_BOX,
- ATSPI_ROLE_COLOR_CHOOSER,
- ATSPI_ROLE_COMBO_BOX,
- ATSPI_ROLE_DATE_EDITOR,
- ATSPI_ROLE_FILE_CHOOSER,
- ATSPI_ROLE_FILLER,
- ATSPI_ROLE_FONT_CHOOSER,
- ATSPI_ROLE_HEADER,
- ATSPI_ROLE_HEADING,
- ATSPI_ROLE_ICON,
- ATSPI_ROLE_ENTRY,
- ATSPI_ROLE_LABEL,
- ATSPI_ROLE_LIST_ITEM,
- ATSPI_ROLE_MENU_ITEM,
- ATSPI_ROLE_PARAGRAPH,
- ATSPI_ROLE_PASSWORD_TEXT,
- ATSPI_ROLE_PUSH_BUTTON,
- ATSPI_ROLE_PROGRESS_BAR,
- ATSPI_ROLE_RADIO_BUTTON,
- ATSPI_ROLE_RADIO_MENU_ITEM,
- ATSPI_ROLE_SLIDER,
- ATSPI_ROLE_SPIN_BUTTON,
- ATSPI_ROLE_TABLE_CELL,
- ATSPI_ROLE_TEXT,
- ATSPI_ROLE_TOGGLE_BUTTON,
- ATSPI_ROLE_TOOL_TIP,
- ATSPI_ROLE_TREE_ITEM,
- ATSPI_ROLE_LAST_DEFINED
+static const AtspiRole interesting_roles[] =
+{
+ ATSPI_ROLE_CHECK_BOX,
+ ATSPI_ROLE_COLOR_CHOOSER,
+ ATSPI_ROLE_COMBO_BOX,
+ ATSPI_ROLE_DATE_EDITOR,
+ ATSPI_ROLE_FILE_CHOOSER,
+ ATSPI_ROLE_FILLER,
+ ATSPI_ROLE_FONT_CHOOSER,
+ ATSPI_ROLE_HEADER,
+ ATSPI_ROLE_HEADING,
+ ATSPI_ROLE_ICON,
+ ATSPI_ROLE_ENTRY,
+ ATSPI_ROLE_LABEL,
+ ATSPI_ROLE_LIST_ITEM,
+ ATSPI_ROLE_MENU_ITEM,
+ ATSPI_ROLE_PARAGRAPH,
+ ATSPI_ROLE_PASSWORD_TEXT,
+ ATSPI_ROLE_PUSH_BUTTON,
+ ATSPI_ROLE_PROGRESS_BAR,
+ ATSPI_ROLE_RADIO_BUTTON,
+ ATSPI_ROLE_RADIO_MENU_ITEM,
+ ATSPI_ROLE_SLIDER,
+ ATSPI_ROLE_SPIN_BUTTON,
+ ATSPI_ROLE_TABLE_CELL,
+ ATSPI_ROLE_TEXT,
+ ATSPI_ROLE_TOGGLE_BUTTON,
+ ATSPI_ROLE_TOOL_TIP,
+ ATSPI_ROLE_TREE_ITEM,
+ ATSPI_ROLE_LAST_DEFINED
};
/**
toprocess = eina_list_append(toprocess, obj);
while (toprocess)
- {
- AtspiAccessible *obj = eina_list_data_get(toprocess);
- toprocess = eina_list_remove_list(toprocess, toprocess);
- int n = atspi_accessible_get_child_count(obj, NULL);
- for (i = 0; i < n; i++)
- {
- AtspiAccessible *child = atspi_accessible_get_child_at_index(obj, i, NULL);
- if (child) toprocess = eina_list_append(toprocess, child);
- }
-
- ret = eina_list_append(ret, obj);
- }
+ {
+ AtspiAccessible *obj = eina_list_data_get(toprocess);
+ toprocess = eina_list_remove_list(toprocess, toprocess);
+ int n = atspi_accessible_get_child_count(obj, NULL);
+ for (i = 0; i < n; i++)
+ {
+ AtspiAccessible *child = atspi_accessible_get_child_at_index(obj, i, NULL);
+ if (child) toprocess = eina_list_append(toprocess, child);
+ }
+
+ ret = eina_list_append(ret, obj);
+ }
return ret;
}
AtspiAccessible *obj;
EINA_LIST_FREE(d, obj)
+ {
g_object_unref(obj);
+ }
}
-typedef struct {
- Eina_List *success;
- Eina_List *failure;
+typedef struct
+{
+ Eina_List *success;
+ Eina_List *failure;
} FilterResult;
static FilterResult
AtspiAccessible *obj;
EINA_LIST_FOREACH_SAFE(list, l, ln, obj)
- {
- Eina_Bool res = cb(NULL, user_data, obj);
- if (res)
- eina_list_move_list(&ret.success, &list, l);
- else
- eina_list_move_list(&ret.failure, &list, l);
- }
+ {
+ Eina_Bool res = cb(NULL, user_data, obj);
+ if (res)
+ eina_list_move_list(&ret.success, &list, l);
+ else
+ eina_list_move_list(&ret.failure, &list, l);
+ }
return ret;
}
AtspiStateSet *ss = atspi_accessible_get_state_set(obj);
if (atspi_accessible_get_role(obj, NULL) == ATSPI_ROLE_LIST_ITEM)
- return EINA_TRUE;
+ return EINA_TRUE;
while (*state != ATSPI_STATE_LAST_DEFINED)
- {
- if (!atspi_state_set_contains(ss, *state))
- {
- ret = EINA_FALSE;
- break;
- }
- state++;
- }
+ {
+ if (!atspi_state_set_contains(ss, *state))
+ {
+ ret = EINA_FALSE;
+ break;
+ }
+ state++;
+ }
g_object_unref(ss);
return ret;
AtspiAccessible *obj = fdata;
while (*role != ATSPI_ROLE_LAST_DEFINED)
- {
- if (atspi_accessible_get_role(obj, NULL) == *role)
- {
- ret = EINA_TRUE;
- break;
- }
- role++;
- }
+ {
+ if (atspi_accessible_get_role(obj, NULL) == *role)
+ {
+ ret = EINA_TRUE;
+ break;
+ }
+ role++;
+ }
return ret;
}
oc = object_cache_get(obj);
if (!oc || !oc->bounds || (oc->bounds->height < 0) || (oc->bounds->width < 0))
- return EINA_FALSE;
+ return EINA_FALSE;
if (((oc->bounds->x + oc->bounds->width) < 0) || ((oc->bounds->y + oc->bounds->height) < 0))
- return EINA_FALSE;
+ return EINA_FALSE;
return EINA_TRUE;
}
const ObjectCache *oc = object_cache_get(root);
if (!oc || !oc->bounds || (oc->bounds->height < 0) || (oc->bounds->width < 0))
- {
- ERROR("Invalid root object bounds. Unable to filter descendants by position");
- fr0.success = desc;
- }
+ {
+ ERROR("Invalid root object bounds. Unable to filter descendants by position");
+ fr0.success = desc;
+ }
else
- {
- fr0 = _accessible_list_split_with_filter(desc, _filter_viewport_cb, (void*)oc);
- _accessible_list_free(fr0.failure);
- }
+ {
+ fr0 = _accessible_list_split_with_filter(desc, _filter_viewport_cb, (void*)oc);
+ _accessible_list_free(fr0.failure);
+ }
// remove objects without required states
FilterResult fr1 = _accessible_list_split_with_filter(fr0.success, _filter_state_cb, (void*)required_states);
_accessible_list_free(fr2.failure);
DEBUG("Candidates after filters count: %d", eina_list_count(ret));
- EINA_LIST_FOREACH_SAFE(ret, l, ln, obj) {
- DEBUG("Name:[%s] Role:[%s]", atspi_accessible_get_name(obj, NULL), atspi_accessible_get_role_name(obj, NULL));
+ EINA_LIST_FOREACH_SAFE(ret, l, ln, obj)
+ {
+ DEBUG("Name:[%s] Role:[%s]", atspi_accessible_get_name(obj, NULL), atspi_accessible_get_role_name(obj, NULL));
}
return ret;
DEBUG("===============================");
EINA_LIST_FOREACH(ctx->lines, l1, line)
- {
- i = 0;
- DEBUG("==== Line %d ====", l);
- EINA_LIST_FOREACH(line, l2, obj)
- {
- char *name = atspi_accessible_get_name(obj, NULL);
- char *role = atspi_accessible_get_role_name(obj, NULL);
- const ObjectCache *oc = object_cache_get(obj);
- DEBUG("%d %s %s, (%d %d %d %d)", i++, name, role,
- oc->bounds->x, oc->bounds->y, oc->bounds->width, oc->bounds->height);
- if (name) g_free(name);
- if (role) g_free(role);
- }
- l++;
- }
+ {
+ i = 0;
+ DEBUG("==== Line %d ====", l);
+ EINA_LIST_FOREACH(line, l2, obj)
+ {
+ char *name = atspi_accessible_get_name(obj, NULL);
+ char *role = atspi_accessible_get_role_name(obj, NULL);
+ const ObjectCache *oc = object_cache_get(obj);
+ DEBUG("%d %s %s, (%d %d %d %d)", i++, name, role,
+ oc->bounds->x, oc->bounds->y, oc->bounds->width, oc->bounds->height);
+ if (name) g_free(name);
+ if (role) g_free(role);
+ }
+ l++;
+ }
DEBUG("===============================");
}
ret->root = root;
ret->candidates = _flat_review_candidates_get(root);
- ret->lines = position_sort(ret->candidates);
+ ret->lines = position_sort(ret->candidates);
ret->current_line = ret->lines;
ret->current = eina_list_data_get(ret->current_line);
{
Eina_List *l;
EINA_LIST_FREE(ctx->lines, l)
+ {
eina_list_free(l);
+ }
_accessible_list_free(ctx->candidates);
free(ctx);
}
Eina_Bool found = EINA_FALSE;
EINA_LIST_FOREACH(ctx->lines, l, line)
- {
- EINA_LIST_FOREACH(line, l2, obj)
- if (obj == target)
- {
- found = EINA_TRUE;
- break;
- }
- if (found)
- {
- ctx->current_line = l;
- ctx->current = l2;
- break;
- }
- }
+ {
+ EINA_LIST_FOREACH(line, l2, obj)
+ {
+ if (obj == target)
+ {
+ found = EINA_TRUE;
+ break;
+ }
+ }
+ if (found)
+ {
+ ctx->current_line = l;
+ ctx->current = l2;
+ break;
+ }
+ }
return found;
}
Eina_List *ret = eina_list_next(ctx->current);
if (ret)
- {
- ctx->current = ret;
- return eina_list_data_get(ctx->current);
- }
+ {
+ ctx->current = ret;
+ return eina_list_data_get(ctx->current);
+ }
return NULL;
}
Eina_List *ret = eina_list_prev(ctx->current);
if (ret)
- {
- ctx->current = ret;
- return eina_list_data_get(ctx->current);
- }
+ {
+ ctx->current = ret;
+ return eina_list_data_get(ctx->current);
+ }
return NULL;
}
Eina_List *ret = eina_list_data_get(ctx->current_line);
if (ret)
- {
- ctx->current = ret;
- return eina_list_data_get(ctx->current);
- }
+ {
+ ctx->current = ret;
+ return eina_list_data_get(ctx->current);
+ }
return NULL;
}
Eina_List *ret = eina_list_last(ctx->current);
if (ret)
- {
- ctx->current = ret;
- return eina_list_data_get(ctx->current);
- }
+ {
+ ctx->current = ret;
+ return eina_list_data_get(ctx->current);
+ }
return NULL;
}
static gboolean device_cb(const AtspiDeviceEvent *stroke, void *data)
{
- Key k;
- if (!strcmp(stroke->event_string, "KP_Up"))
+ Key k;
+ if (!strcmp(stroke->event_string, "KP_Up"))
k = KEY_UP;
- else if (!strcmp(stroke->event_string, "KP_Down"))
+ else if (!strcmp(stroke->event_string, "KP_Down"))
k = KEY_DOWN;
- else if (!strcmp(stroke->event_string, "KP_Left"))
+ else if (!strcmp(stroke->event_string, "KP_Left"))
k = KEY_LEFT;
- else if (!strcmp(stroke->event_string, "KP_Right"))
+ else if (!strcmp(stroke->event_string, "KP_Right"))
k = KEY_RIGHT;
- else
+ else
return FALSE;
- if(user_cb)
- user_cb(user_data, k);
+ if(user_cb)
+ user_cb(user_data, k);
return TRUE;
}
int logger_init(void)
{
if (!_eina_log_dom)
- {
- _eina_log_dom = eina_log_domain_register("screen-reader", NULL);
- if (_eina_log_dom < 0)
- {
- fprintf(stderr, "Unable to register screen-reader log domain");
- return -1;
- }
- }
+ {
+ _eina_log_dom = eina_log_domain_register("screen-reader", NULL);
+ if (_eina_log_dom < 0)
+ {
+ fprintf(stderr, "Unable to register screen-reader log domain");
+ return -1;
+ }
+ }
return 0;
}
void logger_shutdown(void)
{
if (_eina_log_dom)
- {
- eina_log_domain_unregister(_eina_log_dom);
- _eina_log_dom = 0;
- }
+ {
+ eina_log_domain_unregister(_eina_log_dom);
+ _eina_log_dom = 0;
+ }
}
static int app_create(void *data)
{
- eldbus_init();
- elm_init(0, NULL);
+ eldbus_init();
+ elm_init(0, NULL);
- logger_init();
- screen_reader_gestures_init();
- screen_reader_create_service(data);
- navigator_init();
+ logger_init();
+ screen_reader_gestures_init();
+ screen_reader_create_service(data);
+ navigator_init();
- return 0;
+ return 0;
}
static int app_terminate(void *data)
{
- screen_reader_terminate_service(data);
+ screen_reader_terminate_service(data);
- navigator_shutdown();
- screen_reader_gestures_shutdown();
- eldbus_shutdown();
- logger_shutdown();
- return 0;
+ navigator_shutdown();
+ screen_reader_gestures_shutdown();
+ eldbus_shutdown();
+ logger_shutdown();
+ return 0;
}
int main(int argc, char **argv)
{
- unsetenv("ELM_ATSPI_MODE");
-
- struct appcore_ops ops =
- {
- .create = app_create,
- .terminate = app_terminate,
- .pause = NULL,
- .resume = NULL,
- .reset = NULL
- };
- ops.data = get_pointer_to_service_data_struct();
-
- return appcore_efl_main("Smart Navigation", &argc, &argv, &ops);
+ unsetenv("ELM_ATSPI_MODE");
+
+ struct appcore_ops ops =
+ {
+ .create = app_create,
+ .terminate = app_terminate,
+ .pause = NULL,
+ .resume = NULL,
+ .reset = NULL
+ };
+ ops.data = get_pointer_to_service_data_struct();
+
+ return appcore_efl_main("Smart Navigation", &argc, &argv, &ops);
}
typedef struct
{
- int x,y;
+ int x,y;
} last_focus_t;
static AtspiAccessible *current_obj;
char *
state_to_char(AtspiStateType state)
{
- switch(state)
- {
- case ATSPI_STATE_INVALID:
- return strdup("ATSPI_STATE_INVALID");
- case ATSPI_STATE_ACTIVE:
- return strdup("ATSPI_STATE_ACTIVE");
- case ATSPI_STATE_ARMED:
- return strdup("ATSPI_STATE_ARMED");
- case ATSPI_STATE_BUSY:
- return strdup("ATSPI_STATE_BUSY");
- case ATSPI_STATE_CHECKED:
- return strdup("ATSPI_STATE_CHECKED");
- case ATSPI_STATE_COLLAPSED:
- return strdup("ATSPI_STATE_COLLAPSED");
- case ATSPI_STATE_DEFUNCT:
- return strdup("ATSPI_STATE_DEFUNCT");
- case ATSPI_STATE_EDITABLE:
- return strdup("ATSPI_STATE_EDITABLE");
- case ATSPI_STATE_ENABLED:
- return strdup("ATSPI_STATE_ENABLED");
- case ATSPI_STATE_EXPANDABLE:
- return strdup("ATSPI_STATE_EXPANDABLE");
- case ATSPI_STATE_EXPANDED:
- return strdup("ATSPI_STATE_EXPANDED");
- case ATSPI_STATE_FOCUSABLE:
- return strdup("ATSPI_STATE_FOCUSABLE");
- case ATSPI_STATE_FOCUSED:
- return strdup("ATSPI_STATE_FOCUSED");
- case ATSPI_STATE_HAS_TOOLTIP:
- return strdup("ATSPI_STATE_HAS_TOOLTIP");
- case ATSPI_STATE_HORIZONTAL:
- return strdup("ATSPI_STATE_HORIZONTAL");
- case ATSPI_STATE_ICONIFIED:
- return strdup("ATSPI_STATE_ICONIFIED");
- case ATSPI_STATE_MULTI_LINE:
- return strdup("ATSPI_STATE_MULTI_LINE");
- case ATSPI_STATE_MULTISELECTABLE:
- return strdup("ATSPI_STATE_MULTISELECTABLE");
- case ATSPI_STATE_OPAQUE:
- return strdup("ATSPI_STATE_OPAQUE");
- case ATSPI_STATE_PRESSED:
- return strdup("ATSPI_STATE_PRESSED");
- case ATSPI_STATE_RESIZABLE:
- return strdup("ATSPI_STATE_RESIZABLE");
- case ATSPI_STATE_SELECTABLE:
- return strdup("ATSPI_STATE_SELECTABLE");
- case ATSPI_STATE_SELECTED:
- return strdup("ATSPI_STATE_SELECTED");
- case ATSPI_STATE_SENSITIVE:
- return strdup("ATSPI_STATE_SENSITIVE");
- case ATSPI_STATE_SHOWING:
- return strdup("ATSPI_STATE_SHOWING");
- case ATSPI_STATE_SINGLE_LINE:
- return strdup("ATSPI_STATE_SINGLE_LINE");
- case ATSPI_STATE_STALE:
- return strdup("ATSPI_STATE_STALE");
- case ATSPI_STATE_TRANSIENT:
- return strdup("ATSPI_STATE_TRANSIENT");
- case ATSPI_STATE_VERTICAL:
- return strdup("ATSPI_STATE_VERTICAL");
- case ATSPI_STATE_VISIBLE:
- return strdup("ATSPI_STATE_VISIBLE");
- case ATSPI_STATE_MANAGES_DESCENDANTS:
- return strdup("ATSPI_STATE_MANAGES_DESCENDANTS");
- case ATSPI_STATE_INDETERMINATE:
- return strdup("ATSPI_STATE_INDETERMINATE");
- case ATSPI_STATE_REQUIRED:
- return strdup("ATSPI_STATE_REQUIRED");
- case ATSPI_STATE_TRUNCATED:
- return strdup("ATSPI_STATE_TRUNCATED");
- case ATSPI_STATE_ANIMATED:
- return strdup("ATSPI_STATE_ANIMATED");
- case ATSPI_STATE_INVALID_ENTRY:
- return strdup("ATSPI_STATE_INVALID_ENTRY");
- case ATSPI_STATE_SUPPORTS_AUTOCOMPLETION:
- return strdup("ATSPI_STATE_SUPPORTS_AUTOCOMPLETION");
- case ATSPI_STATE_SELECTABLE_TEXT:
- return strdup("ATSPI_STATE_SELECTABLE_TEXT");
- case ATSPI_STATE_IS_DEFAULT:
- return strdup("ATSPI_STATE_IS_DEFAULT");
- case ATSPI_STATE_VISITED:
- return strdup("ATSPI_STATE_VISITED");
- case ATSPI_STATE_CHECKABLE:
- return strdup("ATSPI_STATE_CHECKABLE");
- case ATSPI_STATE_HAS_POPUP:
- return strdup("ATSPI_STATE_HAS_POPUP");
- case ATSPI_STATE_READ_ONLY:
- return strdup("ATSPI_STATE_READ_ONLY");
- case ATSPI_STATE_LAST_DEFINED:
- return strdup("ATSPI_STATE_LAST_DEFINED");
-
- default:
- return strdup("\0");
- }
+ switch(state)
+ {
+ case ATSPI_STATE_INVALID:
+ return strdup("ATSPI_STATE_INVALID");
+ case ATSPI_STATE_ACTIVE:
+ return strdup("ATSPI_STATE_ACTIVE");
+ case ATSPI_STATE_ARMED:
+ return strdup("ATSPI_STATE_ARMED");
+ case ATSPI_STATE_BUSY:
+ return strdup("ATSPI_STATE_BUSY");
+ case ATSPI_STATE_CHECKED:
+ return strdup("ATSPI_STATE_CHECKED");
+ case ATSPI_STATE_COLLAPSED:
+ return strdup("ATSPI_STATE_COLLAPSED");
+ case ATSPI_STATE_DEFUNCT:
+ return strdup("ATSPI_STATE_DEFUNCT");
+ case ATSPI_STATE_EDITABLE:
+ return strdup("ATSPI_STATE_EDITABLE");
+ case ATSPI_STATE_ENABLED:
+ return strdup("ATSPI_STATE_ENABLED");
+ case ATSPI_STATE_EXPANDABLE:
+ return strdup("ATSPI_STATE_EXPANDABLE");
+ case ATSPI_STATE_EXPANDED:
+ return strdup("ATSPI_STATE_EXPANDED");
+ case ATSPI_STATE_FOCUSABLE:
+ return strdup("ATSPI_STATE_FOCUSABLE");
+ case ATSPI_STATE_FOCUSED:
+ return strdup("ATSPI_STATE_FOCUSED");
+ case ATSPI_STATE_HAS_TOOLTIP:
+ return strdup("ATSPI_STATE_HAS_TOOLTIP");
+ case ATSPI_STATE_HORIZONTAL:
+ return strdup("ATSPI_STATE_HORIZONTAL");
+ case ATSPI_STATE_ICONIFIED:
+ return strdup("ATSPI_STATE_ICONIFIED");
+ case ATSPI_STATE_MULTI_LINE:
+ return strdup("ATSPI_STATE_MULTI_LINE");
+ case ATSPI_STATE_MULTISELECTABLE:
+ return strdup("ATSPI_STATE_MULTISELECTABLE");
+ case ATSPI_STATE_OPAQUE:
+ return strdup("ATSPI_STATE_OPAQUE");
+ case ATSPI_STATE_PRESSED:
+ return strdup("ATSPI_STATE_PRESSED");
+ case ATSPI_STATE_RESIZABLE:
+ return strdup("ATSPI_STATE_RESIZABLE");
+ case ATSPI_STATE_SELECTABLE:
+ return strdup("ATSPI_STATE_SELECTABLE");
+ case ATSPI_STATE_SELECTED:
+ return strdup("ATSPI_STATE_SELECTED");
+ case ATSPI_STATE_SENSITIVE:
+ return strdup("ATSPI_STATE_SENSITIVE");
+ case ATSPI_STATE_SHOWING:
+ return strdup("ATSPI_STATE_SHOWING");
+ case ATSPI_STATE_SINGLE_LINE:
+ return strdup("ATSPI_STATE_SINGLE_LINE");
+ case ATSPI_STATE_STALE:
+ return strdup("ATSPI_STATE_STALE");
+ case ATSPI_STATE_TRANSIENT:
+ return strdup("ATSPI_STATE_TRANSIENT");
+ case ATSPI_STATE_VERTICAL:
+ return strdup("ATSPI_STATE_VERTICAL");
+ case ATSPI_STATE_VISIBLE:
+ return strdup("ATSPI_STATE_VISIBLE");
+ case ATSPI_STATE_MANAGES_DESCENDANTS:
+ return strdup("ATSPI_STATE_MANAGES_DESCENDANTS");
+ case ATSPI_STATE_INDETERMINATE:
+ return strdup("ATSPI_STATE_INDETERMINATE");
+ case ATSPI_STATE_REQUIRED:
+ return strdup("ATSPI_STATE_REQUIRED");
+ case ATSPI_STATE_TRUNCATED:
+ return strdup("ATSPI_STATE_TRUNCATED");
+ case ATSPI_STATE_ANIMATED:
+ return strdup("ATSPI_STATE_ANIMATED");
+ case ATSPI_STATE_INVALID_ENTRY:
+ return strdup("ATSPI_STATE_INVALID_ENTRY");
+ case ATSPI_STATE_SUPPORTS_AUTOCOMPLETION:
+ return strdup("ATSPI_STATE_SUPPORTS_AUTOCOMPLETION");
+ case ATSPI_STATE_SELECTABLE_TEXT:
+ return strdup("ATSPI_STATE_SELECTABLE_TEXT");
+ case ATSPI_STATE_IS_DEFAULT:
+ return strdup("ATSPI_STATE_IS_DEFAULT");
+ case ATSPI_STATE_VISITED:
+ return strdup("ATSPI_STATE_VISITED");
+ case ATSPI_STATE_CHECKABLE:
+ return strdup("ATSPI_STATE_CHECKABLE");
+ case ATSPI_STATE_HAS_POPUP:
+ return strdup("ATSPI_STATE_HAS_POPUP");
+ case ATSPI_STATE_READ_ONLY:
+ return strdup("ATSPI_STATE_READ_ONLY");
+ case ATSPI_STATE_LAST_DEFINED:
+ return strdup("ATSPI_STATE_LAST_DEFINED");
+
+ default:
+ return strdup("\0");
+ }
}
static void
display_info_about_object(AtspiAccessible *obj)
{
- DEBUG("START");
- DEBUG("------------------------");
- const char *name = atspi_accessible_get_name(obj, NULL);
- const char *role = atspi_accessible_get_role_name(obj, NULL);
- const char *description = atspi_accessible_get_description(obj, NULL);
- char *state_name = NULL;
- AtspiStateSet *st = atspi_accessible_get_state_set (obj);
- GArray *states = atspi_state_set_get_states (st);
-
- DEBUG("NAME:%s", name);
- DEBUG("ROLE:%s", role)
- DEBUG("DESCRIPTION:%s", description);
- DEBUG("CHILDS:%d", atspi_accessible_get_child_count(obj, NULL));
- DEBUG("STATES:");
- int a;
- AtspiStateType stat;
- for (a = 0; a < states->len; ++a) {
- stat = g_array_index (states, AtspiStateType, a);
- state_name = state_to_char(stat);
- DEBUG(" %s", state_name);
- free(state_name);
- }
-
- DEBUG("------------------------");
- DEBUG("END");
+ DEBUG("START");
+ DEBUG("------------------------");
+ const char *name = atspi_accessible_get_name(obj, NULL);
+ const char *role = atspi_accessible_get_role_name(obj, NULL);
+ const char *description = atspi_accessible_get_description(obj, NULL);
+ char *state_name = NULL;
+ AtspiStateSet *st = atspi_accessible_get_state_set (obj);
+ GArray *states = atspi_state_set_get_states (st);
+
+ DEBUG("NAME:%s", name);
+ DEBUG("ROLE:%s", role)
+ DEBUG("DESCRIPTION:%s", description);
+ DEBUG("CHILDS:%d", atspi_accessible_get_child_count(obj, NULL));
+ DEBUG("STATES:");
+ int a;
+ AtspiStateType stat;
+ for (a = 0; a < states->len; ++a)
+ {
+ stat = g_array_index (states, AtspiStateType, a);
+ state_name = state_to_char(stat);
+ DEBUG(" %s", state_name);
+ free(state_name);
+ }
+
+ DEBUG("------------------------");
+ DEBUG("END");
}
char *
generate_description_for_subtrees(AtspiAccessible *obj)
{
- DEBUG("START");
- if (!obj)
- return strdup("");
- int child_count = atspi_accessible_get_child_count(obj, NULL);
-
- DEBUG("There is %d children inside this filler", child_count);
- if (!child_count)
- return strdup("");
-
- int i;
- char *name = NULL;
- char *below = NULL;
- char ret[256] = "\0";
- AtspiAccessible *child = NULL;
- for (i=0; i < child_count; i++) {
- child = atspi_accessible_get_child_at_index(obj, i, NULL);
- name = atspi_accessible_get_name(child, NULL);
- DEBUG("%d child name:%s", i, name);
- if (strncmp(name, "\0", 1)) {
- strncat(ret, name, sizeof(ret) - strlen(ret) - 1);
- }
- strncat(ret, " ", 1);
- below = generate_description_for_subtrees(child);
- DEBUG("%s from below", below);
- if (strncmp(below, "\0", 1)) {
- strncat(ret, below, sizeof(ret) - strlen(ret) - 1);
- }
- g_object_unref(child);
- free(below);
- free(name);
- }
- return strdup(ret);
+ DEBUG("START");
+ if (!obj)
+ return strdup("");
+ int child_count = atspi_accessible_get_child_count(obj, NULL);
+
+ DEBUG("There is %d children inside this filler", child_count);
+ if (!child_count)
+ return strdup("");
+
+ int i;
+ char *name = NULL;
+ char *below = NULL;
+ char ret[256] = "\0";
+ AtspiAccessible *child = NULL;
+ for (i=0; i < child_count; i++)
+ {
+ child = atspi_accessible_get_child_at_index(obj, i, NULL);
+ name = atspi_accessible_get_name(child, NULL);
+ DEBUG("%d child name:%s", i, name);
+ if (strncmp(name, "\0", 1))
+ {
+ strncat(ret, name, sizeof(ret) - strlen(ret) - 1);
+ }
+ strncat(ret, " ", 1);
+ below = generate_description_for_subtrees(child);
+ DEBUG("%s from below", below);
+ if (strncmp(below, "\0", 1))
+ {
+ strncat(ret, below, sizeof(ret) - strlen(ret) - 1);
+ }
+ g_object_unref(child);
+ free(below);
+ free(name);
+ }
+ return strdup(ret);
}
static char *
generate_what_to_read(AtspiAccessible *obj)
{
- char *name;
- char *names = NULL;
- char *description;
- char *role_name;
- char *other;
- char ret[256] = "\0";
-
- description = atspi_accessible_get_description(obj, NULL);
- name = atspi_accessible_get_name(obj, NULL);
- role_name = atspi_accessible_get_role_name(obj, NULL);
- other = generate_description_for_subtrees(obj);
-
- DEBUG("->->->->->-> WIDGET GAINED HIGHLIGHT: %s <-<-<-<-<-<-<-", name);
- DEBUG("->->->->->-> FROM SUBTREE HAS NAME: %s <-<-<-<-<-<-<-", other);
-
- display_info_about_object(obj);
-
- if (strncmp(name, "\0", 1))
- names = strdup(name);
- else if (strncmp(other, "\0", 1))
- names = strdup(other);
-
- if (names) {
- strncat(ret, names, sizeof(ret) - strlen(ret) - 1);
- strncat(ret, ", ", 2);
- }
+ char *name;
+ char *names = NULL;
+ char *description;
+ char *role_name;
+ char *other;
+ char ret[256] = "\0";
+
+ description = atspi_accessible_get_description(obj, NULL);
+ name = atspi_accessible_get_name(obj, NULL);
+ role_name = atspi_accessible_get_role_name(obj, NULL);
+ other = generate_description_for_subtrees(obj);
+
+ DEBUG("->->->->->-> WIDGET GAINED HIGHLIGHT: %s <-<-<-<-<-<-<-", name);
+ DEBUG("->->->->->-> FROM SUBTREE HAS NAME: %s <-<-<-<-<-<-<-", other);
+
+ display_info_about_object(obj);
+
+ if (strncmp(name, "\0", 1))
+ names = strdup(name);
+ else if (strncmp(other, "\0", 1))
+ names = strdup(other);
+
+ if (names)
+ {
+ strncat(ret, names, sizeof(ret) - strlen(ret) - 1);
+ strncat(ret, ", ", 2);
+ }
- strncat(ret, role_name, sizeof(ret) - strlen(ret) - 1);
- if (strncmp(description, "\0", 1))
+ strncat(ret, role_name, sizeof(ret) - strlen(ret) - 1);
+ if (strncmp(description, "\0", 1))
strncat(ret, ", ", 2);
- strncat(ret, description, sizeof(ret) - strlen(ret) - 1);
+ strncat(ret, description, sizeof(ret) - strlen(ret) - 1);
- free(name);
- free(description);
- free(role_name);
- free(other);
+ free(name);
+ free(description);
+ free(role_name);
+ free(other);
- return strdup(ret);
+ return strdup(ret);
}
DEBUG("START");
GError *err = NULL;
if (!obj)
- {
- DEBUG("Clearing highlight object");
- current_obj = NULL;
- return;
- }
+ {
+ DEBUG("Clearing highlight object");
+ current_obj = NULL;
+ return;
+ }
if (current_obj == obj)
- {
- DEBUG("Object already highlighted");
- DEBUG("Object name:%s", atspi_accessible_get_name(obj, NULL));
- return;
- }
- if (obj && ATSPI_IS_COMPONENT(obj))
+ {
+ DEBUG("Object already highlighted");
+ DEBUG("Object name:%s", atspi_accessible_get_name(obj, NULL));
+ return;
+ }
+ if (obj && ATSPI_IS_COMPONENT(obj))
{
DEBUG("OBJ WITH COMPONENT");
AtspiComponent *comp = atspi_accessible_get_component_iface(obj);
if (!comp)
- {
- GError *err = NULL;
- gchar *role = atspi_accessible_get_role_name(obj, &err);
- ERROR("AtspiComponent *comp NULL, [%s]", role);
- GERROR_CHECK(err);
- g_free(role);
- return;
- }
+ {
+ GError *err = NULL;
+ gchar *role = atspi_accessible_get_role_name(obj, &err);
+ ERROR("AtspiComponent *comp NULL, [%s]", role);
+ GERROR_CHECK(err);
+ g_free(role);
+ return;
+ }
atspi_component_grab_highlight(comp, &err);
GERROR_CHECK(err)
gchar *name;
current_obj = obj;
const ObjectCache *oc = object_cache_get(obj);
- if (oc) {
- name = atspi_accessible_get_name(obj, &err);
- GERROR_CHECK(err)
- role = atspi_accessible_get_role_name(obj, &err);
- GERROR_CHECK(err)
- DEBUG("New highlighted object: %s, role: %s, (%d %d %d %d)",
- name,
- role,
- oc->bounds->x, oc->bounds->y, oc->bounds->width, oc->bounds->height);
- haptic_vibrate_start();
- }
- else {
- name = atspi_accessible_get_name(obj, &err);
- GERROR_CHECK(err)
- role = atspi_accessible_get_role_name(obj, &err);
- GERROR_CHECK(err)
- DEBUG("New highlighted object: %s, role: %s",
- name,
- role);
- haptic_vibrate_start();
- }
+ if (oc)
+ {
+ name = atspi_accessible_get_name(obj, &err);
+ GERROR_CHECK(err)
+ role = atspi_accessible_get_role_name(obj, &err);
+ GERROR_CHECK(err)
+ DEBUG("New highlighted object: %s, role: %s, (%d %d %d %d)",
+ name,
+ role,
+ oc->bounds->x, oc->bounds->y, oc->bounds->width, oc->bounds->height);
+ haptic_vibrate_start();
+ }
+ else
+ {
+ name = atspi_accessible_get_name(obj, &err);
+ GERROR_CHECK(err)
+ role = atspi_accessible_get_role_name(obj, &err);
+ GERROR_CHECK(err)
+ DEBUG("New highlighted object: %s, role: %s",
+ name,
+ role);
+ haptic_vibrate_start();
+ }
char *text_to_speak = NULL;
text_to_speak = generate_what_to_read(obj);
DEBUG("SPEAK:%s", text_to_speak);
g_free(name);
g_free(text_to_speak);
}
- else
- DEBUG("Unable to highlight on object");
+ else
+ DEBUG("Unable to highlight on object");
DEBUG("END");
}
void test_debug(AtspiAccessible *current_widget)
{
- int jdx;
- int count_child;
- gchar *role;
- GError *err = NULL;
- AtspiAccessible *child_iter = NULL;
- AtspiAccessible *parent = atspi_accessible_get_parent(current_widget, &err);
- GERROR_CHECK(err)
-
- if(!parent)
+ int jdx;
+ int count_child;
+ gchar *role;
+ GError *err = NULL;
+ AtspiAccessible *child_iter = NULL;
+ AtspiAccessible *parent = atspi_accessible_get_parent(current_widget, &err);
+ GERROR_CHECK(err)
+
+ if(!parent)
+ return;
+ count_child = atspi_accessible_get_child_count(parent, &err);
+ GERROR_CHECK(err)
+ DEBUG("Total childs in parent: %d\n", count_child);
+ if(!count_child)
return;
- count_child = atspi_accessible_get_child_count(parent, &err);
- GERROR_CHECK(err)
- DEBUG("Total childs in parent: %d\n", count_child);
- if(!count_child)
- return;
- for(jdx = 0; jdx < count_child; jdx++)
- {
- child_iter = atspi_accessible_get_child_at_index(parent, jdx, &err);
- GERROR_CHECK(err)
+ for(jdx = 0; jdx < count_child; jdx++)
+ {
+ child_iter = atspi_accessible_get_child_at_index(parent, jdx, &err);
+ GERROR_CHECK(err)
- if(current_widget == child_iter)
- {
- role = atspi_accessible_get_role_name(parent, &err);
- DEBUG("Childen found in parent: %s at index: %d\n", role, jdx);
- }
- else
- {
- role = atspi_accessible_get_role_name(parent, &err);
- DEBUG("Childen not found in parent: %s at index: %d\n", role, jdx);
- }
- g_free(role);
- GERROR_CHECK(err)
- }
+ if(current_widget == child_iter)
+ {
+ role = atspi_accessible_get_role_name(parent, &err);
+ DEBUG("Childen found in parent: %s at index: %d\n", role, jdx);
+ }
+ else
+ {
+ role = atspi_accessible_get_role_name(parent, &err);
+ DEBUG("Childen not found in parent: %s at index: %d\n", role, jdx);
+ }
+ g_free(role);
+ GERROR_CHECK(err)
+ }
}
#if 0
static void object_get_x_y(AtspiAccessible * accessibleObject, int* x, int* y)
{
- GError * error = NULL;
+ GError * error = NULL;
if ( ATSPI_IS_COMPONENT(accessibleObject) )
- {
- AtspiComponent * component = ATSPI_COMPONENT(accessibleObject);
- AtspiPoint *position = atspi_component_get_position (component, ATSPI_COORD_TYPE_SCREEN, &error);
- if ( error != NULL )
- {
- g_error_free(error);
- }
- if ( position != NULL )
- {
- *x = position->x;
- *y = position->y;
- g_free ( position );
- }
- }
+ {
+ AtspiComponent * component = ATSPI_COMPONENT(accessibleObject);
+ AtspiPoint *position = atspi_component_get_position (component, ATSPI_COORD_TYPE_SCREEN, &error);
+ if ( error != NULL )
+ {
+ g_error_free(error);
+ }
+ if ( position != NULL )
+ {
+ *x = position->x;
+ *y = position->y;
+ g_free ( position );
+ }
+ }
}
static void object_get_wh(AtspiAccessible * accessibleObject, int* width, int* height)
{
- GError * error = NULL;
+ GError * error = NULL;
if ( ATSPI_IS_COMPONENT(accessibleObject) )
- {
- AtspiComponent * component = ATSPI_COMPONENT(accessibleObject);
- AtspiPoint * size = atspi_component_get_size (component, &error);
- if ( error != NULL )
- {
- g_error_free(error);
- }
- if ( size != NULL )
- {
- *width = size->x;
- *height = size->y;
- g_free ( size );
- }
- }
+ {
+ AtspiComponent * component = ATSPI_COMPONENT(accessibleObject);
+ AtspiPoint * size = atspi_component_get_size (component, &error);
+ if ( error != NULL )
+ {
+ g_error_free(error);
+ }
+ if ( size != NULL )
+ {
+ *width = size->x;
+ *height = size->y;
+ g_free ( size );
+ }
+ }
}
static void find_objects(AtspiAccessible* parent, gint x, gint y, gint radius, double* distance, AtspiAccessible **find_app)
{
- AtspiAccessible* app = NULL;
- GError* err = NULL;
- int jdx, kdx;
-
- int count_child = atspi_accessible_get_child_count(parent, &err);
-
- for(jdx = 0; jdx < count_child; jdx++)
- {
- app = atspi_accessible_get_child_at_index(parent, jdx, &err);
-
- AtspiStateSet* state_set = atspi_accessible_get_state_set (app);
- AtspiStateType state = ATSPI_STATE_VISIBLE;
-
- int height = 0, width = 0, xpos1 = 0, ypos1 = 0, xpos2 = 0, ypos2 = 0;
-
- object_get_wh(app, &width, &height); object_get_x_y(app, &xpos1, &ypos1);
+ AtspiAccessible* app = NULL;
+ GError* err = NULL;
+ int jdx, kdx;
- gboolean is_visile = atspi_state_set_contains(state_set, state);
+ int count_child = atspi_accessible_get_child_count(parent, &err);
- if(is_visile == TRUE && width > 0 && height > 0)
- {
- xpos2 = xpos1 + width;
- ypos2 = ypos1 + height;
-
- double set_distance[DISTANCE_NB] = {0};
- double min_distance = DBL_MAX;
+ for(jdx = 0; jdx < count_child; jdx++)
+ {
+ app = atspi_accessible_get_child_at_index(parent, jdx, &err);
- set_distance[0] = pow((x - xpos1), 2) + pow((y - ypos1), 2);
- set_distance[1] = pow((x - xpos2), 2) + pow((y - ypos1), 2);
- set_distance[2] = pow((x - xpos1), 2) + pow((y - ypos2), 2);
- set_distance[3] = pow((x - xpos2), 2) + pow((y - ypos2), 2);
- set_distance[4] = DBL_MAX;
- set_distance[5] = DBL_MAX;
- set_distance[6] = DBL_MAX;
- set_distance[7] = DBL_MAX;
+ AtspiStateSet* state_set = atspi_accessible_get_state_set (app);
+ AtspiStateType state = ATSPI_STATE_VISIBLE;
- if(x >= fmin(xpos1, xpos2) && x <= fmax(xpos1, xpos2))
- {
- set_distance[4] = pow((y - ypos1), 2);
- set_distance[5] = pow((y - ypos2), 2);
- }
+ int height = 0, width = 0, xpos1 = 0, ypos1 = 0, xpos2 = 0, ypos2 = 0;
- if(y >= fmin(ypos1, ypos2) && y <= fmax(ypos1, ypos2))
- {
- set_distance[6] = pow((x - xpos1), 2);
- set_distance[7] = pow((x - xpos2), 2);
- }
+ object_get_wh(app, &width, &height);
+ object_get_x_y(app, &xpos1, &ypos1);
- for(kdx = 0; kdx < DISTANCE_NB; kdx++)
- {
- if(set_distance[kdx] < min_distance)
- min_distance = set_distance[kdx];
- }
+ gboolean is_visile = atspi_state_set_contains(state_set, state);
- if(min_distance <= *distance && (radius < 0 || (radius >= 0 && min_distance <= radius)))
+ if(is_visile == TRUE && width > 0 && height > 0)
{
- *distance = min_distance;
- *find_app = app;
+ xpos2 = xpos1 + width;
+ ypos2 = ypos1 + height;
+
+ double set_distance[DISTANCE_NB] = {0};
+ double min_distance = DBL_MAX;
+
+ set_distance[0] = pow((x - xpos1), 2) + pow((y - ypos1), 2);
+ set_distance[1] = pow((x - xpos2), 2) + pow((y - ypos1), 2);
+ set_distance[2] = pow((x - xpos1), 2) + pow((y - ypos2), 2);
+ set_distance[3] = pow((x - xpos2), 2) + pow((y - ypos2), 2);
+ set_distance[4] = DBL_MAX;
+ set_distance[5] = DBL_MAX;
+ set_distance[6] = DBL_MAX;
+ set_distance[7] = DBL_MAX;
+
+ if(x >= fmin(xpos1, xpos2) && x <= fmax(xpos1, xpos2))
+ {
+ set_distance[4] = pow((y - ypos1), 2);
+ set_distance[5] = pow((y - ypos2), 2);
+ }
+
+ if(y >= fmin(ypos1, ypos2) && y <= fmax(ypos1, ypos2))
+ {
+ set_distance[6] = pow((x - xpos1), 2);
+ set_distance[7] = pow((x - xpos2), 2);
+ }
+
+ for(kdx = 0; kdx < DISTANCE_NB; kdx++)
+ {
+ if(set_distance[kdx] < min_distance)
+ min_distance = set_distance[kdx];
+ }
+
+ if(min_distance <= *distance && (radius < 0 || (radius >= 0 && min_distance <= radius)))
+ {
+ *distance = min_distance;
+ *find_app = app;
+ }
+ find_objects(app, x, y, radius, distance, find_app);
}
- find_objects(app, x, y, radius, distance, find_app);
- }
- }
+ }
}
static AtspiAccessible *get_nearest_widget(AtspiAccessible* app_obj, gint x_cord, gint y_cord, gint radius)
{
- int xn = 0, yn = 0;
- GError *err = NULL;
- AtspiAccessible* f_app_obj = app_obj;
- double distance = DBL_MAX;
- int jdx = 0;
+ int xn = 0, yn = 0;
+ GError *err = NULL;
+ AtspiAccessible* f_app_obj = app_obj;
+ double distance = DBL_MAX;
+ int jdx = 0;
- int count_child = atspi_accessible_get_child_count(app_obj, &err);
+ int count_child = atspi_accessible_get_child_count(app_obj, &err);
- find_objects(app_obj, x_cord, y_cord, radius, &distance, &f_app_obj);
+ find_objects(app_obj, x_cord, y_cord, radius, &distance, &f_app_obj);
- return f_app_obj;
+ return f_app_obj;
}
#endif
#if 0
static void _focus_widget(Gesture_Info *info)
{
- DEBUG("START");
- AtspiAccessible *target_widget;
- AtspiComponent *window_component;
- GError *err = NULL;
+ DEBUG("START");
+ AtspiAccessible *target_widget;
+ AtspiComponent *window_component;
+ GError *err = NULL;
- window_component = atspi_accessible_get_component_iface(top_window);
- if(!window_component)
- return;
- if ((last_focus.x == info->x_begin) && (last_focus.y == info->y_begin))
+ window_component = atspi_accessible_get_component_iface(top_window);
+ if(!window_component)
+ return;
+ if ((last_focus.x == info->x_begin) && (last_focus.y == info->y_begin))
return;
- target_widget = atspi_component_get_accessible_at_point(window_component, info->x_begin, info->y_begin, ATSPI_COORD_TYPE_WINDOW, &err);
- GERROR_CHECK(err)
- if (target_widget) {
+ target_widget = atspi_component_get_accessible_at_point(window_component, info->x_begin, info->y_begin, ATSPI_COORD_TYPE_WINDOW, &err);
+ GERROR_CHECK(err)
+ if (target_widget)
+ {
DEBUG("WIDGET FOUND:%s", atspi_accessible_get_name(target_widget, NULL));
if (flat_navi_context_current_set(context, target_widget))
- {
- _current_highlight_object_set(target_widget);
- last_focus.x = info->x_begin;
- last_focus.y = info->y_begin;
- }
+ {
+ _current_highlight_object_set(target_widget);
+ last_focus.x = info->x_begin;
+ last_focus.y = info->y_begin;
+ }
else
- ERROR("Hoveed object not found in window context[%dx%d][%s]", info->x_begin, info->y_begin, atspi_accessible_get_role_name(top_window, &err));
- }
- else
+ ERROR("Hoveed object not found in window context[%dx%d][%s]", info->x_begin, info->y_begin, atspi_accessible_get_role_name(top_window, &err));
+ }
+ else
DEBUG("NO widget under (%d, %d) found",
info->x_begin, info->y_begin);
- DEBUG("END");
+ DEBUG("END");
}
#endif
DEBUG("START");
AtspiAccessible *obj;
if (!context)
- {
- ERROR("No navigation context created");
- return;
- }
+ {
+ ERROR("No navigation context created");
+ return;
+ }
obj = flat_navi_context_next(context);
// try next line
if (!obj)
- obj = flat_navi_context_line_next(context);
+ obj = flat_navi_context_line_next(context);
// try 'cycle' objects in context
if (!obj)
- {
- flat_navi_context_line_first(context);
- obj = flat_navi_context_first(context);
- smart_notification(FOCUS_CHAIN_END_NOTIFICATION_EVENT, 0, 0);
- }
+ {
+ flat_navi_context_line_first(context);
+ obj = flat_navi_context_first(context);
+ smart_notification(FOCUS_CHAIN_END_NOTIFICATION_EVENT, 0, 0);
+ }
if (obj)
- _current_highlight_object_set(obj);
+ _current_highlight_object_set(obj);
else
- DEBUG("Next widget not found. Abort");
+ DEBUG("Next widget not found. Abort");
DEBUG("END");
}
{
AtspiAccessible *obj;
if (!context)
- {
- ERROR("No navigation context created");
- return;
- }
+ {
+ ERROR("No navigation context created");
+ return;
+ }
obj = flat_navi_context_prev(context);
// try previous line
if (!obj)
- {
- obj = flat_navi_context_line_prev(context);
- if (obj)
- obj = flat_navi_context_last(context);
- }
+ {
+ obj = flat_navi_context_line_prev(context);
+ if (obj)
+ obj = flat_navi_context_last(context);
+ }
// try 'cycle' objects in context
if (!obj)
- {
- flat_navi_context_line_last(context);
- obj = flat_navi_context_last(context);
- smart_notification(FOCUS_CHAIN_END_NOTIFICATION_EVENT, 0, 0);
- }
+ {
+ flat_navi_context_line_last(context);
+ obj = flat_navi_context_last(context);
+ smart_notification(FOCUS_CHAIN_END_NOTIFICATION_EVENT, 0, 0);
+ }
if (obj)
- _current_highlight_object_set(obj);
+ _current_highlight_object_set(obj);
else
- DEBUG("Previous widget not found. Abort");
+ DEBUG("Previous widget not found. Abort");
}
static void _value_inc_widget(void)
{
- AtspiAccessible* current_widget = NULL;
- AtspiText *text_interface;
- gint current_offset;
- gboolean ret;
- GError *err = NULL;
- gchar *role;
-
- if(!current_obj)
+ AtspiAccessible* current_widget = NULL;
+ AtspiText *text_interface;
+ gint current_offset;
+ gboolean ret;
+ GError *err = NULL;
+ gchar *role;
+
+ if(!current_obj)
return;
- current_widget = current_obj;
-
- role = atspi_accessible_get_role_name(current_widget, &err);
- GERROR_CHECK(err)
- if(!strcmp(role, "entry"))
- {
- text_interface = atspi_accessible_get_text_iface(current_widget);
- if(text_interface)
- {
- current_offset = atspi_text_get_caret_offset(text_interface, &err);
- GERROR_CHECK(err)
- ret = atspi_text_set_caret_offset(text_interface, current_offset + 1, &err);
- GERROR_CHECK(err)
- if(ret)
- {
- ERROR("Caret position increment done");
- }
- else
+ current_widget = current_obj;
+
+ role = atspi_accessible_get_role_name(current_widget, &err);
+ GERROR_CHECK(err)
+ if(!strcmp(role, "entry"))
+ {
+ text_interface = atspi_accessible_get_text_iface(current_widget);
+ if(text_interface)
{
- ERROR("Caret position increment error");
+ current_offset = atspi_text_get_caret_offset(text_interface, &err);
+ GERROR_CHECK(err)
+ ret = atspi_text_set_caret_offset(text_interface, current_offset + 1, &err);
+ GERROR_CHECK(err)
+ if(ret)
+ {
+ ERROR("Caret position increment done");
+ }
+ else
+ {
+ ERROR("Caret position increment error");
+ }
}
- }
- else
+ else
ERROR("No text interface supported!");
- g_free(role);
- return;
- }
- g_free(role);
- AtspiValue *value_interface = atspi_accessible_get_value_iface(current_widget);
- if(value_interface)
- {
- ERROR("Value interface supported!\n");
- gdouble current_val = atspi_value_get_current_value(value_interface, &err);
- GERROR_CHECK(err)
- ERROR("Current value: %f\n ", (double)current_val);
- gdouble minimum_inc = atspi_value_get_minimum_increment(value_interface, &err);
- ERROR("Minimum increment: %f\n ", (double)minimum_inc);
- GERROR_CHECK(err)
- atspi_value_set_current_value(value_interface, current_val + minimum_inc, &err);
- GERROR_CHECK(err)
- }
- else
- ERROR("No value interface supported!\n");
+ g_free(role);
+ return;
+ }
+ g_free(role);
+ AtspiValue *value_interface = atspi_accessible_get_value_iface(current_widget);
+ if(value_interface)
+ {
+ ERROR("Value interface supported!\n");
+ gdouble current_val = atspi_value_get_current_value(value_interface, &err);
+ GERROR_CHECK(err)
+ ERROR("Current value: %f\n ", (double)current_val);
+ gdouble minimum_inc = atspi_value_get_minimum_increment(value_interface, &err);
+ ERROR("Minimum increment: %f\n ", (double)minimum_inc);
+ GERROR_CHECK(err)
+ atspi_value_set_current_value(value_interface, current_val + minimum_inc, &err);
+ GERROR_CHECK(err)
+ }
+ else
+ ERROR("No value interface supported!\n");
}
static void _value_dec_widget(void)
{
- AtspiAccessible* current_widget = NULL;
- AtspiText *text_interface;
- gint current_offset;
- GError *err = NULL;
- gboolean ret;
- gchar *role;
-
- if(!current_obj)
+ AtspiAccessible* current_widget = NULL;
+ AtspiText *text_interface;
+ gint current_offset;
+ GError *err = NULL;
+ gboolean ret;
+ gchar *role;
+
+ if(!current_obj)
return;
- current_widget = current_obj;
-
- role = atspi_accessible_get_role_name(current_widget, &err);
- GERROR_CHECK(err)
- if(!strcmp(role, "entry"))
- {
- text_interface = atspi_accessible_get_text_iface(current_widget);
- if(text_interface)
- {
- current_offset = atspi_text_get_caret_offset(text_interface, &err);
- GERROR_CHECK(err)
- ret = atspi_text_set_caret_offset(text_interface, current_offset - 1, &err);
- GERROR_CHECK(err)
- if(ret)
- {
- ERROR("Caret position decrement done");
- }
- else
+ current_widget = current_obj;
+
+ role = atspi_accessible_get_role_name(current_widget, &err);
+ GERROR_CHECK(err)
+ if(!strcmp(role, "entry"))
+ {
+ text_interface = atspi_accessible_get_text_iface(current_widget);
+ if(text_interface)
{
- ERROR("Caret position decrement error");
+ current_offset = atspi_text_get_caret_offset(text_interface, &err);
+ GERROR_CHECK(err)
+ ret = atspi_text_set_caret_offset(text_interface, current_offset - 1, &err);
+ GERROR_CHECK(err)
+ if(ret)
+ {
+ ERROR("Caret position decrement done");
+ }
+ else
+ {
+ ERROR("Caret position decrement error");
+ }
}
- }
- else
+ else
ERROR("No text interface supported!");
- g_free(role);
- return;
- }
- g_free(role);
-
- AtspiValue *value_interface = atspi_accessible_get_value_iface(current_widget);
- if(value_interface)
- {
- ERROR("Value interface supported!\n");
- gdouble current_val = atspi_value_get_current_value(value_interface, &err);
- GERROR_CHECK(err)
- ERROR("Current value: %f\n ", (double)current_val);
- gdouble minimum_inc = atspi_value_get_minimum_increment(value_interface, &err);
- GERROR_CHECK(err)
- ERROR("Minimum increment: %f\n ", (double)minimum_inc);
- atspi_value_set_current_value(value_interface, current_val - minimum_inc, &err);
- GERROR_CHECK(err)
- }
- else
- ERROR("No value interface supported!\n");
+ g_free(role);
+ return;
+ }
+ g_free(role);
+
+ AtspiValue *value_interface = atspi_accessible_get_value_iface(current_widget);
+ if(value_interface)
+ {
+ ERROR("Value interface supported!\n");
+ gdouble current_val = atspi_value_get_current_value(value_interface, &err);
+ GERROR_CHECK(err)
+ ERROR("Current value: %f\n ", (double)current_val);
+ gdouble minimum_inc = atspi_value_get_minimum_increment(value_interface, &err);
+ GERROR_CHECK(err)
+ ERROR("Minimum increment: %f\n ", (double)minimum_inc);
+ atspi_value_set_current_value(value_interface, current_val - minimum_inc, &err);
+ GERROR_CHECK(err)
+ }
+ else
+ ERROR("No value interface supported!\n");
}
static void _activate_widget(void)
{
- //activate the widget
- //only if activate mean click
- //special behavior for entry, caret should move from first/last last/first
- DEBUG("START");
- AtspiAccessible *current_widget = NULL;
- AtspiComponent *focus_component = NULL;
- AtspiAccessible *parent = NULL;
- AtspiStateSet *ss = NULL;
- AtspiSelection *selection = NULL;
- AtspiAction *action;
- AtspiEditableText *edit = NULL;
-
- GError *err = NULL;
- gchar *roleName = NULL;
- gchar *actionName = NULL;
- gint number = 0;
- gint i = 0;
- gint index = 0;
- Eina_Bool activate_found = EINA_FALSE;
-
- if(!current_obj)
+ //activate the widget
+ //only if activate mean click
+ //special behavior for entry, caret should move from first/last last/first
+ DEBUG("START");
+ AtspiAccessible *current_widget = NULL;
+ AtspiComponent *focus_component = NULL;
+ AtspiAccessible *parent = NULL;
+ AtspiStateSet *ss = NULL;
+ AtspiSelection *selection = NULL;
+ AtspiAction *action;
+ AtspiEditableText *edit = NULL;
+
+ GError *err = NULL;
+ gchar *roleName = NULL;
+ gchar *actionName = NULL;
+ gint number = 0;
+ gint i = 0;
+ gint index = 0;
+ Eina_Bool activate_found = EINA_FALSE;
+
+ if(!current_obj)
return;
- current_widget = current_obj;
+ current_widget = current_obj;
- roleName = atspi_accessible_get_role_name(current_widget, &err);
- GERROR_CHECK(err)
- DEBUG("Widget role prev: %s\n", roleName);
+ roleName = atspi_accessible_get_role_name(current_widget, &err);
+ GERROR_CHECK(err)
+ DEBUG("Widget role prev: %s\n", roleName);
- display_info_about_object(current_widget);
+ display_info_about_object(current_widget);
- edit = atspi_accessible_get_editable_text (current_widget);
- if (edit)
+ edit = atspi_accessible_get_editable_text_iface (current_widget);
+ if (edit)
{
DEBUG("Activated object has editable Interface");
focus_component = atspi_accessible_get_component_iface(current_widget);
if (focus_component)
{
- if (atspi_component_grab_focus(focus_component, &err) == TRUE){
- DEBUG("Entry activated\n");
- GERROR_CHECK(err)
- g_object_unref(focus_component);
+ if (atspi_component_grab_focus(focus_component, &err) == TRUE)
+ {
+ DEBUG("Entry activated\n");
+ GERROR_CHECK(err)
+ g_object_unref(focus_component);
+ }
}
- }
- g_object_unref(edit);
- return;
- }
+ g_object_unref(edit);
+ return;
+ }
- action = atspi_accessible_get_action_iface(current_widget);
- if (action) {
- number = atspi_action_get_n_actions(action, &err);
- DEBUG("Number of available action = %d\n", number);
- GERROR_CHECK(err)
- activate_found = EINA_FALSE;
- while (i < number && !activate_found) {
- actionName = atspi_action_get_name(action, i, &err);
- if (actionName && !strcmp("activate", actionName)) {
- DEBUG("There is activate action");
- activate_found = EINA_TRUE;
- }
- else {
- g_free(actionName);
- i++;
- }
- }
- if (activate_found) {
- DEBUG("PERFORMING ATSPI ACTION NO.%d and name:%s", i, actionName);
- atspi_action_do_action(action, i, &err);
- }
- else if (number > 0) {
- DEBUG("NUMBER:%d", number);
- DEBUG("PERFORMING ATSPI DEFAULT ACTION: %s", actionName);
- atspi_action_do_action(action, 0, &err);
- }
- else
- ERROR("There is no actions inside Action interface");
- if (actionName) g_free(actionName);
- g_object_unref(action);
- GERROR_CHECK(err)
- return;
- }
-
- ss = atspi_accessible_get_state_set(current_widget);
- if (atspi_state_set_contains(ss, ATSPI_STATE_SELECTABLE) == EINA_TRUE) {
- DEBUG("OBJECT IS SELECTABLE");
- parent = atspi_accessible_get_parent(current_widget, NULL);
- if (parent) {
- index = atspi_accessible_get_index_in_parent(current_widget, NULL);
- selection = atspi_accessible_get_selection (parent);
- if (selection) {
- DEBUG("SELECT CHILD NO:%d\n", index);
- atspi_selection_select_child(selection, index, NULL);
- g_object_unref(selection);
- g_object_unref(parent);
- g_object_unref(ss);
- return;
- }
- }
- else
- ERROR("no selection iterface in parent");
- }
- g_object_unref(ss);
+ action = atspi_accessible_get_action_iface(current_widget);
+ if (action)
+ {
+ number = atspi_action_get_n_actions(action, &err);
+ DEBUG("Number of available action = %d\n", number);
+ GERROR_CHECK(err)
+ activate_found = EINA_FALSE;
+ while (i < number && !activate_found)
+ {
+ actionName = atspi_action_get_name(action, i, &err);
+ if (actionName && !strcmp("activate", actionName))
+ {
+ DEBUG("There is activate action");
+ activate_found = EINA_TRUE;
+ }
+ else
+ {
+ g_free(actionName);
+ i++;
+ }
+ }
+ if (activate_found)
+ {
+ DEBUG("PERFORMING ATSPI ACTION NO.%d and name:%s", i, actionName);
+ atspi_action_do_action(action, i, &err);
+ }
+ else if (number > 0)
+ {
+ DEBUG("NUMBER:%d", number);
+ DEBUG("PERFORMING ATSPI DEFAULT ACTION: %s", actionName);
+ atspi_action_do_action(action, 0, &err);
+ }
+ else
+ ERROR("There is no actions inside Action interface");
+ if (actionName) g_free(actionName);
+ g_object_unref(action);
+ GERROR_CHECK(err)
+ return;
+ }
+
+ ss = atspi_accessible_get_state_set(current_widget);
+ if (atspi_state_set_contains(ss, ATSPI_STATE_SELECTABLE) == EINA_TRUE)
+ {
+ DEBUG("OBJECT IS SELECTABLE");
+ parent = atspi_accessible_get_parent(current_widget, NULL);
+ if (parent)
+ {
+ index = atspi_accessible_get_index_in_parent(current_widget, NULL);
+ selection = atspi_accessible_get_selection_iface (parent);
+ if (selection)
+ {
+ DEBUG("SELECT CHILD NO:%d\n", index);
+ atspi_selection_select_child(selection, index, NULL);
+ g_object_unref(selection);
+ g_object_unref(parent);
+ g_object_unref(ss);
+ return;
+ }
+ else
+ ERROR("no selection iterface in parent");
+ }
+ }
+ g_object_unref(ss);
}
static void _quickpanel_change_state(gboolean quickpanel_switch)
{
- DEBUG("START");
- Ecore_X_Window xwin = 0;
+ DEBUG("START");
+ Ecore_X_Window xwin = 0;
- ERROR(quickpanel_switch ? "QUICKPANEL STATE ON" : "QUICKPANEL STATE OFF");
+ ERROR(quickpanel_switch ? "QUICKPANEL STATE ON" : "QUICKPANEL STATE OFF");
- Ecore_X_Illume_Quickpanel_State state;
+ Ecore_X_Illume_Quickpanel_State state;
- ecore_x_window_prop_xid_get(ecore_x_window_root_first_get(),
- ECORE_X_ATOM_NET_ACTIVE_WINDOW,
- ECORE_X_ATOM_WINDOW,
- &xwin, 1);
+ ecore_x_window_prop_xid_get(ecore_x_window_root_first_get(),
+ ECORE_X_ATOM_NET_ACTIVE_WINDOW,
+ ECORE_X_ATOM_WINDOW,
+ &xwin, 1);
- state = quickpanel_switch ? ECORE_X_ILLUME_QUICKPANEL_STATE_ON : ECORE_X_ILLUME_QUICKPANEL_STATE_OFF;
+ state = quickpanel_switch ? ECORE_X_ILLUME_QUICKPANEL_STATE_ON : ECORE_X_ILLUME_QUICKPANEL_STATE_OFF;
- ecore_x_e_illume_quickpanel_state_set(xwin, state);
+ ecore_x_e_illume_quickpanel_state_set(xwin, state);
- ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(xwin), state);
+ ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(xwin), state);
- ecore_main_loop_iterate();
+ ecore_main_loop_iterate();
}
/**
{
AtspiAccessible *obj;
if (!current_obj)
- {
- DEBUG("No current object is set. Aborting diving into children structure");
- return;
- }
+ {
+ DEBUG("No current object is set. Aborting diving into children structure");
+ return;
+ }
obj = structural_navi_level_down(current_obj);
if (obj)
- _current_highlight_object_set(obj);
+ _current_highlight_object_set(obj);
else
- DEBUG("Unable to find hihglightable children widget");
+ DEBUG("Unable to find hihglightable children widget");
}
static void _escape_children_widget(void)
{
AtspiAccessible *obj;
if (!current_obj)
- {
- DEBUG("No current object is set. Aborting escaping from children structure");
- return;
- }
+ {
+ DEBUG("No current object is set. Aborting escaping from children structure");
+ return;
+ }
obj = structural_navi_level_up(current_obj);
if (obj)
- _current_highlight_object_set(obj);
+ _current_highlight_object_set(obj);
else
- DEBUG("Unable to find hihglightable parent widget");
+ DEBUG("Unable to find hihglightable parent widget");
}
#endif
/*
static void on_gesture_detected(void *data, Gesture_Info *info)
{
switch(info->type)
- {
+ {
case ONE_FINGER_HOVER:
- //_focus_widget(info);
- break;
+ //_focus_widget(info);
+ break;
case TWO_FINGERS_HOVER:
// _widget_scroll(info);
- break;
+ break;
case ONE_FINGER_FLICK_LEFT:
- _focus_prev();
- break;
+ _focus_prev();
+ break;
case ONE_FINGER_FLICK_RIGHT:
- _focus_next();
- break;
+ _focus_next();
+ break;
case ONE_FINGER_FLICK_UP:
- _value_inc_widget();
- break;
+ _value_inc_widget();
+ break;
case ONE_FINGER_FLICK_DOWN:
- _value_dec_widget();
- break;
+ _value_dec_widget();
+ break;
case ONE_FINGER_SINGLE_TAP:
- //_focus_widget(info);
- break;
+ //_focus_widget(info);
+ break;
case ONE_FINGER_DOUBLE_TAP:
- _activate_widget();
- break;
+ _activate_widget();
+ break;
case THREE_FINGERS_FLICK_DOWN:
- _quickpanel_change_state(QUICKPANEL_DOWN);
- break;
+ _quickpanel_change_state(QUICKPANEL_DOWN);
+ break;
case THREE_FINGERS_FLICK_UP:
- _quickpanel_change_state(QUICKPANEL_UP);
- break;
+ _quickpanel_change_state(QUICKPANEL_UP);
+ break;
default:
- DEBUG("Gesture type %d not handled in switch", info->type);
- }
+ DEBUG("Gesture type %d not handled in switch", info->type);
+ }
}
static void
_window_cache_builded = EINA_TRUE;
AtspiAccessible *pivot = NULL;
if (context)
- {
- pivot = flat_navi_context_current_get(context);
- flat_navi_context_free(context);
- }
+ {
+ pivot = flat_navi_context_current_get(context);
+ flat_navi_context_free(context);
+ }
context = flat_navi_context_create(top_window);
// try to set previous object in new context
if (flat_navi_context_current_set(context, pivot))
- _current_highlight_object_set(pivot);
+ _current_highlight_object_set(pivot);
else
- _current_highlight_object_set(flat_navi_context_current_get(context));
+ _current_highlight_object_set(flat_navi_context_current_get(context));
DEBUG("END");
}
app_tracker_callback_unregister(top_window, APP_TRACKER_EVENT_VIEW_CHANGED, _view_content_changed, NULL);
if(window)
- {
- DEBUG("Window name: %s", atspi_accessible_get_name(window, NULL));
- app_tracker_callback_register(window, APP_TRACKER_EVENT_VIEW_CHANGED, _view_content_changed, NULL);
- _window_cache_builded = EINA_FALSE;
- object_cache_build_async(window, 5, _on_cache_builded, NULL);
- }
+ {
+ DEBUG("Window name: %s", atspi_accessible_get_name(window, NULL));
+ app_tracker_callback_register(window, APP_TRACKER_EVENT_VIEW_CHANGED, _view_content_changed, NULL);
+ _window_cache_builded = EINA_FALSE;
+ object_cache_build_async(window, 5, _on_cache_builded, NULL);
+ }
else
- {
- ERROR("No top window found!");
+ {
+ ERROR("No top window found!");
// scrolled_obj = NULL;
- }
+ }
top_window = window;
DEBUG("END");
}
void kb_tracker (void *data, Key k)
{
switch(k)
- {
+ {
case KEY_LEFT:
- _focus_prev();
- break;
+ _focus_prev();
+ break;
case KEY_RIGHT:
- _focus_next();
- break;
+ _focus_next();
+ break;
default:
- DEBUG("Key %d not supported \n", k);
- }
+ DEBUG("Key %d not supported \n", k);
+ }
}
void navigator_init(void)
void navigator_shutdown(void)
{
- GError *err = NULL;
+ GError *err = NULL;
if (current_obj)
- {
- AtspiComponent *comp = atspi_accessible_get_component_iface(current_obj);
- if (comp)
- {
- atspi_component_clear_highlight(comp, &err);
- GERROR_CHECK(err);
- }
- }
+ {
+ AtspiComponent *comp = atspi_accessible_get_component_iface(current_obj);
+ if (comp)
+ {
+ atspi_component_clear_highlight(comp, &err);
+ GERROR_CHECK(err);
+ }
+ }
if (context)
- {
- flat_navi_context_free(context);
- context = NULL;
- }
+ {
+ flat_navi_context_free(context);
+ context = NULL;
+ }
object_cache_shutdown();
app_tracker_shutdown();
window_tracker_shutdown();
{
AtspiAccessible *obj;
EINA_LIST_FREE(toprocess, obj)
+ {
g_object_unref(obj);
+ }
}
static void
_object_cache_free_internal(void)
{
if (idler)
- {
- ecore_idler_del(idler);
- idler = NULL;
- }
+ {
+ ecore_idler_del(idler);
+ idler = NULL;
+ }
if (toprocess)
- {
- _list_obj_unref_and_free(toprocess);
- toprocess = NULL;
- }
+ {
+ _list_obj_unref_and_free(toprocess);
+ toprocess = NULL;
+ }
if (cache)
- {
- eina_hash_free(cache);
- cache = NULL;
- }
+ {
+ eina_hash_free(cache);
+ cache = NULL;
+ }
}
/**
toprocess = eina_list_append(toprocess, root);
while (toprocess)
- {
- AtspiAccessible *obj = eina_list_data_get(toprocess);
- toprocess = eina_list_remove_list(toprocess, toprocess);
- if (!obj)
- {
- DEBUG("NO OBJ");
- continue;
- }
- n = atspi_accessible_get_child_count(obj, NULL);
- for (i = 0; i < n; i++)
- {
- AtspiAccessible *cand = atspi_accessible_get_child_at_index(obj, i, NULL);
- if(cand)
- toprocess = eina_list_append(toprocess, cand);
- }
- ret = eina_list_append(ret, obj);
- }
+ {
+ AtspiAccessible *obj = eina_list_data_get(toprocess);
+ toprocess = eina_list_remove_list(toprocess, toprocess);
+ if (!obj)
+ {
+ DEBUG("NO OBJ");
+ continue;
+ }
+ n = atspi_accessible_get_child_count(obj, NULL);
+ for (i = 0; i < n; i++)
+ {
+ AtspiAccessible *cand = atspi_accessible_get_child_at_index(obj, i, NULL);
+ if(cand)
+ toprocess = eina_list_append(toprocess, cand);
+ }
+ ret = eina_list_append(ret, obj);
+ }
DEBUG("END");
return ret;
AtspiComponent *comp;
if (!obj)
- {
- ERROR("object is NULL");
- return NULL;
- }
+ {
+ ERROR("object is NULL");
+ return NULL;
+ }
ret = calloc(1, sizeof(ObjectCache));
if (!ret)
- {
- ERROR("out-of memory");
- return NULL;
- }
+ {
+ ERROR("out-of memory");
+ return NULL;
+ }
comp = atspi_accessible_get_component_iface(obj);
- if (!comp) {
- ERROR("Cached Object do not implement Component interface");
- }
- else {
- ret->bounds = atspi_component_get_extents(comp, ATSPI_COORD_TYPE_SCREEN, NULL);
- g_object_unref(comp);
- }
+ if (!comp)
+ {
+ ERROR("Cached Object do not implement Component interface");
+ }
+ else
+ {
+ ret->bounds = atspi_component_get_extents(comp, ATSPI_COORD_TYPE_SCREEN, NULL);
+ g_object_unref(comp);
+ }
return ret;
}
AtspiAccessible *obj;
for (i = 0; (i < count) && ret; i++)
- {
- obj = eina_list_data_get(ret);
- ret = eina_list_remove_list(ret, ret);
+ {
+ obj = eina_list_data_get(ret);
+ ret = eina_list_remove_list(ret, ret);
- oc = _cache_item_construct(obj);
- if (!oc) break;
+ oc = _cache_item_construct(obj);
+ if (!oc) break;
- eina_hash_add(cache, &obj, oc);
- g_object_unref(obj);
- }
+ eina_hash_add(cache, &obj, oc);
+ g_object_unref(obj);
+ }
return ret;
}
_object_cache_free_internal();
cache = _object_cache_new();
if (!cache)
- {
- ERROR("ObjectCache: hash table creation failed");
- return;
- }
+ {
+ ERROR("ObjectCache: hash table creation failed");
+ return;
+ }
objs = _cache_candidates_list_prepare(root);
_cache_item_n_cache(objs, eina_list_count(objs));
idler = NULL;
if (toprocess)
- idler = ecore_idler_add(_do_cache, NULL);
+ idler = ecore_idler_add(_do_cache, NULL);
else if (callback) callback(user_data);
return EINA_FALSE;
cache = _object_cache_new();
if (!cache)
- {
- ERROR("ObjectCache: hash table creation failed");
- return;
- }
+ {
+ ERROR("ObjectCache: hash table creation failed");
+ return;
+ }
DEBUG("will be preparing async candidates from:[%s] with role:[%s]\n",
- atspi_accessible_get_name(root, NULL),
- atspi_accessible_get_role_name(root, NULL));
+ atspi_accessible_get_name(root, NULL),
+ atspi_accessible_get_role_name(root, NULL));
toprocess = _cache_candidates_list_prepare(root);
idler = ecore_idler_add(_do_cache, NULL);
DEBUG("END");
{
ObjectCache *ret = NULL;
if (idler)
- {
- ERROR("Invalid usage. Async cache build is ongoing...");
- return NULL;
- }
+ {
+ ERROR("Invalid usage. Async cache build is ongoing...");
+ return NULL;
+ }
if (!cache)
- {
- cache = _object_cache_new();
- if (!cache)
- {
- ERROR("ObjectCache: hash table creation failed");
- return NULL;
- }
- }
+ {
+ cache = _object_cache_new();
+ if (!cache)
+ {
+ ERROR("ObjectCache: hash table creation failed");
+ return NULL;
+ }
+ }
ret = eina_hash_find(cache, &obj);
if (!ret)
- {
- DEBUG("EMPTY");
- // fallback to blocking d-bus call
- ret = _cache_item_construct(obj);
- eina_hash_add(cache, &obj, ret);
- }
+ {
+ DEBUG("EMPTY");
+ // fallback to blocking d-bus call
+ ret = _cache_item_construct(obj);
+ eina_hash_add(cache, &obj, ret);
+ }
return ret;
}
states = atspi_accessible_get_state_set(parent);
if (!states || atspi_state_set_contains(states, type))
- {
- int n = atspi_accessible_get_child_count(parent, NULL);
- if (n == 0) ret = parent;
- for (i = 0; i < n; i++)
- {
- AtspiAccessible *child = atspi_accessible_get_child_at_index(parent, i, NULL);
- if (!child) continue;
+ {
+ int n = atspi_accessible_get_child_count(parent, NULL);
+ if (n == 0) ret = parent;
+ for (i = 0; i < n; i++)
+ {
+ AtspiAccessible *child = atspi_accessible_get_child_at_index(parent, i, NULL);
+ if (!child) continue;
- ret = _pivot_with_state_top_down_find(child, type);
+ ret = _pivot_with_state_top_down_find(child, type);
- g_object_unref(child);
+ g_object_unref(child);
- if (ret) break;
- }
- }
+ if (ret) break;
+ }
+ }
g_object_unref(states);
return ret;
queue = eina_list_append(queue, parent);
while (queue)
- {
- AtspiAccessible *obj = eina_list_data_get(queue);
- queue = eina_list_remove_list(queue, queue);
-
- int n = atspi_accessible_get_child_count(obj, NULL);
- if (n == 0)
- candidates = eina_list_append(candidates, obj);
- else
- {
- int i;
- for (i = 0; i < n; i++)
- {
- AtspiAccessible *child = atspi_accessible_get_child_at_index(obj, i, NULL);
- if (child)
- queue = eina_list_append(queue, child);
- }
- g_object_unref(obj);
- }
- }
+ {
+ AtspiAccessible *obj = eina_list_data_get(queue);
+ queue = eina_list_remove_list(queue, queue);
+
+ int n = atspi_accessible_get_child_count(obj, NULL);
+ if (n == 0)
+ candidates = eina_list_append(candidates, obj);
+ else
+ {
+ int i;
+ for (i = 0; i < n; i++)
+ {
+ AtspiAccessible *child = atspi_accessible_get_child_at_index(obj, i, NULL);
+ if (child)
+ queue = eina_list_append(queue, child);
+ }
+ g_object_unref(obj);
+ }
+ }
// FIXME sort by (x,y) first ??
while (candidates)
- {
- AtspiAccessible *obj = eina_list_data_get(candidates);
- candidates = eina_list_remove_list(candidates, candidates);
+ {
+ AtspiAccessible *obj = eina_list_data_get(candidates);
+ candidates = eina_list_remove_list(candidates, candidates);
- AtspiStateSet *states = atspi_accessible_get_state_set(obj);
- if (states && atspi_state_set_contains(states, type))
- {
- g_object_unref(states);
- g_object_unref(obj);
- eina_list_free(candidates);
+ AtspiStateSet *states = atspi_accessible_get_state_set(obj);
+ if (states && atspi_state_set_contains(states, type))
+ {
+ g_object_unref(states);
+ g_object_unref(obj);
+ eina_list_free(candidates);
- return obj;
- }
+ return obj;
+ }
- g_object_unref(states);
- g_object_unref(obj);
- }
+ g_object_unref(states);
+ g_object_unref(obj);
+ }
return NULL;
}
AtspiAccessible *ret;
if (atspi_accessible_get_role(win, NULL) != ATSPI_ROLE_WINDOW)
- {
- ERROR("Pivot search entry point must be a Window!");
- return NULL;
- }
+ {
+ ERROR("Pivot search entry point must be a Window!");
+ return NULL;
+ }
DEBUG("Finding SHOWING widget using top-down method.");
ret = _pivot_with_state_top_down_find(win, ATSPI_STATE_SHOWING);
cB = object_cache_get(objB);
if (cA->bounds->y == cB->bounds->y)
- return 0;
+ return 0;
else if (cA->bounds->y > cB->bounds->y)
- return 1;
+ return 1;
else
- return -1;
+ return -1;
}
static int
cB = object_cache_get(objB);
if (cA->bounds->x == cB->bounds->x)
- {
- if (cA->bounds->y > cB->bounds->y)
- return 1;
- if (cA->bounds->y < cB->bounds->y)
- return -1;
- return 0;
- }
+ {
+ if (cA->bounds->y > cB->bounds->y)
+ return 1;
+ if (cA->bounds->y < cB->bounds->y)
+ return -1;
+ return 0;
+ }
else if (cA->bounds->x > cB->bounds->x)
- return 1;
+ return 1;
else
- return -1;
+ return -1;
}
static Eina_List*
const ObjectCache *oc;
EINA_LIST_FOREACH(objs, l, obj)
- {
- if ((comp = atspi_accessible_get_component_iface(obj)) != NULL)
- {
- oc = object_cache_get(obj);
-
- // some objects may implement AtspiCompoment interface, however
- // they do not have valid sizes.
- if (!oc->bounds || (oc->bounds->width < 0) || oc->bounds->height < 0)
+ {
+ if ((comp = atspi_accessible_get_component_iface(obj)) != NULL)
+ {
+ oc = object_cache_get(obj);
+
+ // some objects may implement AtspiCompoment interface, however
+ // they do not have valid sizes.
+ if (!oc->bounds || (oc->bounds->width < 0) || oc->bounds->height < 0)
{
DEBUG("Invalid bounds. skipping from zone list: %s %s",
- atspi_accessible_get_name(obj, NULL),
- atspi_accessible_get_role_name(obj, NULL));
+ atspi_accessible_get_name(obj, NULL),
+ atspi_accessible_get_role_name(obj, NULL));
continue;
}
- candidates = eina_list_append(candidates, obj);
- }
- else
- DEBUG("No component interface: skipping %s %s",
- atspi_accessible_get_name(obj, NULL),
- atspi_accessible_get_role_name(obj, NULL));
- }
+ candidates = eina_list_append(candidates, obj);
+ }
+ else
+ DEBUG("No component interface: skipping %s %s",
+ atspi_accessible_get_name(obj, NULL),
+ atspi_accessible_get_role_name(obj, NULL));
+ }
// Sort object by y - coordinate
return eina_list_sort(candidates, 0, _sort_vertically);
const ObjectCache *line_beg;
EINA_LIST_FOREACH(objs, l, obj)
- {
- if (!line) {
- // set first object in line
- line = eina_list_append(line, obj);
- line_beg = object_cache_get(obj);
- continue;
- }
-
- const ObjectCache *oc = object_cache_get(obj);
- // Object are considered as present in same line, if
- // its y coordinate begins maximum 25% below
- // y coordinate% of first object in line.
- if ((line_beg->bounds->y + (int)(0.25 * (double)line_beg->bounds->height)) >
+ {
+ if (!line)
+ {
+ // set first object in line
+ line = eina_list_append(line, obj);
+ line_beg = object_cache_get(obj);
+ continue;
+ }
+
+ const ObjectCache *oc = object_cache_get(obj);
+ // Object are considered as present in same line, if
+ // its y coordinate begins maximum 25% below
+ // y coordinate% of first object in line.
+ if ((line_beg->bounds->y + (int)(0.25 * (double)line_beg->bounds->height)) >
oc->bounds->y)
- {
- line = eina_list_append(line, obj);
- continue;
- }
- else
- {
- //finish line & set new line leader
- lines = eina_list_append(lines, line);
- line = NULL;
- line = eina_list_append(line, obj);
- line_beg = object_cache_get(obj);
- }
- }
+ {
+ line = eina_list_append(line, obj);
+ continue;
+ }
+ else
+ {
+ //finish line & set new line leader
+ lines = eina_list_append(lines, line);
+ line = NULL;
+ line = eina_list_append(line, obj);
+ line_beg = object_cache_get(obj);
+ }
+ }
// finish last line
if (line) lines = eina_list_append(lines, line);
// sort all zones in line - horizontaly
DEBUG("PositionSort: Lines; %d", eina_list_count(lines));
EINA_LIST_FOREACH(lines, l, line)
- {
- DEBUG("PositionSort: Line %d: %d items", i++, eina_list_count(line));
- line = eina_list_sort(line, 0, _sort_horizontally);
- eina_list_data_set(l, line);
- }
+ {
+ DEBUG("PositionSort: Line %d: %d items", i++, eina_list_count(line));
+ line = eina_list_sort(line, 0, _sort_horizontally);
+ eina_list_data_set(l, line);
+ }
if (zones) eina_list_free(zones);
#include "logger.h"
#ifdef RUN_IPC_TEST_SUIT
- #include "test_suite/test_suite.h"
+#include "test_suite/test_suite.h"
#endif
#define BUF_SIZE 1024
-Service_Data service_data = {
- //Set by vconf
- .information_level = 1,
- .run_service = 1,
- .language = "en_US",
- .voice_type = TTS_VOICE_TYPE_FEMALE,
- .reading_speed = 2,
- .tracking_signal_name = HIGHLIGHT_CHANGED_SIG,
+Service_Data service_data =
+{
+ //Set by vconf
+ .information_level = 1,
+ .run_service = 1,
+ .language = "en_US",
+ .voice_type = TTS_VOICE_TYPE_FEMALE,
+ .reading_speed = 2,
+ .tracking_signal_name = HIGHLIGHT_CHANGED_SIG,
- //Set by tts
- .tts = NULL,
- .available_languages = NULL,
+ //Set by tts
+ .tts = NULL,
+ .available_languages = NULL,
- //Actions to do when tts state is 'ready'
- .update_language_list = false,
+ //Actions to do when tts state is 'ready'
+ .update_language_list = false,
- .text_to_say_info = NULL
+ .text_to_say_info = NULL
};
Service_Data *get_pointer_to_service_data_struct()
{
- return &service_data;
+ return &service_data;
}
int screen_reader_create_service(void *data)
{
- Service_Data *service_data = data;
+ Service_Data *service_data = data;
- vconf_init(service_data);
- tts_init(service_data);
+ vconf_init(service_data);
+ tts_init(service_data);
- /* XML TEST */
+ /* XML TEST */
- #ifdef RUN_IPC_TEST_SUIT
- run_xml_tests();
- test_suite_init();
- #endif
+#ifdef RUN_IPC_TEST_SUIT
+ run_xml_tests();
+ test_suite_init();
+#endif
- return 0;
+ return 0;
}
int screen_reader_terminate_service(void *data)
{
- DEBUG("Service Terminate Callback \n");
+ DEBUG("Service Terminate Callback \n");
- Service_Data *service_data = data;
+ Service_Data *service_data = data;
- tts_stop(service_data->tts);
- tts_unprepare(service_data->tts);
- tts_destroy(service_data->tts);
- service_data->text_from_dbus = NULL;
- service_data->current_value = NULL;
+ tts_stop(service_data->tts);
+ tts_unprepare(service_data->tts);
+ tts_destroy(service_data->tts);
+ service_data->text_from_dbus = NULL;
+ service_data->current_value = NULL;
- return 0;
+ return 0;
}
};
typedef struct _Gestures_Config Gestures_Config;
-typedef enum {
- FLICK_DIRECTION_UNDEFINED,
- FLICK_DIRECTION_DOWN,
- FLICK_DIRECTION_UP,
- FLICK_DIRECTION_LEFT,
- FLICK_DIRECTION_RIGHT,
- FLICK_DIRECTION_DOWN_RETURN,
- FLICK_DIRECTION_UP_RETURN,
- FLICK_DIRECTION_LEFT_RETURN,
- FLICK_DIRECTION_RIGHT_RETURN,
+typedef enum
+{
+ FLICK_DIRECTION_UNDEFINED,
+ FLICK_DIRECTION_DOWN,
+ FLICK_DIRECTION_UP,
+ FLICK_DIRECTION_LEFT,
+ FLICK_DIRECTION_RIGHT,
+ FLICK_DIRECTION_DOWN_RETURN,
+ FLICK_DIRECTION_UP_RETURN,
+ FLICK_DIRECTION_LEFT_RETURN,
+ FLICK_DIRECTION_RIGHT_RETURN,
} flick_direction_e;
-typedef enum {
- GESTURE_NOT_STARTED = 0, // Gesture is ready to start
- GESTURE_ONGOING, // Gesture in progress.
- GESTURE_FINISHED, // Gesture finished - should be emited
- GESTURE_ABORTED // Gesture aborted
+typedef enum
+{
+ GESTURE_NOT_STARTED = 0, // Gesture is ready to start
+ GESTURE_ONGOING, // Gesture in progress.
+ GESTURE_FINISHED, // Gesture finished - should be emited
+ GESTURE_ABORTED // Gesture aborted
} gesture_state_e;
-typedef enum {
- ONE_FINGER_GESTURE = 1,
- TWO_FINGERS_GESTURE,
- THREE_FINGERS_GESTURE
+typedef enum
+{
+ ONE_FINGER_GESTURE = 1,
+ TWO_FINGERS_GESTURE,
+ THREE_FINGERS_GESTURE
} gesture_type_e;
struct _Cover
unsigned int n_taps; /**< Number of fingers touching screen */
unsigned int event_time;
- struct {
- gesture_state_e state; // current state of gesture
- unsigned int timestamp[3]; // time of gesture;
- int finger[3]; // finger number which initiates gesture
- int x_org[3], y_org[3]; // coorinates of finger down event
- int x_end[3], y_end[3]; // coorinates of finger up event
- flick_direction_e dir; // direction of flick
- int n_fingers; // number of fingers in gesture
- int n_fingers_left; // number of fingers in gesture
- // still touching screen
- Eina_Bool finger_out[3]; // finger is out of the finger boundary
- Eina_Bool return_flick[3];
+ struct
+ {
+ gesture_state_e state; // current state of gesture
+ unsigned int timestamp[3]; // time of gesture;
+ int finger[3]; // finger number which initiates gesture
+ int x_org[3], y_org[3]; // coorinates of finger down event
+ int x_end[3], y_end[3]; // coorinates of finger up event
+ flick_direction_e dir; // direction of flick
+ int n_fingers; // number of fingers in gesture
+ int n_fingers_left; // number of fingers in gesture
+ // still touching screen
+ Eina_Bool finger_out[3]; // finger is out of the finger boundary
+ Eina_Bool return_flick[3];
} flick_gesture;
- struct {
- gesture_state_e state; // currest gesture state
- int x[2], y[2];
- int n_fingers;
- int finger[2];
- unsigned int timestamp; // time of gesture;
- unsigned int last_emission_time; // last time of gesture emission
- Ecore_Timer *timer;
- Eina_Bool longpressed;
+ struct
+ {
+ gesture_state_e state; // currest gesture state
+ int x[2], y[2];
+ int n_fingers;
+ int finger[2];
+ unsigned int timestamp; // time of gesture;
+ unsigned int last_emission_time; // last time of gesture emission
+ Ecore_Timer *timer;
+ Eina_Bool longpressed;
} hover_gesture;
- struct {
- Eina_Bool started; // indicates if taps recognition process has started
- Eina_Bool pressed; // indicates if finger is down
- int n_taps; // number of taps captures in sequence
- int finger[3]; // device id of finget
- Ecore_Timer *timer; // sequence expiration timer
- int x_org[3], y_org[3]; // coordinates of first tap
- gesture_type_e tap_type;
+ struct
+ {
+ Eina_Bool started; // indicates if taps recognition process has started
+ Eina_Bool pressed; // indicates if finger is down
+ int n_taps; // number of taps captures in sequence
+ int finger[3]; // device id of finget
+ Ecore_Timer *timer; // sequence expiration timer
+ int x_org[3], y_org[3]; // coordinates of first tap
+ gesture_type_e tap_type;
} tap_gesture_data;
};
typedef struct _Cover Cover;
info->state = state;
if (_global_cb)
- _global_cb(_global_data, info);
+ _global_cb(_global_data, info);
free(info);
}
_flick_gesture_mouse_down(Ecore_Event_Mouse_Button *ev, Cover *cov)
{
if (cov->flick_gesture.state == GESTURE_NOT_STARTED)
- {
- cov->flick_gesture.state = GESTURE_ONGOING;
- cov->flick_gesture.finger[0] = ev->multi.device;
- cov->flick_gesture.x_org[0] = ev->root.x;
- cov->flick_gesture.y_org[0] = ev->root.y;
- cov->flick_gesture.timestamp[0] = ev->timestamp;
- cov->flick_gesture.n_fingers = 1;
- cov->flick_gesture.n_fingers_left = 1;
- cov->flick_gesture.dir = FLICK_DIRECTION_UNDEFINED;
- cov->flick_gesture.finger_out[0] = EINA_FALSE;
- cov->flick_gesture.return_flick[0] = EINA_FALSE;
- }
+ {
+ cov->flick_gesture.state = GESTURE_ONGOING;
+ cov->flick_gesture.finger[0] = ev->multi.device;
+ cov->flick_gesture.x_org[0] = ev->root.x;
+ cov->flick_gesture.y_org[0] = ev->root.y;
+ cov->flick_gesture.timestamp[0] = ev->timestamp;
+ cov->flick_gesture.n_fingers = 1;
+ cov->flick_gesture.n_fingers_left = 1;
+ cov->flick_gesture.dir = FLICK_DIRECTION_UNDEFINED;
+ cov->flick_gesture.finger_out[0] = EINA_FALSE;
+ cov->flick_gesture.return_flick[0] = EINA_FALSE;
+ }
else if (cov->flick_gesture.state == GESTURE_ONGOING)
- {
- // abort gesture if too many fingers touched screen
- if ((cov->n_taps > 3) || (cov->flick_gesture.n_fingers > 3))
- {
- cov->flick_gesture.state = GESTURE_ABORTED;
- return;
- }
-
- cov->flick_gesture.x_org[cov->flick_gesture.n_fingers] = ev->root.x;
- cov->flick_gesture.y_org[cov->flick_gesture.n_fingers] = ev->root.y;
- cov->flick_gesture.timestamp[cov->flick_gesture.n_fingers] = ev->timestamp;
- cov->flick_gesture.finger[cov->flick_gesture.n_fingers] = ev->multi.device;
- cov->flick_gesture.n_fingers++;
- cov->flick_gesture.n_fingers_left++;
- cov->flick_gesture.finger_out[cov->flick_gesture.n_fingers] = EINA_FALSE;
- cov->flick_gesture.return_flick[cov->flick_gesture.n_fingers] = EINA_FALSE;
- }
+ {
+ // abort gesture if too many fingers touched screen
+ if ((cov->n_taps > 3) || (cov->flick_gesture.n_fingers > 3))
+ {
+ cov->flick_gesture.state = GESTURE_ABORTED;
+ return;
+ }
+
+ cov->flick_gesture.x_org[cov->flick_gesture.n_fingers] = ev->root.x;
+ cov->flick_gesture.y_org[cov->flick_gesture.n_fingers] = ev->root.y;
+ cov->flick_gesture.timestamp[cov->flick_gesture.n_fingers] = ev->timestamp;
+ cov->flick_gesture.finger[cov->flick_gesture.n_fingers] = ev->multi.device;
+ cov->flick_gesture.n_fingers++;
+ cov->flick_gesture.n_fingers_left++;
+ cov->flick_gesture.finger_out[cov->flick_gesture.n_fingers] = EINA_FALSE;
+ cov->flick_gesture.return_flick[cov->flick_gesture.n_fingers] = EINA_FALSE;
+ }
}
static Eina_Bool
{
DEBUG("Flick time: %d", event_time - gesture_time);
if ((event_time - gesture_time) < _e_mod_config->one_finger_flick_max_time * 2) //Double time because of the possible of return flick
- return EINA_TRUE;
+ return EINA_TRUE;
else
- return EINA_FALSE;
+ return EINA_FALSE;
}
static Eina_Bool
int dy = y - y_org;
if ((dx * dx + dy * dy) > (_e_mod_config->one_finger_flick_min_length *
- _e_mod_config->one_finger_flick_min_length))
- return EINA_TRUE;
+ _e_mod_config->one_finger_flick_min_length))
+ return EINA_TRUE;
else
- return EINA_FALSE;
+ return EINA_FALSE;
}
static flick_direction_e
int dy = y - y_org;
if ((dy < 0) && (abs(dx) < -dy))
- return FLICK_DIRECTION_UP;
+ return FLICK_DIRECTION_UP;
if ((dy > 0) && (abs(dx) < dy))
- return FLICK_DIRECTION_DOWN;
+ return FLICK_DIRECTION_DOWN;
if ((dx > 0) && (dx > abs(dy)))
- return FLICK_DIRECTION_RIGHT;
+ return FLICK_DIRECTION_RIGHT;
if ((dx < 0) && (-dx > abs(dy)))
- return FLICK_DIRECTION_LEFT;
+ return FLICK_DIRECTION_LEFT;
return FLICK_DIRECTION_UNDEFINED;
}
ax = ay = axe = aye = 0;
for (i = 0; i < cov->flick_gesture.n_fingers; i++)
- {
- ax += cov->flick_gesture.x_org[i];
- ay += cov->flick_gesture.y_org[i];
- axe += cov->flick_gesture.x_end[i];
- aye += cov->flick_gesture.y_end[i];
- }
+ {
+ ax += cov->flick_gesture.x_org[i];
+ ay += cov->flick_gesture.y_org[i];
+ axe += cov->flick_gesture.x_end[i];
+ aye += cov->flick_gesture.y_end[i];
+ }
ax /= cov->flick_gesture.n_fingers;
ay /= cov->flick_gesture.n_fingers;
aye /= cov->flick_gesture.n_fingers;
if (cov->flick_gesture.dir == FLICK_DIRECTION_LEFT)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_LEFT;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_LEFT;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_LEFT;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_LEFT;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_LEFT;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_LEFT;
+ }
else if (cov->flick_gesture.dir == FLICK_DIRECTION_RIGHT)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_RIGHT;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_RIGHT;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_RIGHT;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_RIGHT;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_RIGHT;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_RIGHT;
+ }
else if (cov->flick_gesture.dir == FLICK_DIRECTION_UP)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_UP;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_UP;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_UP;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_UP;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_UP;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_UP;
+ }
else if (cov->flick_gesture.dir == FLICK_DIRECTION_DOWN)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_DOWN;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_DOWN;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_DOWN;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_DOWN;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_DOWN;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_DOWN;
+ }
else if (cov->flick_gesture.dir == FLICK_DIRECTION_DOWN_RETURN)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_DOWN_RETURN;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_DOWN_RETURN;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_DOWN_RETURN;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_DOWN_RETURN;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_DOWN_RETURN;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_DOWN_RETURN;
+ }
else if (cov->flick_gesture.dir == FLICK_DIRECTION_UP_RETURN)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_UP_RETURN;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_UP_RETURN;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_UP_RETURN;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_UP_RETURN;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_UP_RETURN;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_UP_RETURN;
+ }
else if (cov->flick_gesture.dir == FLICK_DIRECTION_LEFT_RETURN)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_LEFT_RETURN;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_LEFT_RETURN;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_LEFT_RETURN;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_LEFT_RETURN;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_LEFT_RETURN;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_LEFT_RETURN;
+ }
else if (cov->flick_gesture.dir == FLICK_DIRECTION_RIGHT_RETURN)
- {
- if (cov->flick_gesture.n_fingers == 1)
- type = ONE_FINGER_FLICK_RIGHT_RETURN;
- if (cov->flick_gesture.n_fingers == 2)
- type = TWO_FINGERS_FLICK_RIGHT_RETURN;
- if (cov->flick_gesture.n_fingers == 3)
- type = THREE_FINGERS_FLICK_RIGHT_RETURN;
- }
+ {
+ if (cov->flick_gesture.n_fingers == 1)
+ type = ONE_FINGER_FLICK_RIGHT_RETURN;
+ if (cov->flick_gesture.n_fingers == 2)
+ type = TWO_FINGERS_FLICK_RIGHT_RETURN;
+ if (cov->flick_gesture.n_fingers == 3)
+ type = THREE_FINGERS_FLICK_RIGHT_RETURN;
+ }
DEBUG("FLICK GESTURE: N: %d F: %d", cov->flick_gesture.n_fingers, cov->flick_gesture.dir);
_event_emit(type, ax, ay, axe, aye, 2);
}
_flick_gesture_mouse_up(Ecore_Event_Mouse_Button *ev, Cover *cov)
{
if (cov->flick_gesture.state == GESTURE_ONGOING)
- {
- int i;
- // check if fingers match
- for (i = 0; i < cov->flick_gesture.n_fingers; i++)
- {
- if (cov->flick_gesture.finger[i] == ev->multi.device)
- break;
- }
- if (i == cov->flick_gesture.n_fingers)
- {
- DEBUG("Finger id not recognized. Gesture aborted.");
- cov->flick_gesture.state = GESTURE_ABORTED;
- goto end;
- }
-
- // check if flick for given finger is valid
- if (!_flick_gesture_time_check(ev->timestamp,
- cov->flick_gesture.timestamp[i]))
- {
- DEBUG("finger flick gesture timeout expired. Gesture aborted.");
- cov->flick_gesture.state = GESTURE_ABORTED;
- goto end;
- }
-
- // check minimal flick length
- if (!_flick_gesture_length_check(ev->root.x, ev->root.y,
- cov->flick_gesture.x_org[i],
- cov->flick_gesture.y_org[i]))
- {
- if (!cov->flick_gesture.finger_out[i])
- {
- DEBUG("Minimal gesture length not reached and no return flick. Gesture aborted.");
- cov->flick_gesture.state = GESTURE_ABORTED;
- goto end;
- }
- cov->flick_gesture.return_flick[i] = EINA_TRUE;
- }
-
- flick_direction_e s = cov->flick_gesture.return_flick[i] ?
- cov->flick_gesture.dir :
- _flick_gesture_direction_get(ev->root.x, ev->root.y,
- cov->flick_gesture.x_org[i],
- cov->flick_gesture.y_org[i]);
-
- cov->flick_gesture.n_fingers_left--;
-
- if ((cov->flick_gesture.dir == FLICK_DIRECTION_UNDEFINED ||
+ {
+ int i;
+ // check if fingers match
+ for (i = 0; i < cov->flick_gesture.n_fingers; i++)
+ {
+ if (cov->flick_gesture.finger[i] == ev->multi.device)
+ break;
+ }
+ if (i == cov->flick_gesture.n_fingers)
+ {
+ DEBUG("Finger id not recognized. Gesture aborted.");
+ cov->flick_gesture.state = GESTURE_ABORTED;
+ goto end;
+ }
+
+ // check if flick for given finger is valid
+ if (!_flick_gesture_time_check(ev->timestamp,
+ cov->flick_gesture.timestamp[i]))
+ {
+ DEBUG("finger flick gesture timeout expired. Gesture aborted.");
+ cov->flick_gesture.state = GESTURE_ABORTED;
+ goto end;
+ }
+
+ // check minimal flick length
+ if (!_flick_gesture_length_check(ev->root.x, ev->root.y,
+ cov->flick_gesture.x_org[i],
+ cov->flick_gesture.y_org[i]))
+ {
+ if (!cov->flick_gesture.finger_out[i])
+ {
+ DEBUG("Minimal gesture length not reached and no return flick. Gesture aborted.");
+ cov->flick_gesture.state = GESTURE_ABORTED;
+ goto end;
+ }
+ cov->flick_gesture.return_flick[i] = EINA_TRUE;
+ }
+
+ flick_direction_e s = cov->flick_gesture.return_flick[i] ?
+ cov->flick_gesture.dir :
+ _flick_gesture_direction_get(ev->root.x, ev->root.y,
+ cov->flick_gesture.x_org[i],
+ cov->flick_gesture.y_org[i]);
+
+ cov->flick_gesture.n_fingers_left--;
+
+ if ((cov->flick_gesture.dir == FLICK_DIRECTION_UNDEFINED ||
cov->flick_gesture.dir > FLICK_DIRECTION_RIGHT)
&& cov->flick_gesture.return_flick[i] == EINA_FALSE)
- {
- DEBUG("Flick gesture");
- cov->flick_gesture.dir = s;
- }
-
- // gesture is valid only if all flicks are in same direction
- if (cov->flick_gesture.dir != s)
- {
- DEBUG("Flick in different direction. Gesture aborted.");
- cov->flick_gesture.state = GESTURE_ABORTED;
- goto end;
- }
-
- cov->flick_gesture.x_end[i] = ev->root.x;
- cov->flick_gesture.y_end[i] = ev->root.y;
-
- if (!cov->flick_gesture.n_fingers_left)
- {
- _flick_event_emit(cov);
- cov->flick_gesture.state = GESTURE_NOT_STARTED;
- }
- }
+ {
+ DEBUG("Flick gesture");
+ cov->flick_gesture.dir = s;
+ }
+
+ // gesture is valid only if all flicks are in same direction
+ if (cov->flick_gesture.dir != s)
+ {
+ DEBUG("Flick in different direction. Gesture aborted.");
+ cov->flick_gesture.state = GESTURE_ABORTED;
+ goto end;
+ }
+
+ cov->flick_gesture.x_end[i] = ev->root.x;
+ cov->flick_gesture.y_end[i] = ev->root.y;
+
+ if (!cov->flick_gesture.n_fingers_left)
+ {
+ _flick_event_emit(cov);
+ cov->flick_gesture.state = GESTURE_NOT_STARTED;
+ }
+ }
end:
// if no finger is touching a screen, gesture will be reseted.
if ((cov->flick_gesture.state == GESTURE_ABORTED) && (cov->n_taps == 0))
- {
- DEBUG("Restet flick gesture");
- cov->flick_gesture.state = GESTURE_NOT_STARTED;
- }
+ {
+ DEBUG("Restet flick gesture");
+ cov->flick_gesture.state = GESTURE_NOT_STARTED;
+ }
}
static void
for(i = 0; i < cov->flick_gesture.n_fingers; ++i)
{
if (cov->flick_gesture.finger[i] == ev->multi.device)
- break;
+ break;
}
if (i == cov->flick_gesture.n_fingers)
- {
- if (cov->flick_gesture.n_fingers >= 3) //that is because of the EFL bug. Mouse move event before mouse down(!)
- {
- ERROR("Finger id not recognized. Gesture aborted.");
- cov->flick_gesture.state = GESTURE_ABORTED;
- return;
- }
- }
+ {
+ if (cov->flick_gesture.n_fingers >= 3) //that is because of the EFL bug. Mouse move event before mouse down(!)
+ {
+ ERROR("Finger id not recognized. Gesture aborted.");
+ cov->flick_gesture.state = GESTURE_ABORTED;
+ return;
+ }
+ }
if(!cov->flick_gesture.finger_out[i])
{
int dx = ev->root.x - cov->flick_gesture.x_org[i];
int dy = ev->root.y - cov->flick_gesture.y_org[i];
if (dx < 0) dx *= -1;
- if (dy < 0) dy *= -1;
+ if (dy < 0) dy *= -1;
- if (dx > _e_mod_config->one_finger_flick_min_length)
+ if (dx > _e_mod_config->one_finger_flick_min_length)
{
cov->flick_gesture.finger_out[i] = EINA_TRUE;
if (ev->root.x > cov->flick_gesture.x_org[i])
cov->hover_gesture.timer = NULL;
if (cov->hover_gesture.last_emission_time == -1)
- {
- _hover_event_emit(cov, 0);
- cov->hover_gesture.last_emission_time = cov->event_time;
- }
+ {
+ _hover_event_emit(cov, 0);
+ cov->hover_gesture.last_emission_time = cov->event_time;
+ }
return EINA_FALSE;
}
DEBUG("Hover timer reset");
cov->hover_gesture.longpressed = EINA_FALSE;
if (cov->hover_gesture.timer)
- {
- ecore_timer_reset(cov->hover_gesture.timer);
- return;
- }
+ {
+ ecore_timer_reset(cov->hover_gesture.timer);
+ return;
+ }
cov->hover_gesture.timer = ecore_timer_add(time, _on_hover_timeout, cov);
}
_hover_gesture_mouse_down(Ecore_Event_Mouse_Button *ev, Cover *cov)
{
if (cov->hover_gesture.state == GESTURE_NOT_STARTED &&
- cov->n_taps == 1)
- {
- cov->hover_gesture.state = GESTURE_ONGOING;
- cov->hover_gesture.timestamp = ev->timestamp;
- cov->hover_gesture.last_emission_time = -1;
- cov->hover_gesture.x[0] = ev->root.x;
- cov->hover_gesture.y[0] = ev->root.y;
- cov->hover_gesture.finger[0] = ev->multi.device;
- cov->hover_gesture.n_fingers = 1;
- _hover_gesture_timer_reset(cov, _e_mod_config->one_finger_hover_longpress_timeout);
- }
+ cov->n_taps == 1)
+ {
+ cov->hover_gesture.state = GESTURE_ONGOING;
+ cov->hover_gesture.timestamp = ev->timestamp;
+ cov->hover_gesture.last_emission_time = -1;
+ cov->hover_gesture.x[0] = ev->root.x;
+ cov->hover_gesture.y[0] = ev->root.y;
+ cov->hover_gesture.finger[0] = ev->multi.device;
+ cov->hover_gesture.n_fingers = 1;
+ _hover_gesture_timer_reset(cov, _e_mod_config->one_finger_hover_longpress_timeout);
+ }
if (cov->hover_gesture.state == GESTURE_ONGOING &&
- cov->n_taps == 2)
- {
- if (cov->hover_gesture.longpressed)
- {
- _hover_event_emit(cov, 2);
- goto abort;
- }
- cov->hover_gesture.timestamp = -1;
- cov->hover_gesture.last_emission_time = -1;
- cov->hover_gesture.x[1] = ev->root.x;
- cov->hover_gesture.y[1] = ev->root.y;
- cov->hover_gesture.finger[1] = ev->multi.device;
- cov->hover_gesture.n_fingers = 2;
- _hover_gesture_timer_reset(cov, _e_mod_config->one_finger_hover_longpress_timeout);
- }
+ cov->n_taps == 2)
+ {
+ if (cov->hover_gesture.longpressed)
+ {
+ _hover_event_emit(cov, 2);
+ goto abort;
+ }
+ cov->hover_gesture.timestamp = -1;
+ cov->hover_gesture.last_emission_time = -1;
+ cov->hover_gesture.x[1] = ev->root.x;
+ cov->hover_gesture.y[1] = ev->root.y;
+ cov->hover_gesture.finger[1] = ev->multi.device;
+ cov->hover_gesture.n_fingers = 2;
+ _hover_gesture_timer_reset(cov, _e_mod_config->one_finger_hover_longpress_timeout);
+ }
// abort gesture if more then 2 fingers touched screen
if ((cov->hover_gesture.state == GESTURE_ONGOING) &&
- cov->n_taps > 2)
- {
- DEBUG("More then 2 finged. Abort hover gesture");
- _hover_event_emit(cov, 2);
- goto abort;
- }
+ cov->n_taps > 2)
+ {
+ DEBUG("More then 2 finged. Abort hover gesture");
+ _hover_event_emit(cov, 2);
+ goto abort;
+ }
return;
abort:
cov->hover_gesture.state = GESTURE_ABORTED;
if (cov->hover_gesture.timer)
- ecore_timer_del(cov->hover_gesture.timer);
+ ecore_timer_del(cov->hover_gesture.timer);
cov->hover_gesture.timer = NULL;
}
{
int i;
if (cov->hover_gesture.state == GESTURE_ONGOING)
- {
-
- for (i = 0; i < cov->hover_gesture.n_fingers; i++)
- {
- if (cov->hover_gesture.finger[i] == ev->multi.device)
- break;
- }
- if (i == cov->hover_gesture.n_fingers)
- {
- DEBUG("Invalid finger id: %d", ev->multi.device);
- return;
- }
- else
- {
- cov->hover_gesture.state = GESTURE_ABORTED;
- if (cov->hover_gesture.timer)
- ecore_timer_del(cov->hover_gesture.timer);
- cov->hover_gesture.timer = NULL;
- // aditionally emit event to complete sequence
- if (cov->hover_gesture.longpressed)
- _hover_event_emit(cov, 2);
- }
- }
+ {
+
+ for (i = 0; i < cov->hover_gesture.n_fingers; i++)
+ {
+ if (cov->hover_gesture.finger[i] == ev->multi.device)
+ break;
+ }
+ if (i == cov->hover_gesture.n_fingers)
+ {
+ DEBUG("Invalid finger id: %d", ev->multi.device);
+ return;
+ }
+ else
+ {
+ cov->hover_gesture.state = GESTURE_ABORTED;
+ if (cov->hover_gesture.timer)
+ ecore_timer_del(cov->hover_gesture.timer);
+ cov->hover_gesture.timer = NULL;
+ // aditionally emit event to complete sequence
+ if (cov->hover_gesture.longpressed)
+ _hover_event_emit(cov, 2);
+ }
+ }
// reset gesture only if user released all his fingers
if (cov->n_taps == 0)
- cov->hover_gesture.state = GESTURE_NOT_STARTED;
+ cov->hover_gesture.state = GESTURE_NOT_STARTED;
}
static void _get_root_coords(Ecore_X_Window win, int *x, int *y)
if (y) *y = 0;
while (parent && (root != parent))
- {
- ecore_x_window_geometry_get(parent, &wx, &wy, NULL, NULL);
- if (x) *x += wx;
- if (y) *y += wy;
- parent = ecore_x_window_parent_get(parent);
- }
+ {
+ ecore_x_window_geometry_get(parent, &wx, &wy, NULL, NULL);
+ if (x) *x += wx;
+ if (y) *y += wy;
+ parent = ecore_x_window_parent_get(parent);
+ }
}
static void
{
int ax = 0, ay = 0, j;
for (j = 0; j < cov->hover_gesture.n_fingers; j++)
- {
- ax += cov->hover_gesture.x[j];
- ay += cov->hover_gesture.y[j];
- }
+ {
+ ax += cov->hover_gesture.x[j];
+ ay += cov->hover_gesture.y[j];
+ }
ax /= cov->hover_gesture.n_fingers;
ay /= cov->hover_gesture.n_fingers;
switch (cov->hover_gesture.n_fingers)
- {
+ {
case 1:
INFO("ON FINGER HOVER");
_event_emit(ONE_FINGER_HOVER, ax, ay, ax, ay, state);
INFO("TWO FINGERS HOVER");
_event_emit(TWO_FINGERS_HOVER, ax, ay, ax, ay, state);
if (state == 0)
- _start_scroll(ax, ay);
+ _start_scroll(ax, ay);
else if (state == 1)
- _continue_scroll(ax, ay);
+ _continue_scroll(ax, ay);
else if (state == 2)
- _end_scroll(ax, ay);
+ _end_scroll(ax, ay);
break;
default:
break;
- }
+ }
}
static void
_hover_gesture_mouse_move(Ecore_Event_Mouse_Move *ev, Cover *cov)
{
if (cov->hover_gesture.state == GESTURE_ONGOING)
- {
- // check fingers
- int i;
- if (!cov->hover_gesture.longpressed)
- return;
-
- for (i = 0; i < cov->hover_gesture.n_fingers; i++)
- {
- if (cov->hover_gesture.finger[i] == ev->multi.device)
- break;
- }
- if (i == cov->hover_gesture.n_fingers)
- {
- DEBUG("Invalid finger id: %d", ev->multi.device);
- return;
- }
- cov->hover_gesture.x[i] = ev->root.x;
- cov->hover_gesture.y[i] = ev->root.y;
- _hover_event_emit(cov, 1);
+ {
+ // check fingers
+ int i;
+ if (!cov->hover_gesture.longpressed)
+ return;
+
+ for (i = 0; i < cov->hover_gesture.n_fingers; i++)
+ {
+ if (cov->hover_gesture.finger[i] == ev->multi.device)
+ break;
+ }
+ if (i == cov->hover_gesture.n_fingers)
+ {
+ DEBUG("Invalid finger id: %d", ev->multi.device);
+ return;
+ }
+ cov->hover_gesture.x[i] = ev->root.x;
+ cov->hover_gesture.y[i] = ev->root.y;
+ _hover_event_emit(cov, 1);
}
}
_tap_event_emit(Cover *cov)
{
switch (cov->tap_gesture_data.n_taps)
- {
+ {
case 1:
if(cov->tap_gesture_data.tap_type == ONE_FINGER_GESTURE)
{
DEBUG("ONE_FINGER_SINGLE_TAP");
_event_emit(ONE_FINGER_SINGLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ 2);
}
else if(cov->tap_gesture_data.tap_type == TWO_FINGERS_GESTURE)
{
DEBUG("TWO_FINGERS_SINGLE_TAP");
_event_emit(TWO_FINGERS_SINGLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[1], cov->tap_gesture_data.y_org[1],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[1], cov->tap_gesture_data.y_org[1],
+ 2);
}
else if(cov->tap_gesture_data.tap_type == THREE_FINGERS_GESTURE)
{
DEBUG("THREE_FINGERS_SINGLE_TAP");
_event_emit(THREE_FINGERS_SINGLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[2], cov->tap_gesture_data.y_org[2],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[2], cov->tap_gesture_data.y_org[2],
+ 2);
}
else
{
{
DEBUG("ONE_FINGER_DOUBLE_TAP");
_event_emit(ONE_FINGER_DOUBLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ 2);
}
else if(cov->tap_gesture_data.tap_type == TWO_FINGERS_GESTURE)
{
DEBUG("TWO_FINGERS_DOUBLE_TAP");
_event_emit(TWO_FINGERS_DOUBLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[1], cov->tap_gesture_data.y_org[1],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[1], cov->tap_gesture_data.y_org[1],
+ 2);
}
else if(cov->tap_gesture_data.tap_type == THREE_FINGERS_GESTURE)
{
DEBUG("THREE_FINGERS_DOUBLE_TAP");
_event_emit(THREE_FINGERS_DOUBLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[2], cov->tap_gesture_data.y_org[2],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[2], cov->tap_gesture_data.y_org[2],
+ 2);
}
else
{
{
DEBUG("ONE_FINGER_TRIPLE_TAP");
_event_emit(ONE_FINGER_TRIPLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ 2);
}
else if(cov->tap_gesture_data.tap_type == TWO_FINGERS_GESTURE)
{
DEBUG("TWO_FINGERS_TRIPLE_TAP");
_event_emit(TWO_FINGERS_TRIPLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[1], cov->tap_gesture_data.y_org[1],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[1], cov->tap_gesture_data.y_org[1],
+ 2);
}
else if(cov->tap_gesture_data.tap_type == THREE_FINGERS_GESTURE)
{
DEBUG("THREE_FINGERS_TRIPLE_TAP");
_event_emit(THREE_FINGERS_TRIPLE_TAP,
- cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
- cov->tap_gesture_data.x_org[2], cov->tap_gesture_data.y_org[2],
- 2);
+ cov->tap_gesture_data.x_org[0], cov->tap_gesture_data.y_org[0],
+ cov->tap_gesture_data.x_org[2], cov->tap_gesture_data.y_org[2],
+ 2);
}
else
{
default:
ERROR("Unknown tap");
break;
- }
+ }
}
static Eina_Bool
DEBUG("Timer expired");
if (cov->tap_gesture_data.started && !cov->tap_gesture_data.pressed)
- _tap_event_emit(cov);
+ _tap_event_emit(cov);
// finish gesture
cov->tap_gesture_data.started = EINA_FALSE;
if (cov->tap_gesture_data.finger[0] != -1 &&
(dx * dx + dy * dy < _e_mod_config->one_finger_tap_radius *
- _e_mod_config->one_finger_tap_radius))
+ _e_mod_config->one_finger_tap_radius))
{
return 0;
}
dx = x - cov->tap_gesture_data.x_org[1];
dy = y - cov->tap_gesture_data.y_org[1];
if (cov->tap_gesture_data.finger[1] != -1 &&
- (dx * dx + dy * dy < _e_mod_config->one_finger_tap_radius *
- _e_mod_config->one_finger_tap_radius))
+ (dx * dx + dy * dy < _e_mod_config->one_finger_tap_radius *
+ _e_mod_config->one_finger_tap_radius))
{
return 1;
}
dx = x - cov->tap_gesture_data.x_org[2];
dy = y - cov->tap_gesture_data.y_org[2];
if (cov->tap_gesture_data.finger[2] != -1 &&
- (dx * dx + dy * dy < _e_mod_config->one_finger_tap_radius *
- _e_mod_config->one_finger_tap_radius))
+ (dx * dx + dy * dy < _e_mod_config->one_finger_tap_radius *
+ _e_mod_config->one_finger_tap_radius))
{
return 2;
}
cov->tap_gesture_data.finger[2] = -1;
cov->tap_gesture_data.n_taps = 0;
cov->tap_gesture_data.timer = ecore_timer_add(
- _e_mod_config->one_finger_tap_timeout,
- _on_tap_timer_expire, cov);
+ _e_mod_config->one_finger_tap_timeout,
+ _on_tap_timer_expire, cov);
cov->tap_gesture_data.tap_type = ONE_FINGER_GESTURE;
}
{
#if 0
if(_tap_gesture_finger_check(cov, ev->root.x, ev->root.y) == -1)
- {
- ERROR("Abort gesture");
- cov->tap_gesture_data.started = EINA_FALSE;
- ecore_timer_del(cov->tap_gesture_data.timer);
- cov->tap_gesture_data.timer = NULL;
- cov->tap_gesture_data.tap_type = ONE_FINGER_GESTURE;
- cov->tap_gesture_data.finger[0] = -1;
- cov->tap_gesture_data.finger[1] = -1;
- cov->tap_gesture_data.finger[2] = -1;
- return;
- }
+ {
+ ERROR("Abort gesture");
+ cov->tap_gesture_data.started = EINA_FALSE;
+ ecore_timer_del(cov->tap_gesture_data.timer);
+ cov->tap_gesture_data.timer = NULL;
+ cov->tap_gesture_data.tap_type = ONE_FINGER_GESTURE;
+ cov->tap_gesture_data.finger[0] = -1;
+ cov->tap_gesture_data.finger[1] = -1;
+ cov->tap_gesture_data.finger[2] = -1;
+ return;
+ }
#endif
}
ecore_x_init(NULL);
if (!ecore_x_pointer_grab(ecore_x_window_root_first_get()))
- {
- ERROR("Failed to grab pointer on: %x", ecore_x_window_root_first_get());
- return EINA_FALSE;
- }
+ {
+ ERROR("Failed to grab pointer on: %x", ecore_x_window_root_first_get());
+ return EINA_FALSE;
+ }
if (!ecore_x_input_touch_devices_grab(ecore_x_window_root_first_get()))
- {
- ERROR("Failed to grab devices on: %x", ecore_x_window_root_first_get());
- ecore_x_pointer_ungrab();
- return EINA_FALSE;
- }
+ {
+ ERROR("Failed to grab devices on: %x", ecore_x_window_root_first_get());
+ ecore_x_pointer_ungrab();
+ return EINA_FALSE;
+ }
ecore_x_input_multi_select(ecore_x_window_root_first_get());
_e_mod_config = calloc(sizeof(Gestures_Config), 1);
{
Ecore_Event_Handler *hdlr;
EINA_LIST_FREE(handlers, hdlr)
+ {
ecore_event_handler_del(hdlr);
+ }
ecore_x_pointer_ungrab();
ecore_x_input_touch_devices_ungrab();
*/
void haptic_module_init(void)
{
- int num;
+ int num;
- if(!device_haptic_get_count(&num))
+ if(!device_haptic_get_count(&num))
{
DEBUG(RED"Haptic device received!"RESET);
}
- else
+ else
{
ERROR("Cannot receive haptic device count");
return;
}
- if(!device_haptic_open(0, &handle))
+ if(!device_haptic_open(0, &handle))
{
DEBUG(RED"Device connected!"RESET);
}
- else
+ else
{
ERROR("Cannot open haptic device");
}
*/
void haptic_module_disconnect(void)
{
- if(!handle)
+ if(!handle)
{
ERROR("Haptic handle lost");
return;
}
- if(!device_haptic_close(handle))
+ if(!device_haptic_close(handle))
{
DEBUG("Haptic disconnected");
}
- else
+ else
{
ERROR("Haptic close error");
}
*/
void haptic_vibrate_start(void)
{
- if(!handle)
+ if(!handle)
{
ERROR("Haptic handle lost");
return;
}
- if(!device_haptic_vibrate(handle, 1000, 100, &effect_handle))
+ if(!device_haptic_vibrate(handle, 1000, 100, &effect_handle))
{
DEBUG(RED"Vibrations started!"RESET);
}
- else
+ else
{
ERROR("Cannot start vibration");
}
*/
void haptic_vibrate_stop(void)
{
- if(!handle)
+ if(!handle)
{
ERROR("Haptic handle lost");
return;
}
- if(!device_haptic_stop(handle, &effect_handle))
+ if(!device_haptic_stop(handle, &effect_handle))
{
ERROR("Vibrations stopped!");
}
- else
+ else
{
DEBUG(RED"Cannot stop vibration"RESET);
}
#include "screen_reader_tts.h"
#include "logger.h"
#ifdef RUN_IPC_TEST_SUIT
- #include "test_suite/test_suite.h"
+#include "test_suite/test_suite.h"
#endif
#define NO_VALUE_INTERFACE "No value interface present"
typedef struct
{
- char *key;
- char *val;
+ char *key;
+ char *val;
} Attr;
*/
static void display_info(const AtspiEvent *event)
{
- AtspiAccessible *source = event->source;
- gchar *name= atspi_accessible_get_name(source, NULL);
- gchar *role= atspi_accessible_get_role_name(source, NULL);
- gchar *toolkit = atspi_accessible_get_toolkit_name(source, NULL);
-
- DEBUG("--------------------------------------------------------");
- DEBUG("Toolkit: %s; Event_type: %s; (%d, %d)", toolkit, event->type, event->detail1, event->detail2);
- DEBUG("Name: %s; Role: %s", name, role);
- DEBUG("--------------------------------------------------------");
+ AtspiAccessible *source = event->source;
+ gchar *name= atspi_accessible_get_name(source, NULL);
+ gchar *role= atspi_accessible_get_role_name(source, NULL);
+ gchar *toolkit = atspi_accessible_get_toolkit_name(source, NULL);
+
+ DEBUG("--------------------------------------------------------");
+ DEBUG("Toolkit: %s; Event_type: %s; (%d, %d)", toolkit, event->type, event->detail1, event->detail2);
+ DEBUG("Name: %s; Role: %s", name, role);
+ DEBUG("--------------------------------------------------------");
}
Eina_Bool double_click_timer_cb(void *data)
{
- Service_Data *sd = data;
- sd->clicked_widget = NULL;
+ Service_Data *sd = data;
+ sd->clicked_widget = NULL;
- return EINA_FALSE;
+ return EINA_FALSE;
}
bool allow_recursive_name(AtspiAccessible *obj)
{
- AtspiRole r = atspi_accessible_get_role(obj, NULL);
- if (r == ATSPI_ROLE_FILLER)
+ AtspiRole r = atspi_accessible_get_role(obj, NULL);
+ if (r == ATSPI_ROLE_FILLER)
return true;
- return false;
+ return false;
}
char *generate_description_for_subtree(AtspiAccessible *obj)
{
- DEBUG("START");
- if (!allow_recursive_name(obj))
- return strdup("");
-
-
- if (!obj)
- return strdup("");
- int child_count = atspi_accessible_get_child_count(obj, NULL);
-
- DEBUG("There is %d children inside this filler", child_count);
- if (!child_count)
- return strdup("");
-
- int i;
- char *name = NULL;
- char *below = NULL;
- char ret[256] = "\0";
- AtspiAccessible *child = NULL;
- for (i=0; i < child_count; i++) {
- child = atspi_accessible_get_child_at_index(obj, i, NULL);
- name = atspi_accessible_get_name(child, NULL);
- DEBUG("%d child name:%s", i, name);
- if (strncmp(name, "\0", 1)) {
- strncat(ret, name, sizeof(ret) - strlen(ret) - 1);
- }
- strncat(ret, " ", 1);
- below = generate_description_for_subtree(child);
- if (strncmp(below, "\0", 1)) {
- strncat(ret, below, sizeof(ret) - strlen(ret) - 1);
- }
- g_object_unref(child);
- free(below);
- free(name);
- }
- return strdup(ret);
+ DEBUG("START");
+ if (!allow_recursive_name(obj))
+ return strdup("");
+
+
+ if (!obj)
+ return strdup("");
+ int child_count = atspi_accessible_get_child_count(obj, NULL);
+
+ DEBUG("There is %d children inside this filler", child_count);
+ if (!child_count)
+ return strdup("");
+
+ int i;
+ char *name = NULL;
+ char *below = NULL;
+ char ret[256] = "\0";
+ AtspiAccessible *child = NULL;
+ for (i=0; i < child_count; i++)
+ {
+ child = atspi_accessible_get_child_at_index(obj, i, NULL);
+ name = atspi_accessible_get_name(child, NULL);
+ DEBUG("%d child name:%s", i, name);
+ if (strncmp(name, "\0", 1))
+ {
+ strncat(ret, name, sizeof(ret) - strlen(ret) - 1);
+ }
+ strncat(ret, " ", 1);
+ below = generate_description_for_subtree(child);
+ if (strncmp(below, "\0", 1))
+ {
+ strncat(ret, below, sizeof(ret) - strlen(ret) - 1);
+ }
+ g_object_unref(child);
+ free(below);
+ free(name);
+ }
+ return strdup(ret);
}
static char *spi_on_state_changed_get_text(AtspiEvent *event, void *user_data)
{
- Service_Data *sd = (Service_Data*)user_data;
- char *name;
- char *names = NULL;
- char *description;
- char *role_name;
- char *other;
- char ret[256] = "\0";
- sd->currently_focused = event->source;
-
- description = atspi_accessible_get_description(sd->currently_focused, NULL);
- name = atspi_accessible_get_name(sd->currently_focused, NULL);
- role_name = atspi_accessible_get_role_name(sd->currently_focused, NULL);
- other = generate_description_for_subtree(sd->currently_focused);
-
- DEBUG("->->->->->-> WIDGET GAINED HIGHLIGHT: %s <-<-<-<-<-<-<-", name);
- DEBUG("->->->->->-> FROM SUBTREE HAS NAME: %s <-<-<-<-<-<-<-", other);
-
- if (strncmp(name, "\0", 1))
- names = strdup(name);
- else if (strncmp(other, "\0", 1))
- names = strdup(other);
-
- if (names) {
- strncat(ret, names, sizeof(ret) - strlen(ret) - 1);
- strncat(ret, ", ", 2);
- }
+ Service_Data *sd = (Service_Data*)user_data;
+ char *name;
+ char *names = NULL;
+ char *description;
+ char *role_name;
+ char *other;
+ char ret[256] = "\0";
+ sd->currently_focused = event->source;
+
+ description = atspi_accessible_get_description(sd->currently_focused, NULL);
+ name = atspi_accessible_get_name(sd->currently_focused, NULL);
+ role_name = atspi_accessible_get_role_name(sd->currently_focused, NULL);
+ other = generate_description_for_subtree(sd->currently_focused);
+
+ DEBUG("->->->->->-> WIDGET GAINED HIGHLIGHT: %s <-<-<-<-<-<-<-", name);
+ DEBUG("->->->->->-> FROM SUBTREE HAS NAME: %s <-<-<-<-<-<-<-", other);
+
+ if (strncmp(name, "\0", 1))
+ names = strdup(name);
+ else if (strncmp(other, "\0", 1))
+ names = strdup(other);
+
+ if (names)
+ {
+ strncat(ret, names, sizeof(ret) - strlen(ret) - 1);
+ strncat(ret, ", ", 2);
+ }
- strncat(ret, role_name, sizeof(ret) - strlen(ret) - 1);
- if (strncmp(description, "\0", 1))
+ strncat(ret, role_name, sizeof(ret) - strlen(ret) - 1);
+ if (strncmp(description, "\0", 1))
strncat(ret, ", ", 2);
- strncat(ret, description, sizeof(ret) - strlen(ret) - 1);
+ strncat(ret, description, sizeof(ret) - strlen(ret) - 1);
- free(name);
- free(description);
- free(role_name);
- free(other);
+ free(name);
+ free(description);
+ free(role_name);
+ free(other);
- return strdup(ret);
+ return strdup(ret);
}
static char *spi_on_caret_move_get_text(AtspiEvent *event, void *user_data)
{
- Service_Data *sd = (Service_Data*)user_data;
- sd->currently_focused = event->source;
- char *return_text;
-
- AtspiText *text_interface = atspi_accessible_get_text_iface(sd->currently_focused);
- if(text_interface)
- {
- DEBUG("->->->->->-> WIDGET CARET MOVED: %s <-<-<-<-<-<-<-",
- atspi_accessible_get_name(sd->currently_focused, NULL));
-
- int char_count = (int)atspi_text_get_character_count(text_interface, NULL);
- int caret_pos = atspi_text_get_caret_offset(text_interface, NULL);
- if(!caret_pos)
+ Service_Data *sd = (Service_Data*)user_data;
+ sd->currently_focused = event->source;
+ char *return_text;
+
+ AtspiText *text_interface = atspi_accessible_get_text_iface(sd->currently_focused);
+ if(text_interface)
+ {
+ DEBUG("->->->->->-> WIDGET CARET MOVED: %s <-<-<-<-<-<-<-",
+ atspi_accessible_get_name(sd->currently_focused, NULL));
+
+ int char_count = (int)atspi_text_get_character_count(text_interface, NULL);
+ int caret_pos = atspi_text_get_caret_offset(text_interface, NULL);
+ if(!caret_pos)
{
DEBUG("MIN POSITION REACHED");
if(asprintf(&return_text, "%s %s", (char*)atspi_text_get_text(text_interface, caret_pos, caret_pos + 1, NULL), MIN_POS_REACHED) < 0)
- {
- ERROR(MEMORY_ERROR);
- return NULL;
- }
+ {
+ ERROR(MEMORY_ERROR);
+ return NULL;
+ }
}
else if(char_count == caret_pos)
- {
- DEBUG("MAX POSITION REACHED");
- if(asprintf(&return_text, "%s %s", (char*)atspi_text_get_text(text_interface, caret_pos, caret_pos + 1, NULL), MAX_POS_REACHED) < 0)
- {
- ERROR(MEMORY_ERROR);
- return NULL;
- }
- }
+ {
+ DEBUG("MAX POSITION REACHED");
+ if(asprintf(&return_text, "%s %s", (char*)atspi_text_get_text(text_interface, caret_pos, caret_pos + 1, NULL), MAX_POS_REACHED) < 0)
+ {
+ ERROR(MEMORY_ERROR);
+ return NULL;
+ }
+ }
else
- {
- if(asprintf(&return_text, "%s", (char*)atspi_text_get_text(text_interface, caret_pos, caret_pos + 1, NULL)) < 0)
- {
- ERROR(MEMORY_ERROR);
- return NULL;
- }
- }
- }
- else
- {
- ERROR(MEMORY_ERROR);
- return NULL;
- }
- return return_text;
+ {
+ if(asprintf(&return_text, "%s", (char*)atspi_text_get_text(text_interface, caret_pos, caret_pos + 1, NULL)) < 0)
+ {
+ ERROR(MEMORY_ERROR);
+ return NULL;
+ }
+ }
+ }
+ else
+ {
+ ERROR(MEMORY_ERROR);
+ return NULL;
+ }
+ return return_text;
}
static char *spi_on_value_changed_get_text(AtspiEvent *event, void *user_data)
{
- Service_Data *sd = (Service_Data*)user_data;
- char *text_to_read;
-
- sd->currently_focused = event->source;
-
- AtspiValue *value_interface = atspi_accessible_get_value_iface(sd->currently_focused);
- if(value_interface)
- {
- DEBUG("->->->->->-> WIDGET VALUE CHANGED: %s <-<-<-<-<-<-<-",
- atspi_accessible_get_name(sd->currently_focused, NULL));
-
- double current_temp_value = (double)atspi_value_get_current_value(value_interface, NULL);
- if(abs(current_temp_value - atspi_value_get_maximum_value(value_interface, NULL)) < EPS)
- {
- DEBUG("MAX VALUE REACHED");
- if(asprintf(&text_to_read, "%.2f %s", current_temp_value, MAX_REACHED) < 0)
- {
- ERROR(MEMORY_ERROR);
- return NULL;
- }
- }
- else if(abs(current_temp_value - atspi_value_get_minimum_value(value_interface, NULL)) < EPS)
- {
- DEBUG("MIN VALUE REACHED");
- if(asprintf(&text_to_read, "%.2f %s", current_temp_value, MIN_REACHED) < 0)
- {
- ERROR(MEMORY_ERROR);
- return NULL;
- }
- }
- else
- {
- if(asprintf(&text_to_read, "%.2f", current_temp_value) < 0)
- {
- ERROR(MEMORY_ERROR);
- return NULL;
- }
- }
- }
-
- return text_to_read;
+ Service_Data *sd = (Service_Data*)user_data;
+ char *text_to_read;
+
+ sd->currently_focused = event->source;
+
+ AtspiValue *value_interface = atspi_accessible_get_value_iface(sd->currently_focused);
+ if(value_interface)
+ {
+ DEBUG("->->->->->-> WIDGET VALUE CHANGED: %s <-<-<-<-<-<-<-",
+ atspi_accessible_get_name(sd->currently_focused, NULL));
+
+ double current_temp_value = (double)atspi_value_get_current_value(value_interface, NULL);
+ if(abs(current_temp_value - atspi_value_get_maximum_value(value_interface, NULL)) < EPS)
+ {
+ DEBUG("MAX VALUE REACHED");
+ if(asprintf(&text_to_read, "%.2f %s", current_temp_value, MAX_REACHED) < 0)
+ {
+ ERROR(MEMORY_ERROR);
+ return NULL;
+ }
+ }
+ else if(abs(current_temp_value - atspi_value_get_minimum_value(value_interface, NULL)) < EPS)
+ {
+ DEBUG("MIN VALUE REACHED");
+ if(asprintf(&text_to_read, "%.2f %s", current_temp_value, MIN_REACHED) < 0)
+ {
+ ERROR(MEMORY_ERROR);
+ return NULL;
+ }
+ }
+ else
+ {
+ if(asprintf(&text_to_read, "%.2f", current_temp_value) < 0)
+ {
+ ERROR(MEMORY_ERROR);
+ return NULL;
+ }
+ }
+ }
+
+ return text_to_read;
}
char *spi_event_get_text_to_read(AtspiEvent *event, void *user_data)
{
- DEBUG("START");
-
- Service_Data *sd = (Service_Data*)user_data;
- char *text_to_read;
-
- DEBUG("TRACK SIGNAL:%s", sd->tracking_signal_name);
- DEBUG("WENT EVENT:%s", event->type);
-
- if(!sd->tracking_signal_name)
- {
- ERROR("Invalid tracking signal name");
- return NULL;
- }
-
- if(!strncmp(event->type, sd->tracking_signal_name, strlen(event->type)) && event->detail1 == 1)
- {
- text_to_read = spi_on_state_changed_get_text(event, user_data);
- }
- else if(!strncmp(event->type, CARET_MOVED_SIG, strlen(event->type)))
- {
- text_to_read = spi_on_caret_move_get_text(event, user_data);
- }
- else if(!strncmp(event->type, VALUE_CHANGED_SIG, strlen(event->type)))
- {
- text_to_read = spi_on_value_changed_get_text(event, user_data);
- }
- else
- {
- ERROR("Unknown event type");
- return NULL;
- }
-
- return text_to_read;
+ DEBUG("START");
+
+ Service_Data *sd = (Service_Data*)user_data;
+ char *text_to_read;
+
+ DEBUG("TRACK SIGNAL:%s", sd->tracking_signal_name);
+ DEBUG("WENT EVENT:%s", event->type);
+
+ if(!sd->tracking_signal_name)
+ {
+ ERROR("Invalid tracking signal name");
+ return NULL;
+ }
+
+ if(!strncmp(event->type, sd->tracking_signal_name, strlen(event->type)) && event->detail1 == 1)
+ {
+ text_to_read = spi_on_state_changed_get_text(event, user_data);
+ }
+ else if(!strncmp(event->type, CARET_MOVED_SIG, strlen(event->type)))
+ {
+ text_to_read = spi_on_caret_move_get_text(event, user_data);
+ }
+ else if(!strncmp(event->type, VALUE_CHANGED_SIG, strlen(event->type)))
+ {
+ text_to_read = spi_on_value_changed_get_text(event, user_data);
+ }
+ else
+ {
+ ERROR("Unknown event type");
+ return NULL;
+ }
+
+ return text_to_read;
}
void spi_event_listener_cb(AtspiEvent *event, void *user_data)
{
- DEBUG("START")
-
- display_info(event);
-
- if(!user_data)
- {
- ERROR("Invalid parameter");
- return;
- }
-
- char *text_to_read = spi_event_get_text_to_read(event, user_data);
- if(!text_to_read)
- {
- ERROR("Can not prepare text to read");
- return;
- }
- DEBUG("SPEAK:%s", text_to_read)
- tts_speak(text_to_read, EINA_FALSE);
- free(text_to_read);
- DEBUG("END")
+ DEBUG("START")
+
+ display_info(event);
+
+ if(!user_data)
+ {
+ ERROR("Invalid parameter");
+ return;
+ }
+
+ char *text_to_read = spi_event_get_text_to_read(event, user_data);
+ if(!text_to_read)
+ {
+ ERROR("Can not prepare text to read");
+ return;
+ }
+ DEBUG("SPEAK:%s", text_to_read)
+ tts_speak(text_to_read, EINA_FALSE);
+ free(text_to_read);
+ DEBUG("END")
}
/**
**/
void spi_init(Service_Data *sd)
{
- if(!sd)
- {
- ERROR("Invalid parameter");
- return;
- }
- DEBUG( "--------------------- SPI_init START ---------------------");
- service_data = sd;
-
- DEBUG( ">>> Creating listeners <<<");
-
- sd->spi_listener = atspi_event_listener_new(spi_event_listener_cb, service_data, NULL);
- if(sd->spi_listener == NULL)
+ if(!sd)
+ {
+ ERROR("Invalid parameter");
+ return;
+ }
+ DEBUG( "--------------------- SPI_init START ---------------------");
+ service_data = sd;
+
+ DEBUG( ">>> Creating listeners <<<");
+
+ sd->spi_listener = atspi_event_listener_new(spi_event_listener_cb, service_data, NULL);
+ if(sd->spi_listener == NULL)
{
DEBUG("FAILED TO CREATE spi state changed listener")
}
- // ---------------------------------------------------------------------------------------------------
+ // ---------------------------------------------------------------------------------------------------
- DEBUG("TRACKING SIGNAL:%s", sd->tracking_signal_name);
+ DEBUG("TRACKING SIGNAL:%s", sd->tracking_signal_name);
- gboolean ret1 = atspi_event_listener_register(sd->spi_listener, sd->tracking_signal_name, NULL);
- if(ret1 == false)
+ gboolean ret1 = atspi_event_listener_register(sd->spi_listener, sd->tracking_signal_name, NULL);
+ if(ret1 == false)
{
DEBUG("FAILED TO REGISTER spi focus/highlight listener");
}
- gboolean ret2 = atspi_event_listener_register(sd->spi_listener, CARET_MOVED_SIG, NULL);
- if(ret2 == false)
+ gboolean ret2 = atspi_event_listener_register(sd->spi_listener, CARET_MOVED_SIG, NULL);
+ if(ret2 == false)
{
DEBUG("FAILED TO REGISTER spi caret moved listener");
}
- gboolean ret3 = atspi_event_listener_register(sd->spi_listener, VALUE_CHANGED_SIG, NULL);
- if(ret3 == false)
+ gboolean ret3 = atspi_event_listener_register(sd->spi_listener, VALUE_CHANGED_SIG, NULL);
+ if(ret3 == false)
{
DEBUG("FAILED TO REGISTER spi value changed listener");
}
- if(ret1 == true && ret2 == true && ret3 == true)
+ if(ret1 == true && ret2 == true && ret3 == true)
{
DEBUG("spi listener REGISTERED");
}
- DEBUG( "---------------------- SPI_init END ----------------------\n\n");
+ DEBUG( "---------------------- SPI_init END ----------------------\n\n");
}
*/
void system_notifications_init(void)
{
- // BATTERY LOW/FULL
- device_add_callback(DEVICE_CALLBACK_BATTERY_LEVEL, device_system_cb, NULL);
- // BATTERY CHARGING/NOT-CHARGING
- device_add_callback(DEVICE_CALLBACK_BATTERY_CHARGING, device_system_cb, NULL);
- // SCREEN OFF/ON
- device_add_callback(DEVICE_CALLBACK_DISPLAY_STATE, device_system_cb, NULL);
+ // BATTERY LOW/FULL
+ device_add_callback(DEVICE_CALLBACK_BATTERY_LEVEL, device_system_cb, NULL);
+ // BATTERY CHARGING/NOT-CHARGING
+ device_add_callback(DEVICE_CALLBACK_BATTERY_CHARGING, device_system_cb, NULL);
+ // SCREEN OFF/ON
+ device_add_callback(DEVICE_CALLBACK_DISPLAY_STATE, device_system_cb, NULL);
}
/**
*/
void system_notifications_shutdown(void)
{
- // BATTERY LOW/FULL
- device_remove_callback(DEVICE_CALLBACK_BATTERY_LEVEL, device_system_cb);
- // BATTERY CHARGING/NOT-CHARGING
- device_remove_callback(DEVICE_CALLBACK_BATTERY_CHARGING, device_system_cb);
- // SCREEN OFF/ON
- device_remove_callback(DEVICE_CALLBACK_DISPLAY_STATE, device_system_cb);
+ // BATTERY LOW/FULL
+ device_remove_callback(DEVICE_CALLBACK_BATTERY_LEVEL, device_system_cb);
+ // BATTERY CHARGING/NOT-CHARGING
+ device_remove_callback(DEVICE_CALLBACK_BATTERY_CHARGING, device_system_cb);
+ // SCREEN OFF/ON
+ device_remove_callback(DEVICE_CALLBACK_DISPLAY_STATE, device_system_cb);
}
/**
*/
static void device_system_cb(device_callback_e type, void *value, void *user_data)
{
- if(type == DEVICE_CALLBACK_BATTERY_LEVEL)
+ if(type == DEVICE_CALLBACK_BATTERY_LEVEL)
{
device_battery_level_e status;
if(device_battery_get_level_status(&status))
- {
- ERROR("Cannot get battery level status");
- return;
- }
+ {
+ ERROR("Cannot get battery level status");
+ return;
+ }
if(status == DEVICE_BATTERY_LEVEL_LOW)
- {
- tts_speak(BATTERY_LOW, EINA_TRUE);
- }
+ {
+ tts_speak(BATTERY_LOW, EINA_TRUE);
+ }
else if(status == DEVICE_BATTERY_LEVEL_CRITICAL)
- {
- tts_speak(BATTERY_CRITICAL, EINA_TRUE);
- }
+ {
+ tts_speak(BATTERY_CRITICAL, EINA_TRUE);
+ }
else if(status == DEVICE_BATTERY_LEVEL_FULL)
- {
- tts_speak(BATTERY_FULL, EINA_TRUE);
- }
+ {
+ tts_speak(BATTERY_FULL, EINA_TRUE);
+ }
}
- else if(type == DEVICE_CALLBACK_BATTERY_CHARGING)
+ else if(type == DEVICE_CALLBACK_BATTERY_CHARGING)
{
bool charging;
if(device_battery_is_charging(&charging))
- {
- ERROR("Cannot check if battery is charging");
- return;
- }
+ {
+ ERROR("Cannot check if battery is charging");
+ return;
+ }
if(charging)
- {
- tts_speak(CHARGING, EINA_FALSE);
- }
+ {
+ tts_speak(CHARGING, EINA_FALSE);
+ }
else
- {
- tts_speak(NOT_CHARGING, EINA_FALSE);
- }
+ {
+ tts_speak(NOT_CHARGING, EINA_FALSE);
+ }
}
- else if(type == DEVICE_CALLBACK_DISPLAY_STATE)
+ else if(type == DEVICE_CALLBACK_DISPLAY_STATE)
{
display_state_e state;
if(device_display_get_state(&state))
- {
- ERROR("Cannot check if battery is charging");
- return;
- }
+ {
+ ERROR("Cannot check if battery is charging");
+ return;
+ }
if(state == DISPLAY_STATE_NORMAL)
- {
- tts_speak(SCREEN_ON, EINA_FALSE);
- }
+ {
+ tts_speak(SCREEN_ON, EINA_FALSE);
+ }
else if(state == DISPLAY_STATE_SCREEN_OFF)
- {
- tts_speak(SCREEN_OFF, EINA_FALSE);
- }
+ {
+ tts_speak(SCREEN_OFF, EINA_FALSE);
+ }
}
}
static char * get_tts_error( int r )
{
- switch( r )
- {
- case TTS_ERROR_NONE:
- {
- return "no error";
- }
- case TTS_ERROR_INVALID_PARAMETER:
- {
- return "inv param";
- }
- case TTS_ERROR_OUT_OF_MEMORY:
- {
- return "out of memory";
- }
- case TTS_ERROR_OPERATION_FAILED:
- {
- return "oper failed";
- }
- case TTS_ERROR_INVALID_STATE:
- {
- return "inv state";
- }
- default:
- {
- return "uknown error";
- }
+ switch( r )
+ {
+ case TTS_ERROR_NONE:
+ {
+ return "no error";
+ }
+ case TTS_ERROR_INVALID_PARAMETER:
+ {
+ return "inv param";
+ }
+ case TTS_ERROR_OUT_OF_MEMORY:
+ {
+ return "out of memory";
+ }
+ case TTS_ERROR_OPERATION_FAILED:
+ {
+ return "oper failed";
+ }
+ case TTS_ERROR_INVALID_STATE:
+ {
+ return "inv state";
+ }
+ default:
+ {
+ return "uknown error";
+ }
}
}
static char * get_tts_state( tts_state_e r )
{
- switch( r )
- {
- case TTS_STATE_CREATED:
- {
- return "created";
- }
- case TTS_STATE_READY:
- {
- return "ready";
- }
- case TTS_STATE_PLAYING:
- {
- return "playing";
- }
- case TTS_STATE_PAUSED:
- {
- return "pause";
- }
- default:
- {
- return "uknown state";
- }
+ switch( r )
+ {
+ case TTS_STATE_CREATED:
+ {
+ return "created";
+ }
+ case TTS_STATE_READY:
+ {
+ return "ready";
+ }
+ case TTS_STATE_PLAYING:
+ {
+ return "playing";
+ }
+ case TTS_STATE_PAUSED:
+ {
+ return "pause";
+ }
+ default:
+ {
+ return "uknown state";
+ }
}
}
bool get_supported_voices_cb(tts_h tts, const char* language, int voice_type, void* user_data)
{
- DEBUG("LANG: %s; TYPE: %d", language, voice_type);
+ DEBUG("LANG: %s; TYPE: %d", language, voice_type);
- Service_Data *sd = user_data;
- Voice_Info *vi = calloc(1, sizeof(Voice_Info));
+ Service_Data *sd = user_data;
+ Voice_Info *vi = calloc(1, sizeof(Voice_Info));
- if(asprintf(&vi->language, "%s",language) < 0)
+ if(asprintf(&vi->language, "%s",language) < 0)
{
free(vi);
ERROR(MEMORY_ERROR);
return ECORE_CALLBACK_CANCEL;
}
- vi->voice_type = voice_type;
+ vi->voice_type = voice_type;
- sd->available_languages = eina_list_append(sd->available_languages, vi);
+ sd->available_languages = eina_list_append(sd->available_languages, vi);
- return ECORE_CALLBACK_RENEW;
+ return ECORE_CALLBACK_RENEW;
}
static void __tts_test_utt_started_cb(tts_h tts, int utt_id, void* user_data)
{
- DEBUG("Utterance started : utt id(%d) \n", utt_id);
- return;
+ DEBUG("Utterance started : utt id(%d) \n", utt_id);
+ return;
}
static void __tts_test_utt_completed_cb(tts_h tts, int utt_id, void* user_data)
{
- DEBUG("Utterance completed : utt id(%d) \n", utt_id);
- if(last_utt_id - utt_id > FLUSH_LIMIT)
- flush_flag = EINA_TRUE;
- else
+ DEBUG("Utterance completed : utt id(%d) \n", utt_id);
+ if(last_utt_id - utt_id > FLUSH_LIMIT)
+ flush_flag = EINA_TRUE;
+ else
{
if(flush_flag)
flush_flag = EINA_FALSE;
}
- return;
+ return;
}
bool tts_init(void *data)
{
- DEBUG( "--------------------- TTS_init START ---------------------");
- Service_Data *sd = data;
+ DEBUG( "--------------------- TTS_init START ---------------------");
+ Service_Data *sd = data;
- int r = tts_create( &sd->tts );
- DEBUG( "Create tts %d (%s)", r, get_tts_error( r ) );
+ int r = tts_create( &sd->tts );
+ DEBUG( "Create tts %d (%s)", r, get_tts_error( r ) );
- r = tts_set_mode( sd->tts, TTS_MODE_DEFAULT );
- DEBUG( "Set tts mode SR %d (%s)", r, get_tts_error( r ) );
+ r = tts_set_mode( sd->tts, TTS_MODE_DEFAULT );
+ DEBUG( "Set tts mode SR %d (%s)", r, get_tts_error( r ) );
- r = tts_prepare( sd->tts );
- DEBUG( "Prepare tts %d (%s)", r, get_tts_error( r ) );
+ r = tts_prepare( sd->tts );
+ DEBUG( "Prepare tts %d (%s)", r, get_tts_error( r ) );
- tts_set_state_changed_cb(sd->tts, state_changed_cb, sd);
+ tts_set_state_changed_cb(sd->tts, state_changed_cb, sd);
- tts_set_utterance_started_cb(sd->tts, __tts_test_utt_started_cb, sd);
- tts_set_utterance_completed_cb( sd->tts, __tts_test_utt_completed_cb, sd);
+ tts_set_utterance_started_cb(sd->tts, __tts_test_utt_started_cb, sd);
+ tts_set_utterance_completed_cb( sd->tts, __tts_test_utt_completed_cb, sd);
- DEBUG( "---------------------- TTS_init END ----------------------\n\n");
- return true;
+ DEBUG( "---------------------- TTS_init END ----------------------\n\n");
+ return true;
}
Eina_Bool tts_pause_set(Eina_Bool pause_switch)
{
- Service_Data *sd = get_pointer_to_service_data_struct();
- if(!sd)
- return EINA_FALSE;
+ Service_Data *sd = get_pointer_to_service_data_struct();
+ if(!sd)
+ return EINA_FALSE;
- if(pause_switch)
+ if(pause_switch)
{
if(!tts_pause(sd->tts))
pause_state = EINA_TRUE;
else
return EINA_FALSE;
}
- else if(!pause_switch)
+ else if(!pause_switch)
{
if(!tts_play(sd->tts))
pause_state = EINA_FALSE;
else
return EINA_FALSE;
}
- return EINA_TRUE;
+ return EINA_TRUE;
}
Eina_Bool tts_speak(char *text_to_speak, Eina_Bool flush_switch)
{
- Service_Data *sd = get_pointer_to_service_data_struct();
- int speak_id;
+ Service_Data *sd = get_pointer_to_service_data_struct();
+ int speak_id;
- if(!sd)
- return EINA_FALSE;
+ if(!sd)
+ return EINA_FALSE;
- if(flush_flag || flush_switch)
- tts_stop(sd->tts);
+ if(flush_flag || flush_switch)
+ tts_stop(sd->tts);
- DEBUG( "tts_speak\n");
- DEBUG( "text to say:%s\n", text_to_speak);
- if ( !text_to_speak ) return EINA_FALSE;
- if ( !text_to_speak[0] ) return EINA_FALSE;
+ DEBUG( "tts_speak\n");
+ DEBUG( "text to say:%s\n", text_to_speak);
+ if ( !text_to_speak ) return EINA_FALSE;
+ if ( !text_to_speak[0] ) return EINA_FALSE;
- if(tts_add_text( sd->tts, text_to_speak, sd->language, TTS_VOICE_TYPE_AUTO, TTS_SPEED_AUTO, &speak_id))
- return EINA_FALSE;
+ if(tts_add_text( sd->tts, text_to_speak, sd->language, TTS_VOICE_TYPE_AUTO, TTS_SPEED_AUTO, &speak_id))
+ return EINA_FALSE;
- DEBUG("added id to:%d\n", speak_id);
- last_utt_id = speak_id;
+ DEBUG("added id to:%d\n", speak_id);
+ last_utt_id = speak_id;
- return EINA_TRUE;
+ return EINA_TRUE;
}
Eina_Bool update_supported_voices(void *data)
{
- DEBUG("START");
- tts_state_e state;
+ DEBUG("START");
+ tts_state_e state;
- Service_Data *sd = data;
+ Service_Data *sd = data;
- int res = tts_get_state(sd->tts, &state);
+ int res = tts_get_state(sd->tts, &state);
- if(res != TTS_ERROR_NONE)
+ if(res != TTS_ERROR_NONE)
{
DEBUG("CANNOT RETRIVE STATE");
return EINA_FALSE;
}
- if(state == TTS_STATE_READY)
+ if(state == TTS_STATE_READY)
{
tts_foreach_supported_voices(sd->tts, get_supported_voices_cb, sd);
}
- else
+ else
{
sd->update_language_list = EINA_TRUE;
}
- DEBUG("END")
- return EINA_TRUE;
+ DEBUG("END")
+ return EINA_TRUE;
}
void state_changed_cb(tts_h tts, tts_state_e previous, tts_state_e current, void* user_data)
{
- if(pause_state)
+ if(pause_state)
{
DEBUG("TTS is currently paused. Resume to start reading");
return;
}
- DEBUG("++++++++++++++++state_changed_cb\n++++++++++++++++++");
- DEBUG("current state:%s and previous state:%s\n", get_tts_state(current), get_tts_state(previous));
- Service_Data *sd = user_data;
+ DEBUG("++++++++++++++++state_changed_cb\n++++++++++++++++++");
+ DEBUG("current state:%s and previous state:%s\n", get_tts_state(current), get_tts_state(previous));
+ Service_Data *sd = user_data;
- if(current == TTS_STATE_READY || current == TTS_STATE_PAUSED)
+ if(current == TTS_STATE_READY || current == TTS_STATE_PAUSED)
{
DEBUG("TTS state == %s!", get_tts_state(current));
tts_play(sd->tts);
}
- else
+ else
{
DEBUG("TTS state != ready or paused!\n");
}
void spi_stop( void *data)
{
- if(!data)
- {
- ERROR("Invalid parameter");
- return;
- }
-
- Service_Data *sd = data;
- sd->update_language_list = false;
- free((char*)sd->text_from_dbus);
- free(sd->current_value);
- sd->text_from_dbus = NULL;
- sd->current_value = NULL;
- tts_stop(sd->tts);
+ if(!data)
+ {
+ ERROR("Invalid parameter");
+ return;
+ }
+
+ Service_Data *sd = data;
+ sd->update_language_list = false;
+ free((char*)sd->text_from_dbus);
+ free(sd->current_value);
+ sd->text_from_dbus = NULL;
+ sd->current_value = NULL;
+ tts_stop(sd->tts);
}
#include "logger.h"
#ifdef RUN_IPC_TEST_SUIT
- #include "test_suite/test_suite.h"
+#include "test_suite/test_suite.h"
#endif
#ifdef LOG_TAG
- #undef LOG_TAG
+#undef LOG_TAG
#endif
#define LOG_TAG "SCREEN READER VCONF"
bool set_langauge(Service_Data *sd, const char *new_language, int new_voice)
{
- DEBUG("START");
-
- Eina_List *l;
- Voice_Info *vi;
-
- if(strncmp(sd->language, new_language, LAN_NAME - 1) == 0 && sd->voice_type == new_voice)
- {
- DEBUG("No need to change accessibility language: %s(%d) -> %s(%d)",
- sd->language, sd->voice_type, new_language, new_voice);
-
- return true;
- }
-
- EINA_LIST_FOREACH(sd->available_languages, l, vi)
- {
- DEBUG("foreach %s <- %s", vi->language, new_language);
- if(strncmp(vi->language, new_language, LAN_NAME - 1) == 0 &&
- vi->voice_type == new_voice)
- {
- DEBUG("str_cpy %s (%d) -> %s (%d)", sd->language, sd->voice_type, vi->language, vi->voice_type);
- snprintf(sd->language, LAN_NAME, "%s", vi->language);
- sd->voice_type = vi->voice_type;
- DEBUG("after_str_cpy");
-
- DEBUG("ACCESSIBILITY LANGUAGE CHANGED");
- DEBUG("END");
- return true;
- }
- }
-
- DEBUG("ACCESSIBILITY LANGUAGE FAILED TO CHANGED");
-
- vconf_set_str("db/setting/accessibility/language", sd->language);
- vconf_set_int("db/setting/accessibility/voice", sd->voice_type);
-
- DEBUG("END");
- return false;
+ DEBUG("START");
+
+ Eina_List *l;
+ Voice_Info *vi;
+
+ if(strncmp(sd->language, new_language, LAN_NAME - 1) == 0 && sd->voice_type == new_voice)
+ {
+ DEBUG("No need to change accessibility language: %s(%d) -> %s(%d)",
+ sd->language, sd->voice_type, new_language, new_voice);
+
+ return true;
+ }
+
+ EINA_LIST_FOREACH(sd->available_languages, l, vi)
+ {
+ DEBUG("foreach %s <- %s", vi->language, new_language);
+ if(strncmp(vi->language, new_language, LAN_NAME - 1) == 0 &&
+ vi->voice_type == new_voice)
+ {
+ DEBUG("str_cpy %s (%d) -> %s (%d)", sd->language, sd->voice_type, vi->language, vi->voice_type);
+ snprintf(sd->language, LAN_NAME, "%s", vi->language);
+ sd->voice_type = vi->voice_type;
+ DEBUG("after_str_cpy");
+
+ DEBUG("ACCESSIBILITY LANGUAGE CHANGED");
+ DEBUG("END");
+ return true;
+ }
+ }
+
+ DEBUG("ACCESSIBILITY LANGUAGE FAILED TO CHANGED");
+
+ vconf_set_str("db/setting/accessibility/language", sd->language);
+ vconf_set_int("db/setting/accessibility/voice", sd->voice_type);
+
+ DEBUG("END");
+ return false;
}
// ------------------------------ vconf callbacks----------------------
void information_level_cb(keynode_t *node, void *user_data)
{
- DEBUG("START");
- DEBUG("Information level set: %d", node->value.i);
+ DEBUG("START");
+ DEBUG("Information level set: %d", node->value.i);
- Service_Data *service_data = user_data;
- service_data->information_level = node->value.i;
+ Service_Data *service_data = user_data;
+ service_data->information_level = node->value.i;
- DEBUG("END");
+ DEBUG("END");
}
void app_termination_cb(keynode_t *node, void *user_data)
{
- DEBUG("START");
- DEBUG("Application terminate %d", !node->value.i);
+ DEBUG("START");
+ DEBUG("Application terminate %d", !node->value.i);
- Service_Data *service_data = user_data;
- service_data->run_service = node->value.i;
+ Service_Data *service_data = user_data;
+ service_data->run_service = node->value.i;
- if(service_data->run_service == 0)
- {
- elm_exit();
- }
+ if(service_data->run_service == 0)
+ {
+ elm_exit();
+ }
- DEBUG("END");
+ DEBUG("END");
}
void language_cb(keynode_t *node, void *user_data)
{
- DEBUG("START");
- DEBUG("Trying to set language to: %s", node->value.s);
+ DEBUG("START");
+ DEBUG("Trying to set language to: %s", node->value.s);
- Service_Data *sd = user_data;
+ Service_Data *sd = user_data;
- int voice_type;
+ int voice_type;
- vconf_get_int("db/setting/accessibility/voice", (int*)(&voice_type));
- set_langauge(sd, node->value.s, voice_type);
+ vconf_get_int("db/setting/accessibility/voice", (int*)(&voice_type));
+ set_langauge(sd, node->value.s, voice_type);
- DEBUG("END");
+ DEBUG("END");
}
void voice_cb(keynode_t *node, void *user_data)
{
- DEBUG("START");
- DEBUG("Voice set to: %d", node->value.i);
+ DEBUG("START");
+ DEBUG("Voice set to: %d", node->value.i);
- Service_Data *sd = user_data;
+ Service_Data *sd = user_data;
- const char *lang = vconf_get_str("db/setting/accessibility/language");
- set_langauge(sd, lang, (int)node->value.i);
+ const char *lang = vconf_get_str("db/setting/accessibility/language");
+ set_langauge(sd, lang, (int)node->value.i);
- DEBUG("END");
+ DEBUG("END");
}
void reading_speed_cb(keynode_t *node, void *user_data)
{
- DEBUG("START");
- DEBUG("Reading speed set to: %d", node->value.i);
+ DEBUG("START");
+ DEBUG("Reading speed set to: %d", node->value.i);
- Service_Data *service_data = user_data;
- service_data->reading_speed = node->value.i;
+ Service_Data *service_data = user_data;
+ service_data->reading_speed = node->value.i;
- DEBUG("END");
+ DEBUG("END");
}
// --------------------------------------------------------------------
int get_key_values(Service_Data *sd)
{
- DEBUG("START");
+ DEBUG("START");
- char *language = vconf_get_str("db/setting/accessibility/language");
+ char *language = vconf_get_str("db/setting/accessibility/language");
- if(sd->language == NULL)
- {
- DEBUG("FAILED TO SET LANGUAGE");
- }
+ if(sd->language == NULL)
+ {
+ DEBUG("FAILED TO SET LANGUAGE");
+ }
- int ret = -1;
- int to_ret = 0;
+ int ret = -1;
+ int to_ret = 0;
- int voice;
- ret = vconf_get_int("db/setting/accessibility/voice", &voice);
- if(ret != 0)
- {
- to_ret -= -1;
- DEBUG("FAILED TO SET VOICE TYPE: %d", ret);
- }
+ int voice;
+ ret = vconf_get_int("db/setting/accessibility/voice", &voice);
+ if(ret != 0)
+ {
+ to_ret -= -1;
+ DEBUG("FAILED TO SET VOICE TYPE: %d", ret);
+ }
- set_langauge(sd, language, voice);
+ set_langauge(sd, language, voice);
- ret = vconf_get_int("db/setting/accessibility/speech_rate", &sd->reading_speed);
- if(ret != 0)
- {
- to_ret -= -2;
- DEBUG("FAILED TO SET READING SPEED: %d", ret);
- }
+ ret = vconf_get_int("db/setting/accessibility/speech_rate", &sd->reading_speed);
+ if(ret != 0)
+ {
+ to_ret -= -2;
+ DEBUG("FAILED TO SET READING SPEED: %d", ret);
+ }
- ret = vconf_get_int("db/setting/accessibility/information_level", &sd->information_level);
- if(ret != 0)
- {
- to_ret -= -4;
- DEBUG("FAILED TO SET INFORMATION LEVEL: %d", ret);
- }
+ ret = vconf_get_int("db/setting/accessibility/information_level", &sd->information_level);
+ if(ret != 0)
+ {
+ to_ret -= -4;
+ DEBUG("FAILED TO SET INFORMATION LEVEL: %d", ret);
+ }
- DEBUG("SCREEN READER DATA SET TO: Language: %s; Voice: %d, Reading_Speed: %d, Information_Level: %d, Tracking signal: %s;",
- sd->language, sd->voice_type, sd->reading_speed, sd->information_level, sd->tracking_signal_name);
+ DEBUG("SCREEN READER DATA SET TO: Language: %s; Voice: %d, Reading_Speed: %d, Information_Level: %d, Tracking signal: %s;",
+ sd->language, sd->voice_type, sd->reading_speed, sd->information_level, sd->tracking_signal_name);
- DEBUG("END");
- return to_ret;
+ DEBUG("END");
+ return to_ret;
}
bool vconf_init(Service_Data *service_data)
{
- DEBUG( "--------------------- VCONF_init START ---------------------");
- int ret = 0;
-
- if(vconf_set(keys))
- {
- DEBUG("nothing is written\n");
- }
- else
- {
- DEBUG("everything is written\n");
- }
-
- vconf_keylist_free(keys);
- // ----------------------------------------------------------------------------------
-
- ret = get_key_values(service_data);
- if(ret != 0)
- {
- DEBUG("Could not set data from vconf: %d", ret);
- }
-
- ret = vconf_notify_key_changed("db/setting/accessibility/information_level", information_level_cb, service_data);
- if(ret != 0)
- {
- DEBUG("Could not add information level callback");
- return false;
- }
-
- ret = vconf_notify_key_changed("db/menu_widget/language", language_cb, service_data);
- if(ret != 0)
- {
- DEBUG("Could not add language callback");
- return false;
- }
-
- ret = vconf_notify_key_changed("db/setting/accessibility/language", language_cb, service_data);
- if(ret != 0)
- {
- DEBUG("Could not add language callback");
- return false;
- }
-
- ret = vconf_notify_key_changed("db/setting/accessibility/voice", voice_cb, service_data);
- if(ret != 0)
- {
- DEBUG("Could not add voice callback");
- return false;
- }
-
- ret = vconf_notify_key_changed("db/setting/accessibility/speech_rate", reading_speed_cb, service_data);
- if(ret != 0)
- {
- DEBUG("Could not add reading speed callback callback");
- return false;
- }
-
- DEBUG("ALL CALBACKS ADDED");
-
- DEBUG( "---------------------- VCONF_init END ----------------------\n\n");
- return true;
+ DEBUG( "--------------------- VCONF_init START ---------------------");
+ int ret = 0;
+
+ if(vconf_set(keys))
+ {
+ DEBUG("nothing is written\n");
+ }
+ else
+ {
+ DEBUG("everything is written\n");
+ }
+
+ vconf_keylist_free(keys);
+ // ----------------------------------------------------------------------------------
+
+ ret = get_key_values(service_data);
+ if(ret != 0)
+ {
+ DEBUG("Could not set data from vconf: %d", ret);
+ }
+
+ ret = vconf_notify_key_changed("db/setting/accessibility/information_level", information_level_cb, service_data);
+ if(ret != 0)
+ {
+ DEBUG("Could not add information level callback");
+ return false;
+ }
+
+ ret = vconf_notify_key_changed("db/menu_widget/language", language_cb, service_data);
+ if(ret != 0)
+ {
+ DEBUG("Could not add language callback");
+ return false;
+ }
+
+ ret = vconf_notify_key_changed("db/setting/accessibility/language", language_cb, service_data);
+ if(ret != 0)
+ {
+ DEBUG("Could not add language callback");
+ return false;
+ }
+
+ ret = vconf_notify_key_changed("db/setting/accessibility/voice", voice_cb, service_data);
+ if(ret != 0)
+ {
+ DEBUG("Could not add voice callback");
+ return false;
+ }
+
+ ret = vconf_notify_key_changed("db/setting/accessibility/speech_rate", reading_speed_cb, service_data);
+ if(ret != 0)
+ {
+ DEBUG("Could not add reading speed callback callback");
+ return false;
+ }
+
+ DEBUG("ALL CALBACKS ADDED");
+
+ DEBUG( "---------------------- VCONF_init END ----------------------\n\n");
+ return true;
}
*/
void smart_notification(Notification_Type nt, int start_index, int end_index)
{
- DEBUG("START");
- if(!status)
- return;
-
- switch(nt)
- {
- case FOCUS_CHAIN_END_NOTIFICATION_EVENT:
- _smart_notification_focus_chain_end();
- break;
- case REALIZED_ITEMS_NOTIFICATION_EVENT:
- _smart_notification_realized_items(start_index, end_index);
- break;
- default:
- DEBUG("Gesture type %d not handled in switch", nt);
- }
+ DEBUG("START");
+ if(!status)
+ return;
+
+ switch(nt)
+ {
+ case FOCUS_CHAIN_END_NOTIFICATION_EVENT:
+ _smart_notification_focus_chain_end();
+ break;
+ case REALIZED_ITEMS_NOTIFICATION_EVENT:
+ _smart_notification_realized_items(start_index, end_index);
+ break;
+ default:
+ DEBUG("Gesture type %d not handled in switch", nt);
+ }
}
/**
*/
void get_realized_items_count(AtspiAccessible *scrollable_object, int *start_idx, int *end_idx)
{
- DEBUG("START");
- int count_child, jdx;
- AtspiAccessible *child_iter;
- AtspiStateType state = ATSPI_STATE_SHOWING;
+ DEBUG("START");
+ int count_child, jdx;
+ AtspiAccessible *child_iter;
+ AtspiStateType state = ATSPI_STATE_SHOWING;
- if(!scrollable_object)
+ if(!scrollable_object)
{
DEBUG("No scrollable object");
return;
}
- count_child = atspi_accessible_get_child_count(scrollable_object, NULL);
+ count_child = atspi_accessible_get_child_count(scrollable_object, NULL);
- for(jdx = 0; jdx < count_child; jdx++)
- {
- child_iter = atspi_accessible_get_child_at_index(scrollable_object, jdx, NULL);
+ for(jdx = 0; jdx < count_child; jdx++)
+ {
+ child_iter = atspi_accessible_get_child_at_index(scrollable_object, jdx, NULL);
- AtspiStateSet* state_set = atspi_accessible_get_state_set(child_iter);
+ AtspiStateSet* state_set = atspi_accessible_get_state_set(child_iter);
- gboolean is_visible = atspi_state_set_contains(state_set, state);
- if(is_visible)
- {
- *start_idx = jdx;
- DEBUG("Item with index %d is visible", jdx);
- }
- else
+ gboolean is_visible = atspi_state_set_contains(state_set, state);
+ if(is_visible)
+ {
+ *start_idx = jdx;
+ DEBUG("Item with index %d is visible", jdx);
+ }
+ else
DEBUG("Item with index %d is NOT visible", jdx);
- }
- *end_idx = *start_idx + 8;
+ }
+ *end_idx = *start_idx + 8;
}
/**
_scroll_event_cb(AtspiEvent *event, gpointer user_data)
{
if(!status)
- return;
+ return;
int start_index, end_index;
start_index = 0;
atspi_accessible_get_role_name(event->source, NULL));
if (!strcmp(event->type, "object:scroll-start"))
- {
- DEBUG("Scrolling started");
- tts_speak("Scrolling started", EINA_TRUE);
- }
+ {
+ DEBUG("Scrolling started");
+ tts_speak("Scrolling started", EINA_TRUE);
+ }
else if (!strcmp(event->type, "object:scroll-end"))
- {
- DEBUG("Scrolling finished");
- tts_speak("Scrolling finished", EINA_FALSE);
- get_realized_items_count((AtspiAccessible *)event->source, &start_index, &end_index);
- _smart_notification_realized_items(start_index, end_index);
- }
+ {
+ DEBUG("Scrolling finished");
+ tts_speak("Scrolling finished", EINA_FALSE);
+ get_realized_items_count((AtspiAccessible *)event->source, &start_index, &end_index);
+ _smart_notification_realized_items(start_index, end_index);
+ }
}
/**
*/
void smart_notification_init(void)
{
- DEBUG("Smart Notification init!");
+ DEBUG("Smart Notification init!");
- AtspiEventListener *listener;
+ AtspiEventListener *listener;
- listener = atspi_event_listener_new(_scroll_event_cb, NULL, NULL);
- atspi_event_listener_register(listener, "object:scroll-start", NULL);
- atspi_event_listener_register(listener, "object:scroll-end", NULL);
+ listener = atspi_event_listener_new(_scroll_event_cb, NULL, NULL);
+ atspi_event_listener_register(listener, "object:scroll-start", NULL);
+ atspi_event_listener_register(listener, "object:scroll-end", NULL);
- haptic_module_init();
+ haptic_module_init();
- status = EINA_TRUE;
+ status = EINA_TRUE;
}
/**
*/
void smart_notification_shutdown(void)
{
- status = EINA_FALSE;
+ status = EINA_FALSE;
}
/**
*/
static void _smart_notification_focus_chain_end(void)
{
- if(!status)
- return;
+ if(!status)
+ return;
- DEBUG(RED"Smart notification - FOCUS CHAIN END"RESET);
+ DEBUG(RED"Smart notification - FOCUS CHAIN END"RESET);
- tone_player_stop(0);
- tone_player_start(TONE_TYPE_SUP_CONFIRM, SOUND_TYPE_MEDIA, 200, NULL);
+ tone_player_stop(0);
+ tone_player_start(TONE_TYPE_SUP_CONFIRM, SOUND_TYPE_MEDIA, 200, NULL);
}
/**
*/
static void _smart_notification_realized_items(int start_idx, int end_idx)
{
- if(!status)
- return;
+ if(!status)
+ return;
- if(start_idx == end_idx)
- return;
+ if(start_idx == end_idx)
+ return;
- DEBUG(RED"Smart notification - Visible items notification"RESET);
+ DEBUG(RED"Smart notification - Visible items notification"RESET);
- char buf[256];
+ char buf[256];
- snprintf(buf, sizeof(buf), ITEMS_NOTIFICATION, start_idx, end_idx);
+ snprintf(buf, sizeof(buf), ITEMS_NOTIFICATION, start_idx, end_idx);
- tts_speak(strdup(buf), EINA_FALSE);
+ tts_speak(strdup(buf), EINA_FALSE);
}
int i;
for (i = 0; i < count; i++)
- {
- AtspiAccessible *child = atspi_accessible_get_child_at_index(parent, i, NULL);
- if (child) ret = eina_list_append(ret, child);
- }
+ {
+ AtspiAccessible *child = atspi_accessible_get_child_at_index(parent, i, NULL);
+ if (child) ret = eina_list_append(ret, child);
+ }
return ret;
}
AtspiAccessible *obj;
EINA_LIST_FREE(children, obj)
+ {
g_object_unref(obj);
+ }
}
static Eina_List*
lines = position_sort(tosort);
EINA_LIST_FOREACH(lines, l, line)
- {
- ret = eina_list_merge(ret, line);
- }
+ {
+ ret = eina_list_merge(ret, line);
+ }
eina_list_free(lines);
AtspiAccessible *structural_navi_same_level_next(AtspiAccessible *current)
{
- AtspiAccessible *parent;
- AtspiRole role;
+ AtspiAccessible *parent;
+ AtspiRole role;
- parent = atspi_accessible_get_parent(current, NULL);
- if (!parent) return NULL;
+ parent = atspi_accessible_get_parent(current, NULL);
+ if (!parent) return NULL;
- role = atspi_accessible_get_role(parent, NULL);
- if (role != ATSPI_ROLE_DESKTOP_FRAME)
+ role = atspi_accessible_get_role(parent, NULL);
+ if (role != ATSPI_ROLE_DESKTOP_FRAME)
{
Eina_List *children = _atspi_children_list_get(parent);
Eina_List *me = eina_list_data_find_list(children, current);
return ret;
}
- return NULL;
+ return NULL;
}
AtspiAccessible *structural_navi_same_level_prev(AtspiAccessible *current)
{
- AtspiAccessible *parent;
- AtspiRole role;
+ AtspiAccessible *parent;
+ AtspiRole role;
- parent = atspi_accessible_get_parent(current, NULL);
- if (!parent) return NULL;
+ parent = atspi_accessible_get_parent(current, NULL);
+ if (!parent) return NULL;
- role = atspi_accessible_get_role(parent, NULL);
- if (role != ATSPI_ROLE_DESKTOP_FRAME)
+ role = atspi_accessible_get_role(parent, NULL);
+ if (role != ATSPI_ROLE_DESKTOP_FRAME)
{
Eina_List *children = _atspi_children_list_get(parent);
Eina_List *sorted = _flat_review_get(children);
return ret;
}
- return NULL;
+ return NULL;
}
AtspiAccessible *structural_navi_level_up(AtspiAccessible *current)
{
- AtspiAccessible *parent;
- AtspiRole role;
+ AtspiAccessible *parent;
+ AtspiRole role;
- parent = atspi_accessible_get_parent(current, NULL);
- if (!parent) return NULL;
+ parent = atspi_accessible_get_parent(current, NULL);
+ if (!parent) return NULL;
- role = atspi_accessible_get_role(parent, NULL);
- if (role != ATSPI_ROLE_DESKTOP_FRAME)
+ role = atspi_accessible_get_role(parent, NULL);
+ if (role != ATSPI_ROLE_DESKTOP_FRAME)
{
return parent;
}
- return NULL;
+ return NULL;
}
AtspiAccessible *structural_navi_level_down(AtspiAccessible *current)
relations = atspi_accessible_get_relation_set(current, NULL);
- for (i = 0; i < relations->len; i++)
+ for (i = 0; i < relations->len; i++)
{
relation = g_array_index (relations, AtspiRelation*, i);
type = atspi_relation_get_relation_type(relation);
if (type == search_type)
- {
- ret = atspi_relation_get_target(relation, 0);
- break;
- }
+ {
+ ret = atspi_relation_get_target(relation, 0);
+ break;
+ }
}
g_array_free(relations, TRUE);
desktop_childs = atspi_accessible_get_child_count(obj, NULL);
- for (i=0; i < desktop_childs; i++) {
- app = atspi_accessible_get_child_at_index(obj, i, NULL);
- if (atspi_accessible_get_role(app, NULL) == ATSPI_ROLE_APPLICATION) {
- app_childs = atspi_accessible_get_child_count(app, NULL);
- for (j=0; j < app_childs; j++) {
- win = atspi_accessible_get_child_at_index(app, j, NULL);
- st = atspi_accessible_get_state_set (win);
- if (atspi_state_set_contains(st, ATSPI_STATE_ACTIVE))
- ret = win;
- }
+ for (i=0; i < desktop_childs; i++)
+ {
+ app = atspi_accessible_get_child_at_index(obj, i, NULL);
+ if (atspi_accessible_get_role(app, NULL) == ATSPI_ROLE_APPLICATION)
+ {
+ app_childs = atspi_accessible_get_child_count(app, NULL);
+ for (j=0; j < app_childs; j++)
+ {
+ win = atspi_accessible_get_child_at_index(app, j, NULL);
+ st = atspi_accessible_get_state_set (win);
+ if (atspi_state_set_contains(st, ATSPI_STATE_ACTIVE))
+ ret = win;
+ }
+ }
}
- }
return ret;
}
_on_atspi_window_cb(const AtspiEvent *event)
{
if (!strcmp(event->type, "window:restore") ||
- !strcmp(event->type, "window:activate"))
- {
- if (user_cb) user_cb(user_data, event->source);
+ !strcmp(event->type, "window:activate"))
+ {
+ if (user_cb) user_cb(user_data, event->source);
last_active_win = event->source;
- }
- else {
- AtspiAccessible *obj = NULL;
- obj = _get_window_object_from_given(event->source);
-
- if (obj) {
- if (!strcmp(event->type, "object:children-changed:add")) {
- if (user_cb) user_cb(user_data, obj);
- last_active_win = obj;
- }
}
- }
+ else
+ {
+ AtspiAccessible *obj = NULL;
+ obj = _get_window_object_from_given(event->source);
+
+ if (obj)
+ {
+ if (!strcmp(event->type, "object:children-changed:add"))
+ {
+ if (user_cb) user_cb(user_data, obj);
+ last_active_win = obj;
+ }
+ }
+ }
}
static AtspiAccessible*
last_active_win = NULL;
AtspiAccessible *desktop = atspi_get_desktop(0);
if (!desktop)
- ERROR("DESKTOP NOT FOUND");
+ ERROR("DESKTOP NOT FOUND");
- for (i = 0; i < atspi_accessible_get_child_count(desktop, NULL); i++) {
- AtspiAccessible *app = atspi_accessible_get_child_at_index(desktop, i, NULL);
- for (j = 0; j < atspi_accessible_get_child_count(app, NULL); j++) {
- AtspiAccessible *win = atspi_accessible_get_child_at_index(app, j, NULL);
- AtspiStateSet *states = atspi_accessible_get_state_set(win);
- AtspiRole role = atspi_accessible_get_role(win, NULL);
-
- if ((atspi_state_set_contains(states, ATSPI_STATE_ACTIVE)) && (role == ATSPI_ROLE_WINDOW))
+ for (i = 0; i < atspi_accessible_get_child_count(desktop, NULL); i++)
+ {
+ AtspiAccessible *app = atspi_accessible_get_child_at_index(desktop, i, NULL);
+ for (j = 0; j < atspi_accessible_get_child_count(app, NULL); j++)
{
+ AtspiAccessible *win = atspi_accessible_get_child_at_index(app, j, NULL);
+ AtspiStateSet *states = atspi_accessible_get_state_set(win);
+ AtspiRole role = atspi_accessible_get_role(win, NULL);
+
+ if ((atspi_state_set_contains(states, ATSPI_STATE_ACTIVE)) && (role == ATSPI_ROLE_WINDOW))
+ {
+ g_object_unref(states);
+ last_active_win = win;
+ break;
+ }
g_object_unref(states);
- last_active_win = win;
- break;
}
- g_object_unref(states);
- }
- }
+ }
DEBUG("END");
return last_active_win;
}
void atspi_rect_free (AtspiRect *rect)
{
- g_free (rect);
+ g_free (rect);
}
AtspiRect *atspi_rect_copy (AtspiRect *src)
{
- AtspiRect *dst = g_new (AtspiRect, 1);
- dst->x = src->x;
- dst->y = src->y;
- dst->height = src->height;
- dst->width = src->width;
- return dst;
+ AtspiRect *dst = g_new (AtspiRect, 1);
+ dst->x = src->x;
+ dst->y = src->y;
+ dst->height = src->height;
+ dst->width = src->width;
+ return dst;
}
G_DEFINE_BOXED_TYPE (AtspiRect, atspi_rect, atspi_rect_copy, atspi_rect_free)
void atspi_alloc_memory()
{
- value = (AtspiValue*)malloc(sizeof(AtspiValue));
- text = (AtspiText*)malloc(sizeof(AtspiText));
- editable_text = (AtspiEditableText*)malloc(sizeof(AtspiEditableText));
+ value = (AtspiValue*)malloc(sizeof(AtspiValue));
+ text = (AtspiText*)malloc(sizeof(AtspiText));
+ editable_text = (AtspiEditableText*)malloc(sizeof(AtspiEditableText));
}
void atspi_free_memory(void)
{
- free(editable_text);
- free(value);
- free(text);
+ free(editable_text);
+ free(value);
+ free(text);
}
gchar * atspi_accessible_get_name (AtspiAccessible *obj, GError **error)
{
- if(!obj || !obj->name) return strdup("\0");
+ if(!obj || !obj->name) return strdup("\0");
- return strdup(obj->name);
+ return strdup(obj->name);
}
gchar * atspi_accessible_get_role_name (AtspiAccessible *obj, GError **error)
{
- if(!obj) return strdup("\0");
- AtspiRole role = obj->role;
- switch(role)
- {
- case ATSPI_ROLE_APPLICATION:
- return strdup("Application");
- case ATSPI_ROLE_PUSH_BUTTON:
- return strdup("Push button");
- case ATSPI_ROLE_ICON:
- return strdup("Icon");
- case ATSPI_ROLE_CHECK_BOX:
- return strdup("Check box");
- case ATSPI_ROLE_ENTRY:
- return strdup("Entry");
- case ATSPI_ROLE_FILLER:
- return strdup("filler");
- default:
- return strdup("\0");
- }
+ if(!obj) return strdup("\0");
+ AtspiRole role = obj->role;
+ switch(role)
+ {
+ case ATSPI_ROLE_APPLICATION:
+ return strdup("Application");
+ case ATSPI_ROLE_PUSH_BUTTON:
+ return strdup("Push button");
+ case ATSPI_ROLE_ICON:
+ return strdup("Icon");
+ case ATSPI_ROLE_CHECK_BOX:
+ return strdup("Check box");
+ case ATSPI_ROLE_ENTRY:
+ return strdup("Entry");
+ case ATSPI_ROLE_FILLER:
+ return strdup("filler");
+ default:
+ return strdup("\0");
+ }
}
gchar * atspi_accessible_get_toolkit_name (AtspiAccessible *obj, GError **error)
{
- return "fake atspi";
+ return "fake atspi";
}
gchar * atspi_accessible_get_description (AtspiAccessible *obj, GError **error)
{
- if(!obj || !obj->description) return strdup("\0");
- return strdup(obj->description);
+ if(!obj || !obj->description) return strdup("\0");
+ return strdup(obj->description);
}
AtspiText * atspi_accessible_get_text_iface (AtspiAccessible *obj)
{
- if(!obj) return NULL;
- return text;
+ if(!obj) return NULL;
+ return text;
}
gint atspi_text_get_character_count (AtspiText *obj, GError **error)
{
- if(!obj) return -1;
- return 6;
+ if(!obj) return -1;
+ return 6;
}
gint atspi_text_get_caret_offset (AtspiText *obj, GError **error)
{
- if(!obj) return -1;
- return 5;
+ if(!obj) return -1;
+ return 5;
}
gchar * atspi_text_get_text (AtspiText *obj, gint start_offset, gint end_offset, GError **error)
{
- if(!obj) return NULL;
- return "AtspiText text";
+ if(!obj) return NULL;
+ return "AtspiText text";
}
AtspiValue * atspi_accessible_get_value_iface (AtspiAccessible *obj)
{
- if(!obj) return NULL;
- return value;
+ if(!obj) return NULL;
+ return value;
}
gdouble atspi_value_get_current_value (AtspiValue *obj, GError **error)
{
- return 1.0;
+ return 1.0;
}
gdouble atspi_value_get_maximum_value (AtspiValue *obj, GError **error)
{
- return 2.0;
+ return 2.0;
}
gdouble atspi_value_get_minimum_value (AtspiValue *obj, GError **error)
{
- return 0.0;
+ return 0.0;
}
AtspiEventListener *atspi_event_listener_new (AtspiEventListenerCB callback,
- gpointer user_data,
- GDestroyNotify callback_destroyed)
+ gpointer user_data,
+ GDestroyNotify callback_destroyed)
{
- return NULL;
+ return NULL;
}
gboolean atspi_event_listener_register (AtspiEventListener *listener,
const gchar *event_type,
GError **error)
{
- return FALSE;
+ return FALSE;
}
gboolean atspi_event_listener_deregister (AtspiEventListener *listener,
- const gchar *event_type,
- GError **error)
+ const gchar *event_type,
+ GError **error)
{
- return FALSE;
+ return FALSE;
}
AtspiStateSet * atspi_accessible_get_state_set (AtspiAccessible *obj)
{
- if (!obj || !obj->states) return NULL;
- return obj->states;
+ if (!obj || !obj->states) return NULL;
+ return obj->states;
}
gboolean atspi_state_set_contains (AtspiStateSet *set, AtspiStateType state)
{
- if (!set)
+ if (!set)
return FALSE;
- return (set->states & ((gint64)1 << state)) ? TRUE : FALSE;
+ return (set->states & ((gint64)1 << state)) ? TRUE : FALSE;
}
void atspi_state_set_add (AtspiStateSet *set, AtspiStateType state)
{
- if (!set) return;
- set->states |= (((gint64)1) << state);
+ if (!set) return;
+ set->states |= (((gint64)1) << state);
}
gboolean atspi_component_grab_highlight (AtspiComponent *obj, GError **error)
{
- return FALSE;
+ return FALSE;
}
AtspiScrollable *atspi_accessible_get_scrollable (AtspiAccessible *accessible)
{
- return NULL;
+ return NULL;
}
gboolean atspi_component_clear_highlight (AtspiComponent *obj, GError **error)
{
- return FALSE;
+ return FALSE;
}
GArray *atspi_state_set_get_states (AtspiStateSet *set)
{
- gint i = 0;
- guint64 val = 1;
- GArray *ret;
+ gint i = 0;
+ guint64 val = 1;
+ GArray *ret;
- g_return_val_if_fail (set != NULL, NULL);
- ret = g_array_new (TRUE, TRUE, sizeof (AtspiStateType));
- if (!ret)
- return NULL;
- for (i = 0; i < 64; i++)
- {
- if (set->states & val)
- ret = g_array_append_val (ret, i);
- val <<= 1;
- }
- return ret;
+ g_return_val_if_fail (set != NULL, NULL);
+ ret = g_array_new (TRUE, TRUE, sizeof (AtspiStateType));
+ if (!ret)
+ return NULL;
+ for (i = 0; i < 64; i++)
+ {
+ if (set->states & val)
+ ret = g_array_append_val (ret, i);
+ val <<= 1;
+ }
+ return ret;
}
AtspiRole atspi_accessible_get_role (AtspiAccessible *obj, GError **error)
{
- if(!obj) return ATSPI_ROLE_INVALID;
- return obj->role;
+ if(!obj) return ATSPI_ROLE_INVALID;
+ return obj->role;
}
gint atspi_accessible_get_child_count (AtspiAccessible *obj, GError **error)
{
- if(!obj || !obj->children) return 0;
- return g_list_length(obj->children);
+ if(!obj || !obj->children) return 0;
+ return g_list_length(obj->children);
}
AtspiAccessible * atspi_accessible_get_child_at_index (AtspiAccessible *obj, gint child_index, GError **error)
{
- if(!obj || child_index >= g_list_length(obj->children)) return NULL;
- return g_object_ref(g_list_nth_data(obj->children, child_index));
+ if(!obj || child_index >= g_list_length(obj->children)) return NULL;
+ return g_object_ref(g_list_nth_data(obj->children, child_index));
}
AtspiComponent * atspi_accessible_get_component_iface (AtspiAccessible *obj)
{
- if(!obj) return NULL;
- AtspiComponent *component = g_object_new(ATSPI_COMPONENT_OBJECT_TYPE, 0);
- *(component->role) = obj->role;
- return component;
+ if(!obj) return NULL;
+ AtspiComponent *component = g_object_new(ATSPI_COMPONENT_OBJECT_TYPE, 0);
+ *(component->role) = obj->role;
+ return component;
}
AtspiStateSet * atspi_state_set_new (GArray *states)
{
- AtspiStateSet *set = g_object_new (ATSPI_STATE_OBJECT_TYPE, NULL);
- if (!set) return NULL;
- int i;
- for (i = 0; i < states->len; i++) {
- atspi_state_set_add (set, g_array_index (states, AtspiStateType, i));
- }
- return set;
+ AtspiStateSet *set = g_object_new (ATSPI_STATE_OBJECT_TYPE, NULL);
+ if (!set) return NULL;
+ int i;
+ for (i = 0; i < states->len; i++)
+ {
+ atspi_state_set_add (set, g_array_index (states, AtspiStateType, i));
+ }
+ return set;
}
AtspiRect *atspi_component_get_extents (AtspiComponent *component, AtspiCoordType ctype, GError **error)
{
- if(!component) return NULL;
-
- AtspiRect rect;
- if(*(component->role) == ATSPI_ROLE_APPLICATION)
- {
- rect.x = 0;
- rect.y = 0;
- rect.width = 100;
- rect.height = 100;
- }
- else if(*(component->role) == ATSPI_ROLE_PUSH_BUTTON)
- {
- rect.x = 0;
- rect.y = 0;
- rect.width = 50;
- rect.height = 50;
- }
- else if(*(component->role) == ATSPI_ROLE_ICON)
- {
- rect.x = 50;
- rect.y = 0;
- rect.width = 50;
- rect.height = 50;
- }
- else if(*(component->role) == ATSPI_ROLE_CHECK_BOX)
- {
- rect.x = 0;
- rect.y = 50;
- rect.width = 50;
- rect.height = 50;
- }
- else if(*(component->role) == ATSPI_ROLE_ENTRY)
- {
- rect.x = 50;
- rect.y = 50;
- rect.width = 50;
- rect.height = 50;
- }
- else
- {
- rect.x = 0;
- rect.y = 0;
- rect.width = 0;
- rect.height = 0;
- }
- return atspi_rect_copy(&rect);
+ if(!component) return NULL;
+
+ AtspiRect rect;
+ if(*(component->role) == ATSPI_ROLE_APPLICATION)
+ {
+ rect.x = 0;
+ rect.y = 0;
+ rect.width = 100;
+ rect.height = 100;
+ }
+ else if(*(component->role) == ATSPI_ROLE_PUSH_BUTTON)
+ {
+ rect.x = 0;
+ rect.y = 0;
+ rect.width = 50;
+ rect.height = 50;
+ }
+ else if(*(component->role) == ATSPI_ROLE_ICON)
+ {
+ rect.x = 50;
+ rect.y = 0;
+ rect.width = 50;
+ rect.height = 50;
+ }
+ else if(*(component->role) == ATSPI_ROLE_CHECK_BOX)
+ {
+ rect.x = 0;
+ rect.y = 50;
+ rect.width = 50;
+ rect.height = 50;
+ }
+ else if(*(component->role) == ATSPI_ROLE_ENTRY)
+ {
+ rect.x = 50;
+ rect.y = 50;
+ rect.width = 50;
+ rect.height = 50;
+ }
+ else
+ {
+ rect.x = 0;
+ rect.y = 0;
+ rect.width = 0;
+ rect.height = 0;
+ }
+ return atspi_rect_copy(&rect);
}
AtspiAccessible *atspi_create_accessible()
{
- AtspiAccessible *obj = g_object_new(ATSPI_ACCESSIBLE_OBJECT_TYPE, 0);
- obj->children = NULL;
-
- GArray *states = g_array_new (TRUE, TRUE, sizeof (AtspiStateType));
- AtspiStateType s[] = {
- ATSPI_STATE_VISIBLE,
- ATSPI_STATE_SHOWING,
- ATSPI_STATE_FOCUSABLE,
- ATSPI_STATE_LAST_DEFINED
- };
- int i;
- for (i=0; i<sizeof(s); i++)
+ AtspiAccessible *obj = g_object_new(ATSPI_ACCESSIBLE_OBJECT_TYPE, 0);
+ obj->children = NULL;
+
+ GArray *states = g_array_new (TRUE, TRUE, sizeof (AtspiStateType));
+ AtspiStateType s[] =
+ {
+ ATSPI_STATE_VISIBLE,
+ ATSPI_STATE_SHOWING,
+ ATSPI_STATE_FOCUSABLE,
+ ATSPI_STATE_LAST_DEFINED
+ };
+ int i;
+ for (i=0; i<sizeof(s); i++)
g_array_append_val (states, s[i]);
- obj->states = atspi_state_set_new(states);
+ obj->states = atspi_state_set_new(states);
- return obj;
+ return obj;
}
void atspi_delete_accessible(AtspiAccessible *obj)
{
- if(!obj) return;
- if(obj->children)
- {
- atpis_accessible_remove_children(obj);
- }
- g_object_unref(obj);
+ if(!obj) return;
+ if(obj->children)
+ {
+ atpis_accessible_remove_children(obj);
+ }
+ g_object_unref(obj);
}
void atspi_accessible_add_child(AtspiAccessible *obj, AtspiAccessible *child)
{
- obj->children = g_list_append(obj->children, child);
+ obj->children = g_list_append(obj->children, child);
}
void atpis_accessible_remove_children(AtspiAccessible *obj)
{
- GList *l = obj->children;
- while (l != NULL)
- {
- GList *next = l->next;
- if(l->data)
- {
- atspi_delete_accessible(l->data);
- }
- l = next;
- }
- g_list_free(obj->children);
+ GList *l = obj->children;
+ while (l != NULL)
+ {
+ GList *next = l->next;
+ if(l->data)
+ {
+ atspi_delete_accessible(l->data);
+ }
+ l = next;
+ }
+ g_list_free(obj->children);
}
static void atspi_state_set_init(AtspiStateSet* set)
static void atspi_component_finalize(GObject *obj)
{
- AtspiComponent *component = (AtspiComponent*)obj;
- free(component->role);
+ AtspiComponent *component = (AtspiComponent*)obj;
+ free(component->role);
}
static void atspi_component_class_init(AtspiComponentClass *class)
{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (class);
- gobject_class->finalize = atspi_component_finalize;
+ gobject_class->finalize = atspi_component_finalize;
}
static void atspi_component_init(AtspiComponent* obj)
{
- obj->role = (AtspiRole*)malloc(sizeof(AtspiRole));
+ obj->role = (AtspiRole*)malloc(sizeof(AtspiRole));
}
AtspiEditableText * atspi_accessible_get_editable_text_iface (AtspiAccessible *obj)
{
- return editable_text;
+ return editable_text;
}
GArray * atspi_accessible_get_relation_set (AtspiAccessible *obj, GError **error)
{
- return NULL;
+ return NULL;
}
AtspiRelationType atspi_relation_get_relation_type (AtspiRelation *obj)
{
- return ATSPI_RELATION_NULL;
+ return ATSPI_RELATION_NULL;
}
gint atspi_relation_get_n_targets (AtspiRelation *obj)
{
- return 0;
+ return 0;
}
AtspiAccessible * atspi_relation_get_target (AtspiRelation *obj, gint i)
{
- return NULL;
+ return NULL;
}
AtspiAccessible * atspi_accessible_get_parent (AtspiAccessible *obj, GError **error)
{
- return obj->accessible_parent;
+ return obj->accessible_parent;
}
int atspi_exit(void)
typedef enum
{
- ATSPI_CACHE_NONE = 0,
- ATSPI_CACHE_PARENT = 1 << 0,
- ATSPI_CACHE_CHILDREN = 1 << 1,
- ATSPI_CACHE_NAME = 1 << 2,
- ATSPI_CACHE_DESCRIPTION = 1 << 3,
- ATSPI_CACHE_STATES = 1 << 4,
- ATSPI_CACHE_ROLE = 1 << 5,
- ATSPI_CACHE_INTERFACES = 1 << 6,
- ATSPI_CACHE_ATTRIBUTES = 1 << 7,
- ATSPI_CACHE_ALL = 0x3fffffff,
- ATSPI_CACHE_DEFAULT = ATSPI_CACHE_PARENT | ATSPI_CACHE_CHILDREN |
- ATSPI_CACHE_NAME | ATSPI_CACHE_DESCRIPTION |
- ATSPI_CACHE_STATES | ATSPI_CACHE_ROLE |
- ATSPI_CACHE_INTERFACES,
- ATSPI_CACHE_UNDEFINED = 0x40000000,
+ ATSPI_CACHE_NONE = 0,
+ ATSPI_CACHE_PARENT = 1 << 0,
+ ATSPI_CACHE_CHILDREN = 1 << 1,
+ ATSPI_CACHE_NAME = 1 << 2,
+ ATSPI_CACHE_DESCRIPTION = 1 << 3,
+ ATSPI_CACHE_STATES = 1 << 4,
+ ATSPI_CACHE_ROLE = 1 << 5,
+ ATSPI_CACHE_INTERFACES = 1 << 6,
+ ATSPI_CACHE_ATTRIBUTES = 1 << 7,
+ ATSPI_CACHE_ALL = 0x3fffffff,
+ ATSPI_CACHE_DEFAULT = ATSPI_CACHE_PARENT | ATSPI_CACHE_CHILDREN |
+ ATSPI_CACHE_NAME | ATSPI_CACHE_DESCRIPTION |
+ ATSPI_CACHE_STATES | ATSPI_CACHE_ROLE |
+ ATSPI_CACHE_INTERFACES,
+ ATSPI_CACHE_UNDEFINED = 0x40000000,
} AtspiCache;
-typedef enum {
- ATSPI_ROLE_INVALID,
- ATSPI_ROLE_ACCELERATOR_LABEL,
- ATSPI_ROLE_ALERT,
- ATSPI_ROLE_ANIMATION,
- ATSPI_ROLE_ARROW,
- ATSPI_ROLE_CALENDAR,
- ATSPI_ROLE_CANVAS,
- ATSPI_ROLE_CHECK_BOX,
- ATSPI_ROLE_CHECK_MENU_ITEM,
- ATSPI_ROLE_COLOR_CHOOSER,
- ATSPI_ROLE_COLUMN_HEADER,
- ATSPI_ROLE_COMBO_BOX,
- ATSPI_ROLE_DATE_EDITOR,
- ATSPI_ROLE_DESKTOP_ICON,
- ATSPI_ROLE_DESKTOP_FRAME,
- ATSPI_ROLE_DIAL,
- ATSPI_ROLE_DIALOG,
- ATSPI_ROLE_DIRECTORY_PANE,
- ATSPI_ROLE_DRAWING_AREA,
- ATSPI_ROLE_FILE_CHOOSER,
- ATSPI_ROLE_FILLER,
- ATSPI_ROLE_FOCUS_TRAVERSABLE,
- ATSPI_ROLE_FONT_CHOOSER,
- ATSPI_ROLE_FRAME,
- ATSPI_ROLE_GLASS_PANE,
- ATSPI_ROLE_HTML_CONTAINER,
- ATSPI_ROLE_ICON,
- ATSPI_ROLE_IMAGE,
- ATSPI_ROLE_INTERNAL_FRAME,
- ATSPI_ROLE_LABEL,
- ATSPI_ROLE_LAYERED_PANE,
- ATSPI_ROLE_LIST,
- ATSPI_ROLE_LIST_ITEM,
- ATSPI_ROLE_MENU,
- ATSPI_ROLE_MENU_BAR,
- ATSPI_ROLE_MENU_ITEM,
- ATSPI_ROLE_OPTION_PANE,
- ATSPI_ROLE_PAGE_TAB,
- ATSPI_ROLE_PAGE_TAB_LIST,
- ATSPI_ROLE_PANEL,
- ATSPI_ROLE_PASSWORD_TEXT,
- ATSPI_ROLE_POPUP_MENU,
- ATSPI_ROLE_PROGRESS_BAR,
- ATSPI_ROLE_PUSH_BUTTON,
- ATSPI_ROLE_RADIO_BUTTON,
- ATSPI_ROLE_RADIO_MENU_ITEM,
- ATSPI_ROLE_ROOT_PANE,
- ATSPI_ROLE_ROW_HEADER,
- ATSPI_ROLE_SCROLL_BAR,
- ATSPI_ROLE_SCROLL_PANE,
- ATSPI_ROLE_SEPARATOR,
- ATSPI_ROLE_SLIDER,
- ATSPI_ROLE_SPIN_BUTTON,
- ATSPI_ROLE_SPLIT_PANE,
- ATSPI_ROLE_STATUS_BAR,
- ATSPI_ROLE_TABLE,
- ATSPI_ROLE_TABLE_CELL,
- ATSPI_ROLE_TABLE_COLUMN_HEADER,
- ATSPI_ROLE_TABLE_ROW_HEADER,
- ATSPI_ROLE_TEAROFF_MENU_ITEM,
- ATSPI_ROLE_TERMINAL,
- ATSPI_ROLE_TEXT,
- ATSPI_ROLE_TOGGLE_BUTTON,
- ATSPI_ROLE_TOOL_BAR,
- ATSPI_ROLE_TOOL_TIP,
- ATSPI_ROLE_TREE,
- ATSPI_ROLE_TREE_TABLE,
- ATSPI_ROLE_UNKNOWN,
- ATSPI_ROLE_VIEWPORT,
- ATSPI_ROLE_WINDOW,
- ATSPI_ROLE_EXTENDED,
- ATSPI_ROLE_HEADER,
- ATSPI_ROLE_FOOTER,
- ATSPI_ROLE_PARAGRAPH,
- ATSPI_ROLE_RULER,
- ATSPI_ROLE_APPLICATION,
- ATSPI_ROLE_AUTOCOMPLETE,
- ATSPI_ROLE_EDITBAR,
- ATSPI_ROLE_EMBEDDED,
- ATSPI_ROLE_ENTRY,
- ATSPI_ROLE_CHART,
- ATSPI_ROLE_CAPTION,
- ATSPI_ROLE_DOCUMENT_FRAME,
- ATSPI_ROLE_HEADING,
- ATSPI_ROLE_PAGE,
- ATSPI_ROLE_SECTION,
- ATSPI_ROLE_REDUNDANT_OBJECT,
- ATSPI_ROLE_FORM,
- ATSPI_ROLE_LINK,
- ATSPI_ROLE_INPUT_METHOD_WINDOW,
- ATSPI_ROLE_TABLE_ROW,
- ATSPI_ROLE_TREE_ITEM,
- ATSPI_ROLE_DOCUMENT_SPREADSHEET,
- ATSPI_ROLE_DOCUMENT_PRESENTATION,
- ATSPI_ROLE_DOCUMENT_TEXT,
- ATSPI_ROLE_DOCUMENT_WEB,
- ATSPI_ROLE_DOCUMENT_EMAIL,
- ATSPI_ROLE_COMMENT,
- ATSPI_ROLE_LIST_BOX,
- ATSPI_ROLE_GROUPING,
- ATSPI_ROLE_IMAGE_MAP,
- ATSPI_ROLE_NOTIFICATION,
- ATSPI_ROLE_INFO_BAR,
- ATSPI_ROLE_LEVEL_BAR,
- ATSPI_ROLE_LAST_DEFINED,
+typedef enum
+{
+ ATSPI_ROLE_INVALID,
+ ATSPI_ROLE_ACCELERATOR_LABEL,
+ ATSPI_ROLE_ALERT,
+ ATSPI_ROLE_ANIMATION,
+ ATSPI_ROLE_ARROW,
+ ATSPI_ROLE_CALENDAR,
+ ATSPI_ROLE_CANVAS,
+ ATSPI_ROLE_CHECK_BOX,
+ ATSPI_ROLE_CHECK_MENU_ITEM,
+ ATSPI_ROLE_COLOR_CHOOSER,
+ ATSPI_ROLE_COLUMN_HEADER,
+ ATSPI_ROLE_COMBO_BOX,
+ ATSPI_ROLE_DATE_EDITOR,
+ ATSPI_ROLE_DESKTOP_ICON,
+ ATSPI_ROLE_DESKTOP_FRAME,
+ ATSPI_ROLE_DIAL,
+ ATSPI_ROLE_DIALOG,
+ ATSPI_ROLE_DIRECTORY_PANE,
+ ATSPI_ROLE_DRAWING_AREA,
+ ATSPI_ROLE_FILE_CHOOSER,
+ ATSPI_ROLE_FILLER,
+ ATSPI_ROLE_FOCUS_TRAVERSABLE,
+ ATSPI_ROLE_FONT_CHOOSER,
+ ATSPI_ROLE_FRAME,
+ ATSPI_ROLE_GLASS_PANE,
+ ATSPI_ROLE_HTML_CONTAINER,
+ ATSPI_ROLE_ICON,
+ ATSPI_ROLE_IMAGE,
+ ATSPI_ROLE_INTERNAL_FRAME,
+ ATSPI_ROLE_LABEL,
+ ATSPI_ROLE_LAYERED_PANE,
+ ATSPI_ROLE_LIST,
+ ATSPI_ROLE_LIST_ITEM,
+ ATSPI_ROLE_MENU,
+ ATSPI_ROLE_MENU_BAR,
+ ATSPI_ROLE_MENU_ITEM,
+ ATSPI_ROLE_OPTION_PANE,
+ ATSPI_ROLE_PAGE_TAB,
+ ATSPI_ROLE_PAGE_TAB_LIST,
+ ATSPI_ROLE_PANEL,
+ ATSPI_ROLE_PASSWORD_TEXT,
+ ATSPI_ROLE_POPUP_MENU,
+ ATSPI_ROLE_PROGRESS_BAR,
+ ATSPI_ROLE_PUSH_BUTTON,
+ ATSPI_ROLE_RADIO_BUTTON,
+ ATSPI_ROLE_RADIO_MENU_ITEM,
+ ATSPI_ROLE_ROOT_PANE,
+ ATSPI_ROLE_ROW_HEADER,
+ ATSPI_ROLE_SCROLL_BAR,
+ ATSPI_ROLE_SCROLL_PANE,
+ ATSPI_ROLE_SEPARATOR,
+ ATSPI_ROLE_SLIDER,
+ ATSPI_ROLE_SPIN_BUTTON,
+ ATSPI_ROLE_SPLIT_PANE,
+ ATSPI_ROLE_STATUS_BAR,
+ ATSPI_ROLE_TABLE,
+ ATSPI_ROLE_TABLE_CELL,
+ ATSPI_ROLE_TABLE_COLUMN_HEADER,
+ ATSPI_ROLE_TABLE_ROW_HEADER,
+ ATSPI_ROLE_TEAROFF_MENU_ITEM,
+ ATSPI_ROLE_TERMINAL,
+ ATSPI_ROLE_TEXT,
+ ATSPI_ROLE_TOGGLE_BUTTON,
+ ATSPI_ROLE_TOOL_BAR,
+ ATSPI_ROLE_TOOL_TIP,
+ ATSPI_ROLE_TREE,
+ ATSPI_ROLE_TREE_TABLE,
+ ATSPI_ROLE_UNKNOWN,
+ ATSPI_ROLE_VIEWPORT,
+ ATSPI_ROLE_WINDOW,
+ ATSPI_ROLE_EXTENDED,
+ ATSPI_ROLE_HEADER,
+ ATSPI_ROLE_FOOTER,
+ ATSPI_ROLE_PARAGRAPH,
+ ATSPI_ROLE_RULER,
+ ATSPI_ROLE_APPLICATION,
+ ATSPI_ROLE_AUTOCOMPLETE,
+ ATSPI_ROLE_EDITBAR,
+ ATSPI_ROLE_EMBEDDED,
+ ATSPI_ROLE_ENTRY,
+ ATSPI_ROLE_CHART,
+ ATSPI_ROLE_CAPTION,
+ ATSPI_ROLE_DOCUMENT_FRAME,
+ ATSPI_ROLE_HEADING,
+ ATSPI_ROLE_PAGE,
+ ATSPI_ROLE_SECTION,
+ ATSPI_ROLE_REDUNDANT_OBJECT,
+ ATSPI_ROLE_FORM,
+ ATSPI_ROLE_LINK,
+ ATSPI_ROLE_INPUT_METHOD_WINDOW,
+ ATSPI_ROLE_TABLE_ROW,
+ ATSPI_ROLE_TREE_ITEM,
+ ATSPI_ROLE_DOCUMENT_SPREADSHEET,
+ ATSPI_ROLE_DOCUMENT_PRESENTATION,
+ ATSPI_ROLE_DOCUMENT_TEXT,
+ ATSPI_ROLE_DOCUMENT_WEB,
+ ATSPI_ROLE_DOCUMENT_EMAIL,
+ ATSPI_ROLE_COMMENT,
+ ATSPI_ROLE_LIST_BOX,
+ ATSPI_ROLE_GROUPING,
+ ATSPI_ROLE_IMAGE_MAP,
+ ATSPI_ROLE_NOTIFICATION,
+ ATSPI_ROLE_INFO_BAR,
+ ATSPI_ROLE_LEVEL_BAR,
+ ATSPI_ROLE_LAST_DEFINED,
} AtspiRole;
-typedef enum {
- ATSPI_STATE_INVALID,
- ATSPI_STATE_ACTIVE,
- ATSPI_STATE_ARMED,
- ATSPI_STATE_BUSY,
- ATSPI_STATE_CHECKED,
- ATSPI_STATE_COLLAPSED,
- ATSPI_STATE_DEFUNCT,
- ATSPI_STATE_EDITABLE,
- ATSPI_STATE_ENABLED,
- ATSPI_STATE_EXPANDABLE,
- ATSPI_STATE_EXPANDED,
- ATSPI_STATE_FOCUSABLE,
- ATSPI_STATE_FOCUSED,
- ATSPI_STATE_HAS_TOOLTIP,
- ATSPI_STATE_HORIZONTAL,
- ATSPI_STATE_ICONIFIED,
- ATSPI_STATE_MODAL,
- ATSPI_STATE_MULTI_LINE,
- ATSPI_STATE_MULTISELECTABLE,
- ATSPI_STATE_OPAQUE,
- ATSPI_STATE_PRESSED,
- ATSPI_STATE_RESIZABLE,
- ATSPI_STATE_SELECTABLE,
- ATSPI_STATE_SELECTED,
- ATSPI_STATE_SENSITIVE,
- ATSPI_STATE_SHOWING,
- ATSPI_STATE_SINGLE_LINE,
- ATSPI_STATE_STALE,
- ATSPI_STATE_TRANSIENT,
- ATSPI_STATE_VERTICAL,
- ATSPI_STATE_VISIBLE,
- ATSPI_STATE_MANAGES_DESCENDANTS,
- ATSPI_STATE_INDETERMINATE,
- ATSPI_STATE_REQUIRED,
- ATSPI_STATE_TRUNCATED,
- ATSPI_STATE_ANIMATED,
- ATSPI_STATE_INVALID_ENTRY,
- ATSPI_STATE_SUPPORTS_AUTOCOMPLETION,
- ATSPI_STATE_SELECTABLE_TEXT,
- ATSPI_STATE_IS_DEFAULT,
- ATSPI_STATE_VISITED,
- ATSPI_STATE_HIGHLIGHTED,
- ATSPI_STATE_LAST_DEFINED,
+typedef enum
+{
+ ATSPI_STATE_INVALID,
+ ATSPI_STATE_ACTIVE,
+ ATSPI_STATE_ARMED,
+ ATSPI_STATE_BUSY,
+ ATSPI_STATE_CHECKED,
+ ATSPI_STATE_COLLAPSED,
+ ATSPI_STATE_DEFUNCT,
+ ATSPI_STATE_EDITABLE,
+ ATSPI_STATE_ENABLED,
+ ATSPI_STATE_EXPANDABLE,
+ ATSPI_STATE_EXPANDED,
+ ATSPI_STATE_FOCUSABLE,
+ ATSPI_STATE_FOCUSED,
+ ATSPI_STATE_HAS_TOOLTIP,
+ ATSPI_STATE_HORIZONTAL,
+ ATSPI_STATE_ICONIFIED,
+ ATSPI_STATE_MODAL,
+ ATSPI_STATE_MULTI_LINE,
+ ATSPI_STATE_MULTISELECTABLE,
+ ATSPI_STATE_OPAQUE,
+ ATSPI_STATE_PRESSED,
+ ATSPI_STATE_RESIZABLE,
+ ATSPI_STATE_SELECTABLE,
+ ATSPI_STATE_SELECTED,
+ ATSPI_STATE_SENSITIVE,
+ ATSPI_STATE_SHOWING,
+ ATSPI_STATE_SINGLE_LINE,
+ ATSPI_STATE_STALE,
+ ATSPI_STATE_TRANSIENT,
+ ATSPI_STATE_VERTICAL,
+ ATSPI_STATE_VISIBLE,
+ ATSPI_STATE_MANAGES_DESCENDANTS,
+ ATSPI_STATE_INDETERMINATE,
+ ATSPI_STATE_REQUIRED,
+ ATSPI_STATE_TRUNCATED,
+ ATSPI_STATE_ANIMATED,
+ ATSPI_STATE_INVALID_ENTRY,
+ ATSPI_STATE_SUPPORTS_AUTOCOMPLETION,
+ ATSPI_STATE_SELECTABLE_TEXT,
+ ATSPI_STATE_IS_DEFAULT,
+ ATSPI_STATE_VISITED,
+ ATSPI_STATE_HIGHLIGHTED,
+ ATSPI_STATE_LAST_DEFINED,
} AtspiStateType;
typedef enum
{
- ATSPI_RELATION_NULL,
- ATSPI_RELATION_LABEL_FOR,
- ATSPI_RELATION_LABELLED_BY,
+ ATSPI_RELATION_NULL,
+ ATSPI_RELATION_LABEL_FOR,
+ ATSPI_RELATION_LABELLED_BY,
} AtspiRelationType;
struct _AtspiApplication
{
- GObject parent;
- GHashTable *hash;
- char *bus_name;
- DBusConnection *bus;
- AtspiAccessible *root;
- AtspiCache cache;
- gchar *toolkit_name;
- gchar *toolkit_version;
- gchar *atspi_version;
- struct timeval time_added;
+ GObject parent;
+ GHashTable *hash;
+ char *bus_name;
+ DBusConnection *bus;
+ AtspiAccessible *root;
+ AtspiCache cache;
+ gchar *toolkit_name;
+ gchar *toolkit_version;
+ gchar *atspi_version;
+ struct timeval time_added;
};
struct _AtspiObject
{
- GObject parent;
- AtspiApplication *app;
- char *path;
+ GObject parent;
+ AtspiApplication *app;
+ char *path;
};
struct _AtspiAccessible
{
- //GObject parent;
- AtspiObject parent;
- AtspiAccessible *accessible_parent;
- GList *children;
- AtspiRole role;
- gint interfaces;
- char *name;
- char *description;
- AtspiStateSet *states;
- GHashTable *attributes;
- guint cached_properties;
+ //GObject parent;
+ AtspiObject parent;
+ AtspiAccessible *accessible_parent;
+ GList *children;
+ AtspiRole role;
+ gint interfaces;
+ char *name;
+ char *description;
+ AtspiStateSet *states;
+ GHashTable *attributes;
+ guint cached_properties;
};
struct _AtspiAccessibleClass
{
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
struct _AtspiComponentClass
{
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
struct _AtspiEvent
{
- gchar *type;
- AtspiAccessible *source;
- gint detail1;
- gint detail2;
- GValue any_data;
+ gchar *type;
+ AtspiAccessible *source;
+ gint detail1;
+ gint detail2;
+ GValue any_data;
};
struct _AtspiStateSet
{
- GObject parent;
- struct _AtspiAccessible *accessible;
- gint64 states;
+ GObject parent;
+ struct _AtspiAccessible *accessible;
+ gint64 states;
};
struct _AtspiStateSetClass
{
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
struct _AtspiEventListener
{
- GObject parent;
- AtspiEventListenerCB callback;
- void *user_data;
- GDestroyNotify cb_destroyed;
+ GObject parent;
+ AtspiEventListenerCB callback;
+ void *user_data;
+ GDestroyNotify cb_destroyed;
};
struct _AtspiText
{
- GTypeInterface parent;
+ GTypeInterface parent;
};
struct _AtspiEditableText
{
- GTypeInterface parent;
+ GTypeInterface parent;
};
struct _AtspiValue
{
- GTypeInterface parent;
+ GTypeInterface parent;
};
struct _AtspiComponent
{
- GTypeInterface parent;
- AtspiRole *role;
+ GTypeInterface parent;
+ AtspiRole *role;
};
struct _AtspiScrollable
{
- GTypeInterface parent;
+ GTypeInterface parent;
};
struct _AtspiRelation
{
- GTypeInterface parent;
+ GTypeInterface parent;
};
struct _AtspiRect
{
- gint x;
- gint y;
- gint width;
- gint height;
+ gint x;
+ gint y;
+ gint width;
+ gint height;
};
-typedef enum {
- ATSPI_COORD_TYPE_SCREEN,
- ATSPI_COORD_TYPE_WINDOW,
+typedef enum
+{
+ ATSPI_COORD_TYPE_SCREEN,
+ ATSPI_COORD_TYPE_WINDOW,
} AtspiCoordType;
gchar * atspi_accessible_get_name (AtspiAccessible *obj, GError **error);
gdouble atspi_value_get_maximum_value (AtspiValue *obj, GError **error);
gdouble atspi_value_get_minimum_value (AtspiValue *obj, GError **error);
AtspiEventListener *atspi_event_listener_new (AtspiEventListenerCB callback,
- gpointer user_data,
- GDestroyNotify callback_destroyed);
+ gpointer user_data,
+ GDestroyNotify callback_destroyed);
gboolean atspi_event_listener_register (AtspiEventListener *listener,
const gchar *event_type,
GError **error);
gboolean atspi_event_listener_deregister (AtspiEventListener *listener,
- const gchar *event_type,
- GError **error);
+ const gchar *event_type,
+ GError **error);
AtspiStateSet * atspi_accessible_get_state_set (AtspiAccessible *obj);
gboolean atspi_state_set_contains (AtspiStateSet *set, AtspiStateType state);
void atspi_state_set_add (AtspiStateSet *set, AtspiStateType state);
void setup(void)
{
- Service_Data *data = get_pointer_to_service_data_struct();
- data->information_level = 1;
- data->run_service = 1;
- data->voice_type = TTS_VOICE_TYPE_FEMALE;
- data->reading_speed = 2;
- data->tracking_signal_name = HIGHLIGHT_CHANGED_SIG;
+ Service_Data *data = get_pointer_to_service_data_struct();
+ data->information_level = 1;
+ data->run_service = 1;
+ data->voice_type = TTS_VOICE_TYPE_FEMALE;
+ data->reading_speed = 2;
+ data->tracking_signal_name = HIGHLIGHT_CHANGED_SIG;
- //Set by tts
- data->tts = NULL;
- data->available_languages = NULL;
+ //Set by tts
+ data->tts = NULL;
+ data->available_languages = NULL;
- //Actions to do when tts state is 'ready'
- data->say_text = false;
- data->update_language_list = false;
+ //Actions to do when tts state is 'ready'
+ data->say_text = false;
+ data->update_language_list = false;
- data->text_to_say_info = NULL;
+ data->text_to_say_info = NULL;
}
void teardown(void)
void setup_flat_navi()
{
- setup();
- root = atspi_create_accessible();
- root->role = ATSPI_ROLE_APPLICATION;
- child1 = atspi_create_accessible();
- child2 = atspi_create_accessible();
- child3 = atspi_create_accessible();
- child4 = atspi_create_accessible();
- child1->role = ATSPI_ROLE_PUSH_BUTTON;
- child2->role = ATSPI_ROLE_ICON;
- child3->role = ATSPI_ROLE_CHECK_BOX;
- child4->role = ATSPI_ROLE_ENTRY;
- atspi_accessible_add_child(root, child1);
- atspi_accessible_add_child(root, child2);
- atspi_accessible_add_child(root, child3);
- atspi_accessible_add_child(root, child4);
- eina_init();
- atspi_alloc_memory();
- ctx = flat_navi_context_create(root);
+ setup();
+ root = atspi_create_accessible();
+ root->role = ATSPI_ROLE_APPLICATION;
+ child1 = atspi_create_accessible();
+ child2 = atspi_create_accessible();
+ child3 = atspi_create_accessible();
+ child4 = atspi_create_accessible();
+ child1->role = ATSPI_ROLE_PUSH_BUTTON;
+ child2->role = ATSPI_ROLE_ICON;
+ child3->role = ATSPI_ROLE_CHECK_BOX;
+ child4->role = ATSPI_ROLE_ENTRY;
+ atspi_accessible_add_child(root, child1);
+ atspi_accessible_add_child(root, child2);
+ atspi_accessible_add_child(root, child3);
+ atspi_accessible_add_child(root, child4);
+ eina_init();
+ atspi_alloc_memory();
+ ctx = flat_navi_context_create(root);
}
void teardown_flat_navi()
{
- flat_navi_context_free(ctx);
- atspi_free_memory();
- eina_shutdown();
- atspi_delete_accessible(root);
- teardown();
+ flat_navi_context_free(ctx);
+ atspi_free_memory();
+ eina_shutdown();
+ atspi_delete_accessible(root);
+ teardown();
}
START_TEST(spi_init_null_parameter)
{
- spi_init(NULL);
+ spi_init(NULL);
}
END_TEST
START_TEST(spi_init_service_data_parameter)
{
- Service_Data *data = get_pointer_to_service_data_struct();
- spi_init(data);
+ Service_Data *data = get_pointer_to_service_data_struct();
+ spi_init(data);
}
END_TEST
START_TEST(spi_on_state_change_name)
{
- Service_Data *sd = get_pointer_to_service_data_struct();
- AtspiEvent event;
- AtspiAccessible accessible;
- event.type = "test_event";
- sd->tracking_signal_name = "test_event";
- event.detail1 = 1;
- accessible.name = "test_name";
- accessible.role = ATSPI_ROLE_ICON;
- accessible.description = NULL;
- event.source = &accessible;
- char *return_value = spi_event_get_text_to_read(&event, sd);
- fail_if(!return_value || strcmp(return_value, "test_name, Icon"));
- free(return_value);
+ Service_Data *sd = get_pointer_to_service_data_struct();
+ AtspiEvent event;
+ AtspiAccessible accessible;
+ event.type = "test_event";
+ sd->tracking_signal_name = "test_event";
+ event.detail1 = 1;
+ accessible.name = "test_name";
+ accessible.role = ATSPI_ROLE_ICON;
+ accessible.description = NULL;
+ event.source = &accessible;
+ char *return_value = spi_event_get_text_to_read(&event, sd);
+ fail_if(!return_value || strcmp(return_value, "test_name, Icon"));
+ free(return_value);
}
END_TEST
START_TEST(spi_on_state_change_description)
{
- Service_Data *sd = get_pointer_to_service_data_struct();
- AtspiEvent event;
- AtspiAccessible accessible;
- event.type = "test_event";
- sd->tracking_signal_name = "test_event";
- event.detail1 = 1;
- accessible.name = "test_name";
- accessible.description = "test description";
- accessible.role = ATSPI_ROLE_ICON;
- event.source = &accessible;
- char *return_value = spi_event_get_text_to_read(&event, sd);
- fail_if(!return_value || strcmp(return_value, "test_name, Icon, test description"));
- free(return_value);
+ Service_Data *sd = get_pointer_to_service_data_struct();
+ AtspiEvent event;
+ AtspiAccessible accessible;
+ event.type = "test_event";
+ sd->tracking_signal_name = "test_event";
+ event.detail1 = 1;
+ accessible.name = "test_name";
+ accessible.description = "test description";
+ accessible.role = ATSPI_ROLE_ICON;
+ event.source = &accessible;
+ char *return_value = spi_event_get_text_to_read(&event, sd);
+ fail_if(!return_value || strcmp(return_value, "test_name, Icon, test description"));
+ free(return_value);
}
END_TEST
START_TEST(spi_on_state_change_role)
{
- Service_Data *sd = get_pointer_to_service_data_struct();
- AtspiEvent event;
- AtspiAccessible accessible;
- event.type = "test_event";
- sd->tracking_signal_name = "test_event";
- event.detail1 = 1;
- accessible.role = ATSPI_ROLE_ICON;
- accessible.name = NULL;
- accessible.description = NULL;
- event.source = &accessible;
- char *return_value = spi_event_get_text_to_read(&event, sd);
- fail_if(!return_value || strcmp(return_value, atspi_accessible_get_role_name(&accessible, NULL)));
- free(return_value);
+ Service_Data *sd = get_pointer_to_service_data_struct();
+ AtspiEvent event;
+ AtspiAccessible accessible;
+ event.type = "test_event";
+ sd->tracking_signal_name = "test_event";
+ event.detail1 = 1;
+ accessible.role = ATSPI_ROLE_ICON;
+ accessible.name = NULL;
+ accessible.description = NULL;
+ event.source = &accessible;
+ char *return_value = spi_event_get_text_to_read(&event, sd);
+ fail_if(!return_value || strcmp(return_value, atspi_accessible_get_role_name(&accessible, NULL)));
+ free(return_value);
}
END_TEST
START_TEST(spi_on_caret_move)
{
- Service_Data *sd = get_pointer_to_service_data_struct();
- AtspiEvent event;
- AtspiAccessible accessible;
- event.type = "object:text-caret-moved";
- accessible.name = "test_name";
- event.source = &accessible;
- atspi_alloc_memory();
- char *return_value = spi_event_get_text_to_read(&event, sd);
- atspi_free_memory();
- fail_if(!return_value || strcmp(return_value, "AtspiText text"));
- free(return_value);
+ Service_Data *sd = get_pointer_to_service_data_struct();
+ AtspiEvent event;
+ AtspiAccessible accessible;
+ event.type = "object:text-caret-moved";
+ accessible.name = "test_name";
+ event.source = &accessible;
+ atspi_alloc_memory();
+ char *return_value = spi_event_get_text_to_read(&event, sd);
+ atspi_free_memory();
+ fail_if(!return_value || strcmp(return_value, "AtspiText text"));
+ free(return_value);
}
END_TEST
START_TEST(spi_on_value_changed)
{
-Service_Data *sd = get_pointer_to_service_data_struct();
- AtspiEvent event;
- AtspiAccessible accessible;
- event.type = VALUE_CHANGED_SIG;
- accessible.name = "test_name";
- event.source = &accessible;
- atspi_alloc_memory();
- char *return_value = spi_event_get_text_to_read(&event, sd);
- atspi_free_memory();
- fail_if(!return_value || strcmp(return_value, "1.00"));
- free(return_value);
+ Service_Data *sd = get_pointer_to_service_data_struct();
+ AtspiEvent event;
+ AtspiAccessible accessible;
+ event.type = VALUE_CHANGED_SIG;
+ accessible.name = "test_name";
+ event.source = &accessible;
+ atspi_alloc_memory();
+ char *return_value = spi_event_get_text_to_read(&event, sd);
+ atspi_free_memory();
+ fail_if(!return_value || strcmp(return_value, "1.00"));
+ free(return_value);
}
END_TEST
START_TEST(spi_flat_navi_context_create_null_parameter)
{
- FlatNaviContext *test_ctx = flat_navi_context_create(NULL);
- fail_if(!test_ctx);
- free(test_ctx);
+ FlatNaviContext *test_ctx = flat_navi_context_create(NULL);
+ fail_if(!test_ctx);
+ free(test_ctx);
}
END_TEST
START_TEST(spi_flat_navi_context_create_valid_parameter)
{
- FlatNaviContext *test_ctx = flat_navi_context_create(root);
- fail_if(!test_ctx);
- flat_navi_context_free(test_ctx);
+ FlatNaviContext *test_ctx = flat_navi_context_create(root);
+ fail_if(!test_ctx);
+ flat_navi_context_free(test_ctx);
}
END_TEST
START_TEST(spi_flat_navi_context_get_current_null_parameter)
{
- AtspiAccessible *current = flat_navi_context_current_get(NULL);
- fail_if(current);
+ AtspiAccessible *current = flat_navi_context_current_get(NULL);
+ fail_if(current);
}
END_TEST
START_TEST(spi_flat_navi_context_get_current_valid_parameter)
{
- AtspiAccessible *current = flat_navi_context_current_get(ctx);
- fail_if(!current || current != child1);
+ AtspiAccessible *current = flat_navi_context_current_get(ctx);
+ fail_if(!current || current != child1);
}
END_TEST
START_TEST(spi_flat_navi_context_next_null_parameter)
{
- AtspiAccessible *next = flat_navi_context_next(NULL);
- fail_if(next);
+ AtspiAccessible *next = flat_navi_context_next(NULL);
+ fail_if(next);
}
END_TEST
START_TEST(spi_flat_navi_context_next_valid_parameter)
{
- AtspiAccessible *next = flat_navi_context_next(ctx);
- fail_if(!next || next != child2);
+ AtspiAccessible *next = flat_navi_context_next(ctx);
+ fail_if(!next || next != child2);
}
END_TEST
START_TEST(spi_flat_navi_context_prev_null_parameter)
{
- AtspiAccessible *prev = flat_navi_context_prev(NULL);
- fail_if(prev);
+ AtspiAccessible *prev = flat_navi_context_prev(NULL);
+ fail_if(prev);
}
END_TEST
START_TEST(spi_flat_navi_context_prev_valid_parameter)
{
- AtspiAccessible *prev = flat_navi_context_prev(ctx);
- fail_if(prev);
- flat_navi_context_current_set(ctx, child4);
- prev = flat_navi_context_prev(ctx);
- fail_if(!prev || prev != child3);
+ AtspiAccessible *prev = flat_navi_context_prev(ctx);
+ fail_if(prev);
+ flat_navi_context_current_set(ctx, child4);
+ prev = flat_navi_context_prev(ctx);
+ fail_if(!prev || prev != child3);
}
END_TEST
START_TEST(spi_flat_navi_context_last_null_parameter)
{
- AtspiAccessible *last = flat_navi_context_last(NULL);
- fail_if(last);
+ AtspiAccessible *last = flat_navi_context_last(NULL);
+ fail_if(last);
}
END_TEST
START_TEST(spi_flat_navi_context_last_valid_parameter)
{
- AtspiAccessible *last = flat_navi_context_last(ctx);
- fail_if(!last || last != child2);
+ AtspiAccessible *last = flat_navi_context_last(ctx);
+ fail_if(!last || last != child2);
}
END_TEST
START_TEST(spi_flat_navi_context_first_null_parameter)
{
- AtspiAccessible *first = flat_navi_context_first(NULL);
- fail_if(first);
+ AtspiAccessible *first = flat_navi_context_first(NULL);
+ fail_if(first);
}
END_TEST
START_TEST(spi_flat_navi_context_first_valid_parameter)
{
- AtspiAccessible *first = flat_navi_context_first(ctx);
- fail_if(!first || first != child1);
+ AtspiAccessible *first = flat_navi_context_first(ctx);
+ fail_if(!first || first != child1);
}
END_TEST
START_TEST(spi_flat_navi_context_current_set_null_parameters)
{
- Eina_Bool ret = flat_navi_context_current_set(NULL, NULL);
- fail_if(ret != EINA_FALSE);
- ret = flat_navi_context_current_set(ctx, NULL);
- fail_if(ret != EINA_FALSE);
- AtspiAccessible *last = flat_navi_context_last(ctx);
- ret = flat_navi_context_current_set(NULL, last);
- fail_if(ret != EINA_FALSE);
+ Eina_Bool ret = flat_navi_context_current_set(NULL, NULL);
+ fail_if(ret != EINA_FALSE);
+ ret = flat_navi_context_current_set(ctx, NULL);
+ fail_if(ret != EINA_FALSE);
+ AtspiAccessible *last = flat_navi_context_last(ctx);
+ ret = flat_navi_context_current_set(NULL, last);
+ fail_if(ret != EINA_FALSE);
}
END_TEST
START_TEST(spi_flat_navi_context_current_set_valid_parameters)
{
- AtspiAccessible *last = flat_navi_context_last(ctx);
- Eina_Bool ret = flat_navi_context_current_set(ctx, last);
- AtspiAccessible *current = flat_navi_context_current_get(ctx);
- fail_if(ret != EINA_TRUE || current != last);
+ AtspiAccessible *last = flat_navi_context_last(ctx);
+ Eina_Bool ret = flat_navi_context_current_set(ctx, last);
+ AtspiAccessible *current = flat_navi_context_current_get(ctx);
+ fail_if(ret != EINA_TRUE || current != last);
}
END_TEST
START_TEST(spi_flat_navi_context_line_prev_null_parameter)
{
- AtspiAccessible *prev = flat_navi_context_line_prev(NULL);
- fail_if(prev);
+ AtspiAccessible *prev = flat_navi_context_line_prev(NULL);
+ fail_if(prev);
}
END_TEST
START_TEST(spi_flat_navi_context_line_prev_valid_parameter)
{
- AtspiAccessible *prev = flat_navi_context_line_prev(ctx);
- fail_if(prev);
- flat_navi_context_current_set(ctx, child4);
- prev = flat_navi_context_line_prev(ctx);
- fail_if(!prev || prev != child1);
+ AtspiAccessible *prev = flat_navi_context_line_prev(ctx);
+ fail_if(prev);
+ flat_navi_context_current_set(ctx, child4);
+ prev = flat_navi_context_line_prev(ctx);
+ fail_if(!prev || prev != child1);
}
END_TEST
START_TEST(spi_flat_navi_context_line_next_null_parameter)
{
- AtspiAccessible *next = flat_navi_context_line_next(NULL);
- fail_if(next);
+ AtspiAccessible *next = flat_navi_context_line_next(NULL);
+ fail_if(next);
}
END_TEST
START_TEST(spi_flat_navi_context_line_next_valid_parameter)
{
- AtspiAccessible *next = flat_navi_context_line_next(ctx);
- fail_if(!next || next != child3);
+ AtspiAccessible *next = flat_navi_context_line_next(ctx);
+ fail_if(!next || next != child3);
}
END_TEST
START_TEST(spi_flat_navi_context_line_first_null_parameter)
{
- AtspiAccessible *first = flat_navi_context_line_first(NULL);
- fail_if(first);
+ AtspiAccessible *first = flat_navi_context_line_first(NULL);
+ fail_if(first);
}
END_TEST
START_TEST(spi_flat_navi_context_line_first_valid_parameter)
{
- AtspiAccessible *first = flat_navi_context_line_first(ctx);
- fail_if(!first || first != child1);
+ AtspiAccessible *first = flat_navi_context_line_first(ctx);
+ fail_if(!first || first != child1);
}
END_TEST
START_TEST(spi_flat_navi_context_line_last_null_parameter)
{
- AtspiAccessible *last = flat_navi_context_line_last(NULL);
- fail_if(last);
+ AtspiAccessible *last = flat_navi_context_line_last(NULL);
+ fail_if(last);
}
END_TEST
START_TEST(spi_flat_navi_context_line_last_valid_parameter)
{
- AtspiAccessible *last = flat_navi_context_line_last(ctx);
- fail_if(!last || last != child3);
+ AtspiAccessible *last = flat_navi_context_line_last(ctx);
+ fail_if(!last || last != child3);
}
END_TEST
Suite *screen_reader_suite(void)
{
- Suite *s;
- TCase *tc_spi_screen_reader_init;
- TCase *tc_spi_screen_reader_on_state_changed;
- TCase *tc_spi_screen_reader_on_caret_move;
- TCase *tc_spi_screen_reader_on_access_value;
- TCase *tc_spi_screen_reader_flat_navi;
-
- s = suite_create("Screen reader");
- tc_spi_screen_reader_init = tcase_create("tc_spi_screen_reader_init");
- tc_spi_screen_reader_on_state_changed = tcase_create("tc_spi_screen_reader_on_state_changed");
- tc_spi_screen_reader_on_caret_move = tcase_create("tc_spi_screen_reader_on_caret_move");
- tc_spi_screen_reader_on_access_value = tcase_create("tc_spi_screen_reader_on_access_value");
- tc_spi_screen_reader_flat_navi = tcase_create("tc_scpi_screen_reader_flat_navi");
-
- tcase_add_checked_fixture(tc_spi_screen_reader_init, setup, teardown);
- tcase_add_checked_fixture(tc_spi_screen_reader_on_state_changed, setup, teardown);
- tcase_add_checked_fixture(tc_spi_screen_reader_on_caret_move, setup, teardown);
- tcase_add_checked_fixture(tc_spi_screen_reader_on_access_value, setup, teardown);
- tcase_add_checked_fixture(tc_spi_screen_reader_flat_navi, setup_flat_navi, teardown_flat_navi);
-
- tcase_add_test(tc_spi_screen_reader_init, spi_init_null_parameter);
- tcase_add_test(tc_spi_screen_reader_init, spi_init_service_data_parameter);
- tcase_add_test(tc_spi_screen_reader_on_state_changed, spi_on_state_change_name);
- tcase_add_test(tc_spi_screen_reader_on_state_changed, spi_on_state_change_description);
- tcase_add_test(tc_spi_screen_reader_on_state_changed, spi_on_state_change_role);
- tcase_add_test(tc_spi_screen_reader_on_caret_move, spi_on_caret_move);
- tcase_add_test(tc_spi_screen_reader_on_access_value, spi_on_value_changed);
+ Suite *s;
+ TCase *tc_spi_screen_reader_init;
+ TCase *tc_spi_screen_reader_on_state_changed;
+ TCase *tc_spi_screen_reader_on_caret_move;
+ TCase *tc_spi_screen_reader_on_access_value;
+ TCase *tc_spi_screen_reader_flat_navi;
+
+ s = suite_create("Screen reader");
+ tc_spi_screen_reader_init = tcase_create("tc_spi_screen_reader_init");
+ tc_spi_screen_reader_on_state_changed = tcase_create("tc_spi_screen_reader_on_state_changed");
+ tc_spi_screen_reader_on_caret_move = tcase_create("tc_spi_screen_reader_on_caret_move");
+ tc_spi_screen_reader_on_access_value = tcase_create("tc_spi_screen_reader_on_access_value");
+ tc_spi_screen_reader_flat_navi = tcase_create("tc_scpi_screen_reader_flat_navi");
+
+ tcase_add_checked_fixture(tc_spi_screen_reader_init, setup, teardown);
+ tcase_add_checked_fixture(tc_spi_screen_reader_on_state_changed, setup, teardown);
+ tcase_add_checked_fixture(tc_spi_screen_reader_on_caret_move, setup, teardown);
+ tcase_add_checked_fixture(tc_spi_screen_reader_on_access_value, setup, teardown);
+ tcase_add_checked_fixture(tc_spi_screen_reader_flat_navi, setup_flat_navi, teardown_flat_navi);
+
+ tcase_add_test(tc_spi_screen_reader_init, spi_init_null_parameter);
+ tcase_add_test(tc_spi_screen_reader_init, spi_init_service_data_parameter);
+ tcase_add_test(tc_spi_screen_reader_on_state_changed, spi_on_state_change_name);
+ tcase_add_test(tc_spi_screen_reader_on_state_changed, spi_on_state_change_description);
+ tcase_add_test(tc_spi_screen_reader_on_state_changed, spi_on_state_change_role);
+ tcase_add_test(tc_spi_screen_reader_on_caret_move, spi_on_caret_move);
+ tcase_add_test(tc_spi_screen_reader_on_access_value, spi_on_value_changed);
tcase_add_test(tc_spi_screen_reader_flat_navi, spi_flat_navi_context_create_null_parameter);
tcase_add_test(tc_spi_screen_reader_flat_navi, spi_flat_navi_context_create_valid_parameter);
tcase_add_test(tc_spi_screen_reader_flat_navi, spi_flat_navi_context_line_last_null_parameter);
tcase_add_test(tc_spi_screen_reader_flat_navi, spi_flat_navi_context_line_last_valid_parameter);
- suite_add_tcase(s, tc_spi_screen_reader_init);
- suite_add_tcase(s, tc_spi_screen_reader_on_state_changed);
- suite_add_tcase(s, tc_spi_screen_reader_on_caret_move);
- suite_add_tcase(s, tc_spi_screen_reader_on_access_value);
- suite_add_tcase(s, tc_spi_screen_reader_flat_navi);
+ suite_add_tcase(s, tc_spi_screen_reader_init);
+ suite_add_tcase(s, tc_spi_screen_reader_on_state_changed);
+ suite_add_tcase(s, tc_spi_screen_reader_on_caret_move);
+ suite_add_tcase(s, tc_spi_screen_reader_on_access_value);
+ suite_add_tcase(s, tc_spi_screen_reader_flat_navi);
- return s;
+ return s;
}
int main()
{
- int number_failed;
- Suite *s;
- SRunner *sr;
+ int number_failed;
+ Suite *s;
+ SRunner *sr;
- s = screen_reader_suite();
- sr = srunner_create(s);
+ s = screen_reader_suite();
+ sr = srunner_create(s);
- srunner_run_all(sr, CK_NORMAL);
- number_failed = srunner_ntests_failed(sr);
- srunner_free(sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ srunner_run_all(sr, CK_NORMAL);
+ number_failed = srunner_ntests_failed(sr);
+ srunner_free(sr);
+ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}