Add elm_gesture_layer_* support from Tizen 2.1
authorRusty Lynch <rusty.lynch@intel.com>
Sun, 19 May 2013 18:27:22 +0000 (11:27 -0700)
committerEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Tue, 13 Aug 2013 20:49:39 +0000 (17:49 -0300)
src/lib/elm_gesture_layer.c
src/lib/elm_gesture_layer.h

index b85b266..27bce9e 100644 (file)
@@ -372,6 +372,7 @@ struct _Elm_Gesture_Layer_Smart_Data
    unsigned int          flick_time_limit_ms;
    double                long_tap_start_timeout;
    Eina_Bool             glayer_continues_enable;
+   double                double_tap_timeout;
 
    double                zoom_step;
    double                rotate_step;
@@ -1003,29 +1004,29 @@ _callbacks_unregister(Evas_Object *obj)
 
    if (!sd->target) return;
 
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb);
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb);
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, obj);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, obj);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, obj);
 
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
 
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_MULTI_DOWN, _multi_down_cb);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_MULTI_DOWN, _multi_down_cb, obj);
 
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_MULTI_MOVE, _multi_move_cb);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_MULTI_MOVE, _multi_move_cb, obj);
 
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_MULTI_UP, _multi_up_cb);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_MULTI_UP, _multi_up_cb, obj);
 
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_KEY_DOWN, _key_down_cb);
-   evas_object_event_callback_del
-     (sd->target, EVAS_CALLBACK_KEY_UP, _key_up_cb);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_KEY_DOWN, _key_down_cb, obj);
+   evas_object_event_callback_del_full
+     (sd->target, EVAS_CALLBACK_KEY_UP, _key_up_cb, obj);
 }
 
 /**
@@ -1792,12 +1793,16 @@ _tap_gesture_test(Evas_Object *obj,
 
         pe_list = _pointer_event_record
             (st, pe_list, pe, sd, event_info, event_type);
-        if ((!sd->gest_taps_timeout) && 
-            (_elm_config->glayer_double_tap_timeout > 0.0))
-          sd->gest_taps_timeout =
-          ecore_timer_add(_elm_config->glayer_double_tap_timeout,
-                          _multi_tap_timeout, gesture->obj);
-        else if (sd->gest_taps_timeout)
+        if (!sd->gest_taps_timeout)
+          {
+             if (sd->double_tap_timeout > 0.0)
+               {
+                  sd->gest_taps_timeout =
+                     ecore_timer_add(sd->double_tap_timeout,
+                           _multi_tap_timeout, gesture->obj);
+               }
+          }
+        else
           ecore_timer_reset(sd->gest_taps_timeout);
 
         /* This is the first mouse down we got */
@@ -3612,6 +3617,7 @@ _elm_gesture_layer_smart_add(Evas_Object *obj)
    /* FIXME: Hack to get around old configs - if too small, enlarge. */
    if (_elm_config->glayer_double_tap_timeout < 0.00001)
      _elm_config->glayer_double_tap_timeout = 0.25;
+   priv->double_tap_timeout = _elm_config->glayer_double_tap_timeout;
 
    memset(priv->gesture, 0, sizeof(priv->gesture));
 }
@@ -3642,6 +3648,11 @@ _elm_gesture_layer_smart_del(Evas_Object *obj)
 
           free(sd->gesture[i]);
        }
+   if (sd->gest_taps_timeout)
+     {
+        ecore_timer_del(sd->gest_taps_timeout);
+        sd->gest_taps_timeout = NULL;
+     }
 
    _elm_gesture_layer_parent_sc->base.del(obj); /* handles freeing sd */
 }
@@ -3775,3 +3786,181 @@ elm_gesture_layer_cb_set(Evas_Object *obj,
    p->state = ELM_GESTURE_STATE_UNDEFINED;
    SET_TEST_BIT(p);
 }
