return _do_action(obj, expected_action);
}
-static void _current_highlight_object_set(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, AtspiAccessible * obj, Highlight_Type h_type)
+static void _current_highlight_object_set(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, AtspiAccessible * obj, Highlight_Type h_type)
{
DEBUG("START");
}
if (get_haptic(vconf_data))
- haptic_vibrate_start(HAPTIC_VIBRATE_DURATION, HAPTIC_VIBRATE_INTENSITY);
+ haptic_vibrate_start(HAPTIC_VIBRATE_DURATION, HAPTIC_VIBRATE_INTENSITY, haptic_data);
role = atspi_accessible_get_role(obj, NULL);
if (role != ATSPI_ROLE_PAGE_TAB && role != ATSPI_ROLE_POPUP_MENU) { /* ctxpopup outline does not show highlight frame */
g_object_unref(parent);
}
-static void _focus_widget(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context, Gesture_Info *info)
+static void _focus_widget(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context, Gesture_Info *info)
{
DEBUG("START");
if (flat_navi_context_current_at_x_y_set(context, info->x_beg, info->y_beg, &obj)) {
nd->last_focus.x = info->x_beg;
nd->last_focus.y = info->y_beg;
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_POINT);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_POINT);
}
DEBUG("END");
}
-static void _focus_next(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _focus_next(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("START");
obj = flat_navi_context_next(context, vconf_data);
if (obj)
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_FIRST);
else
DEBUG("Next widget not found. Abort");
DEBUG("END");
}
-static void _focus_next_visible(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _focus_next_visible(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("START");
while (obj && !visible);
if (obj)
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_FIRST);
else
DEBUG("Next widget not found. Abort");
DEBUG("END");
}
-static void _focus_prev_visible(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _focus_prev_visible(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
AtspiAccessible *obj;
AtspiStateSet *ss = NULL;
while (obj && !visible);
if (obj)
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_LAST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_LAST);
else
DEBUG("Previous widget not found. Abort");
}
-static void _focus_prev(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _focus_prev(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
AtspiAccessible *obj;
if (!context) {
obj = flat_navi_context_prev(context, vconf_data);
if (obj)
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_LAST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_LAST);
else
DEBUG("Previous widget not found. Abort");
}
}
*/
-static void _widget_scroll(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context, Gesture_Info *gi)
+static void _widget_scroll(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context, Gesture_Info *gi)
{
DEBUG("Recognized gesture state: %d", gi->state);
int x_diff, y_diff;
if (abs(y_diff) >= abs(x_diff)) {
if (y_diff > 0) {
DEBUG("PREVIOUS");
- _focus_prev_visible(nd, vconf_data, context);
+ _focus_prev_visible(nd, vconf_data, haptic_data, context);
}
else {
DEBUG("NEXT");
- _focus_next_visible(nd, vconf_data, context);
+ _focus_next_visible(nd, vconf_data, haptic_data, context);
}
}
else {
if (x_diff > 0) {
DEBUG("PREVIOUS");
- _focus_prev_visible(nd, vconf_data, context);
+ _focus_prev_visible(nd, vconf_data, haptic_data, context);
}
else {
DEBUG("NEXT");
- _focus_next_visible(nd, vconf_data, context);
+ _focus_next_visible(nd, vconf_data, haptic_data, context);
}
}
}
DEBUG("END");
}
-void auto_review_highlight_set(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+void auto_review_highlight_set(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
if (nd == NULL || vconf_data == NULL || context == NULL) {
ERROR("NULL context");
nd->auto_review_on = false;
}
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_FIRST);
DEBUG("END");
}
-void auto_review_highlight_top(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+void auto_review_highlight_top(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("START");
char *text_to_speak = NULL;
AtspiAccessible *first = flat_navi_context_first(context);
if (first != obj) {
- _current_highlight_object_set(nd, vconf_data, first, HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, first, HIGHLIGHT_FIRST);
} else {
text_to_speak = generate_what_to_read(obj, vconf_data);
DEBUG("Text to speak: %s", text_to_speak);
DEBUG("sd->navigator_data->auto_review_on == %d", sd->navigator_data->auto_review_on);
if (sd->navigator_data->auto_review_on) {
- auto_review_highlight_set(sd->navigator_data, sd->vconf_data, sd->flat_navi_context);
+ auto_review_highlight_set(sd->navigator_data, sd->vconf_data, sd->screen_reader_haptic_data, sd->flat_navi_context);
}
DEBUG("END");
}
-static void _review_from_current(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _review_from_current(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("START");
nd->focused_object = flat_navi_context_current_get(context);
nd->auto_review_on = true;
- auto_review_highlight_set(nd, vconf_data, context);
+ auto_review_highlight_set(nd, vconf_data, haptic_data, context);
DEBUG("END");
}
-static void _review_from_top(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _review_from_top(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("START");
nd->focused_object = flat_navi_context_current_get(context);
nd->auto_review_on = true;
- auto_review_highlight_top(nd, vconf_data, context);
+ auto_review_highlight_top(nd, vconf_data, haptic_data, context);
DEBUG("END");
}
-static void _direct_scroll_back(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _direct_scroll_back(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("ONE_FINGER_FLICK_LEFT_RETURN");
if (!context) {
if (flat_navi_context_current_set(context, obj)) {
DEBUG("current obj set");
}
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_FIRST);
}
g_object_unref(parent);
g_object_unref(current);
}
-static void _direct_scroll_forward(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _direct_scroll_forward(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("ONE_FINGER_FLICK_RIGHT_RETURN");
if (flat_navi_context_current_set(context, obj)) {
DEBUG("current obj set");
}
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_LAST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_LAST);
}
g_object_unref(parent);
g_object_unref(current);
}
-static void _direct_scroll_to_first(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _direct_scroll_to_first(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("ONE_FINGER_FLICK_UP_RETURN");
if (!context) {
}
AtspiAccessible *obj = flat_navi_context_first(context);
if (obj)
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_FIRST);
else
DEBUG("First widget not found. Abort");
DEBUG("END");
}
-static void _direct_scroll_to_last(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Flat_Navi_Context *context)
+static void _direct_scroll_to_last(Navigator_Data *nd, Screen_Reader_Vconf_Data_t *vconf_data, Haptic_Data *haptic_data, Flat_Navi_Context *context)
{
DEBUG("ONE_FINGER_FLICK_DOWN_RETURN");
if (!context) {
}
AtspiAccessible *obj = flat_navi_context_last(context);
if (obj)
- _current_highlight_object_set(nd, vconf_data, obj, HIGHLIGHT_LAST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, obj, HIGHLIGHT_LAST);
else
DEBUG("Last widget not found. Abort");
DEBUG("END");
return;
}
+ if (get_sound_feedback(vconf_data))
+ smart_notification(LONG_PRESS_NOTIFICATION_EVENT, 0, 0);
+
if (gi->state == 0) {
comp = atspi_accessible_get_component_iface(obj);
if (!comp) {
Navigator_Data *nd = sd->navigator_data;
Flat_Navi_Context *context = sd->flat_navi_context;
Screen_Reader_Vconf_Data_t *vconf_data = sd->vconf_data;
+ Haptic_Data *haptic_data = sd->screen_reader_haptic_data;
if (nd == NULL) {
ERROR("NULL context navigator_data");
return;
}
+ if (haptic_data == NULL) {
+ ERROR("NULL context");
+ return;
+ }
+
#ifdef X11_ENABLED
Ecore_X_Window keyboard_win;
#else
break;
}
#endif
- _focus_widget(nd, vconf_data, context, info);
+ _focus_widget(nd, vconf_data, haptic_data, context, info);
}
break;
case TWO_FINGERS_HOVER:
- _widget_scroll(nd, vconf_data, context, info);
+ _widget_scroll(nd, vconf_data, haptic_data, context, info);
break;
case ONE_FINGER_FLICK_LEFT:
if (_check_access_object_internal(context, HIGHLIGHT_PREV)) break;
- _focus_prev(nd, vconf_data, context);
+ _focus_prev(nd, vconf_data, haptic_data, context);
if (_is_index_item(context))
_activate_widget(nd, vconf_data);
break;
case ONE_FINGER_FLICK_RIGHT:
if (_check_access_object_internal(context, HIGHLIGHT_NEXT)) break;
- _focus_next(nd, vconf_data, context);
+ _focus_next(nd, vconf_data, haptic_data, context);
if (_is_index_item(context))
_activate_widget(nd, vconf_data);
else if (_has_value(nd) && _is_enabled(nd))
_value_inc(nd);
else
- _focus_prev(nd, vconf_data, context);
+ _focus_prev(nd, vconf_data, haptic_data, context);
break;
case ONE_FINGER_FLICK_DOWN:
if (_is_active_entry(context))
else if (_has_value(nd) && _is_enabled(nd))
_value_dec(nd);
else
- _focus_next(nd, vconf_data, context);
+ _focus_next(nd, vconf_data, haptic_data, context);
break;
case ONE_FINGER_SINGLE_TAP:
#if defined(ELM_ACCESS_KEYBOARD) && defined(X11_ENABLED)
}
#endif
if (!nd->prepared)
- _focus_widget(nd, vconf_data, context, info);
+ _focus_widget(nd, vconf_data, haptic_data, context, info);
break;
case ONE_FINGER_DOUBLE_TAP:
#if defined(ELM_ACCESS_KEYBOARD) && defined(X11_ENABLED)
#endif
break;
case THREE_FINGERS_SINGLE_TAP:
- _review_from_top(nd, vconf_data, context);
+ _review_from_top(nd, vconf_data, haptic_data, context);
break;
case THREE_FINGERS_DOUBLE_TAP:
- _review_from_current(nd, vconf_data, context);
+ _review_from_current(nd, vconf_data, haptic_data, context);
break;
case THREE_FINGERS_FLICK_DOWN:
_quickpanel_change_state(QUICKPANEL_DOWN);
_quickpanel_change_state(QUICKPANEL_UP);
break;
case ONE_FINGER_FLICK_LEFT_RETURN:
- _direct_scroll_back(nd, vconf_data, context);
+ _direct_scroll_back(nd, vconf_data, haptic_data, context);
break;
case ONE_FINGER_FLICK_RIGHT_RETURN:
- _direct_scroll_forward(nd, vconf_data, context);
+ _direct_scroll_forward(nd, vconf_data, haptic_data, context);
break;
case ONE_FINGER_FLICK_UP_RETURN:
if (_is_active_entry(context))
_caret_move_beg(nd);
else
- _direct_scroll_to_first(nd, vconf_data, context);
+ _direct_scroll_to_first(nd, vconf_data, haptic_data, context);
break;
case ONE_FINGER_FLICK_DOWN_RETURN:
if (_is_active_entry(context))
_caret_move_end(nd);
else
- _direct_scroll_to_last(nd, vconf_data, context);
+ _direct_scroll_to_last(nd, vconf_data, haptic_data, context);
break;
default:
DEBUG("Gesture type %d not handled in switch", info->type);
return;
}
+ Haptic_Data *haptic_data = sd->screen_reader_haptic_data;
+ if (haptic_data == NULL) {
+ ERROR("NULL context");
+ return;
+ }
+
if (flat_navi_is_valid(sd->flat_navi_context, root))
return;
if(role == ATSPI_ROLE_PAGE_TAB || //add more roles...
role == ATSPI_ROLE_PAGE_TAB_LIST)
{
- _current_highlight_object_set(nd, vconf_data, flat_navi_context_current_get(sd->flat_navi_context), HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, flat_navi_context_current_get(sd->flat_navi_context), HIGHLIGHT_FIRST);
}
else
{
break;
case ATSPI_ROLE_POPUP_MENU:
case ATSPI_ROLE_DIALOG :
- _current_highlight_object_set(nd, vconf_data, flat_navi_context_current_get(sd->flat_navi_context), HIGHLIGHT_FIRST);
+ _current_highlight_object_set(nd, vconf_data, haptic_data, flat_navi_context_current_get(sd->flat_navi_context), HIGHLIGHT_FIRST);
break;
default :
break;