+
+
+EAPI void
+elm_gesture_layer_line_min_length_set(Evas_Object *obj, int line_min_length)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->line_min_length = line_min_length;
+}
+
+
+EAPI int
+elm_gesture_layer_line_min_length_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->line_min_length;
+}
+
+EAPI void
+elm_gesture_layer_zoom_distance_tolerance_set(Evas_Object *obj, Evas_Coord zoom_distance_tolerance)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->zoom_distance_tolerance = zoom_distance_tolerance;
+}
+
+EAPI Evas_Coord
+elm_gesture_layer_zoom_distance_tolerance_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->zoom_distance_tolerance;
+}
+
+EAPI void
+elm_gesture_layer_line_distance_tolerance_set(Evas_Object *obj, Evas_Coord line_distance_tolerance)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->line_distance_tolerance = line_distance_tolerance;
+}
+
+EAPI Evas_Coord
+elm_gesture_layer_line_distance_tolerance_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->line_distance_tolerance;
+}
+
+EAPI void
+elm_gesture_layer_line_angular_tolerance_set(Evas_Object *obj, double line_angular_tolerance)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->line_angular_tolerance = line_angular_tolerance;
+}
+
+EAPI double
+elm_gesture_layer_line_angular_tolerance_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0.0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->line_angular_tolerance;
+}
+
+EAPI void
+elm_gesture_layer_zoom_wheel_factor_set(Evas_Object *obj, double zoom_wheel_factor)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->zoom_wheel_factor = zoom_wheel_factor;
+}
+
+EAPI double
+elm_gesture_layer_zoom_wheel_factor_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0.0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->zoom_wheel_factor;
+}
+
+EAPI void
+elm_gesture_layer_zoom_finger_factor_set(Evas_Object *obj, double zoom_finger_factor)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->zoom_finger_factor = zoom_finger_factor;
+}
+
+EAPI double
+elm_gesture_layer_zoom_finger_factor_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0.0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->zoom_finger_factor;
+}
+
+EAPI void
+elm_gesture_layer_rotate_angular_tolerance_set(Evas_Object *obj, double rotate_angular_tolerance)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->rotate_angular_tolerance = rotate_angular_tolerance;
+}
+
+EAPI double
+elm_gesture_layer_rotate_angular_tolerance_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0.0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->rotate_angular_tolerance;
+}
+
+EAPI void
+elm_gesture_layer_flick_time_limit_ms_set(Evas_Object *obj, unsigned int flick_time_limit_ms)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->flick_time_limit_ms = flick_time_limit_ms;
+}
+
+EAPI unsigned int
+elm_gesture_layer_flick_time_limit_ms_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->flick_time_limit_ms;
+}
+
+EAPI void
+elm_gesture_layer_long_tap_start_timeout_set(Evas_Object *obj, double long_tap_start_timeout)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->long_tap_start_timeout = long_tap_start_timeout;
+}
+
+EAPI double
+elm_gesture_layer_long_tap_start_timeout_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0.0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->long_tap_start_timeout;
+}
+
+EAPI void
+elm_gesture_layer_continues_enable_set(Evas_Object *obj, Eina_Bool continues_enable)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->glayer_continues_enable = continues_enable;
+}
+
+EAPI Eina_Bool
+elm_gesture_layer_continues_enable_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0.0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->glayer_continues_enable;
+}
+
+EAPI void
+elm_gesture_layer_double_tap_timeout_set(Evas_Object *obj, double double_tap_timeout)
+{
+   ELM_GESTURE_LAYER_CHECK(obj);
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   sd->double_tap_timeout = double_tap_timeout;
+}
+
+EAPI double
+elm_gesture_layer_double_tap_timeout_get(const Evas_Object *obj)
+{
+   ELM_GESTURE_LAYER_CHECK(obj) 0.0;
+   ELM_GESTURE_LAYER_DATA_GET(obj, sd);
+   return sd->double_tap_timeout;
+}
index 66451b7..8789aba 100644 (file)
@@ -339,5 +339,225 @@ EAPI Eina_Bool    elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *target
 EAPI Evas_Object *elm_gesture_layer_add(Evas_Object *parent);
 
 /**
+ * @since 1.8
+ * This function sets the gesture layer line min length of an object
+ *
+ * @param obj gesture-layer.
+ * @param line_min_length the length.
+ *
+ */
+EAPI void elm_gesture_layer_line_min_length_set(Evas_Object *obj, int line_min_length);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer line min length of an object
+ *
+ * @param obj gesture-layer.
+ * @return the length.
+ *
+ */
+EAPI int elm_gesture_layer_line_min_length_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer zoom distance tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @param zoom_distance_tolerance zoom distance tolerance
+ *
+ */
+EAPI void elm_gesture_layer_zoom_distance_tolerance_set(Evas_Object *obj, Evas_Coord zoom_distance_tolerance);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer zoom distance tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @return zoom distance tolerance
+ *
+ */
+EAPI Evas_Coord elm_gesture_layer_zoom_distance_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer line distance tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @param line_distance_tolerance line distance tolerance
+ *
+ */
+EAPI void elm_gesture_layer_line_distance_tolerance_set(Evas_Object *obj, Evas_Coord line_distance_tolerance);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer line distance tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @return line distance tolerance
+ *
+ */
+EAPI Evas_Coord elm_gesture_layer_line_distance_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer line angular tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @param line_angular_tolerance line angular tolerance
+ *
+ */
+EAPI void elm_gesture_layer_line_angular_tolerance_set(Evas_Object *obj, double line_angular_tolerance);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer line angular tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @return line angular tolerance
+ *
+ */
+EAPI double elm_gesture_layer_line_angular_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer zoom wheel factor of an object
+ *
+ * @param obj gesture-layer.
+ * @param zoom_wheel_factor zoom wheel factor
+ *
+ */
+EAPI void elm_gesture_layer_zoom_wheel_factor_set(Evas_Object *obj, double zoom_wheel_factor);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer zoom wheel factor of an object
+ *
+ * @param obj gesture-layer.
+ * @return zoom wheel factor
+ *
+ */
+EAPI double elm_gesture_layer_zoom_wheel_factor_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer zoom finger factor of an object
+ *
+ * @param obj gesture-layer.
+ * @param zoom_finger_factor zoom finger factor
+ *
+ */
+EAPI void elm_gesture_layer_zoom_finger_factor_set(Evas_Object *obj, double zoom_finger_factor);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer zoom finger factor of an object
+ *
+ * @param obj gesture-layer.
+ * @return zoom finger factor
+ *
+ */
+EAPI double elm_gesture_layer_zoom_finger_factor_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer rotate angular tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @param rotate_angular_tolerance rotate angular tolerance
+ *
+ */
+EAPI void elm_gesture_layer_rotate_angular_tolerance_set(Evas_Object *obj, double rotate_angular_tolerance);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer rotate angular tolerance of an object
+ *
+ * @param obj gesture-layer.
+ * @return rotate angular tolerance
+ *
+ */
+EAPI double elm_gesture_layer_rotate_angular_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer flick time limit (in ms) of an object
+ *
+ * @param obj gesture-layer.
+ * @param flick_time_limit_ms flick time limit (in ms)
+ *
+ */
+EAPI void elm_gesture_layer_flick_time_limit_ms_set(Evas_Object *obj, unsigned int flick_time_limit_ms);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer flick time limit (in ms) of an object
+ *
+ * @param obj gesture-layer.
+ * @return flick time limit (in ms)
+ *
+ */
+EAPI unsigned int elm_gesture_layer_flick_time_limit_ms_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer long tap start timeout of an object
+ *
+ * @param obj gesture-layer.
+ * @param long_tap_start_timeout long tap start timeout
+ *
+ */
+EAPI void elm_gesture_layer_long_tap_start_timeout_set(Evas_Object *obj, double long_tap_start_timeout);
+
+/**
+ * @since 1.8
+ * this function returns the gesture layer long tap start timeout of an object
+ *
+ * @param obj gesture-layer.
+ * @return long tap start timeout
+ *
+ */
+EAPI double elm_gesture_layer_long_tap_start_timeout_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer continues enable of an object
+ *
+ * @param obj gesture-layer.
+ * @param continues_enable continues enable
+ *
+ */
+EAPI void elm_gesture_layer_continues_enable_set(Evas_Object *obj, Eina_Bool continues_enable);
+
+/**
+ * @since 1.8
+ * This function returns the gesture layer continues enable of an object
+ *
+ * @param obj gesture-layer.
+ * @return continues enable
+ *
+ */
+EAPI Eina_Bool elm_gesture_layer_continues_enable_get(const Evas_Object *obj);
+
+/**
+ * @since 1.8
+ * This function sets the gesture layer double tap timeout of an object
+ *
+ * @param obj gesture-layer.
+ * @param double_tap_timeout double tap timeout
+ *
+ */
+EAPI void elm_gesture_layer_double_tap_timeout_set(Evas_Object *obj, double double_tap_timeout);
+
+/**
+ * @since 1.8
+ * this function returns the gesture layer double tap timeout of an object
+ *
+ * @param obj gesture-layer.
+ * @return double tap timeout
+ *
+ */
+EAPI double elm_gesture_layer_double_tap_timeout_get(const Evas_Object *obj);
+
+/**
  * @}
  */