Add the smart signals in scroller. "scroll,left", "scroll,right", "scroll,up", "scroll,down".

This commit is contained in:
Jaehwan Kim 2013-03-15 18:53:17 +09:00
parent 568edfcb71
commit 5f8af66123
5 changed files with 167 additions and 7 deletions

View File

@ -1153,3 +1153,7 @@
2013-03-13 Tae-Hwan Kim (bluezery)
* Fix a memory leak in elm_genlist. Return value of elm_genlist_realized_items_get should be freed
2013-03-15 Jaehwan Kim
* Add the smart signals in scroller. "scroll,left", "scroll,right", "scroll,up", "scroll,down".

View File

@ -49,6 +49,7 @@ Additions:
* Add the config ELM_THUMBSCROLL_HOLD_THRESHOLD.
* Add elm_naviframe_item_pop_cb_set().
* Add elm_widget_newest_focus_order_get for knowing the last object(and its focus order) which got focus.
* Add the smart signals in scroller. "scroll,left", "scroll,right", "scroll,up", "scroll,down".
Improvements:

View File

@ -1502,8 +1502,6 @@ _elm_scroll_content_pos_set(Eo *obj, void *_pd, va_list *list)
edje_object_part_drag_value_set
(sid->edje_obj, "elm.dragable.hbar", vx, 0.0);
if (sig && ((px != x) || (py != y)))
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
if (!sid->down.bounce_x_animator)
{
if (((x < minx) && (0 <= sid->down.dx)) ||
@ -1527,13 +1525,38 @@ _elm_scroll_content_pos_set(Eo *obj, void *_pd, va_list *list)
sid->bouncemey = EINA_FALSE;
}
if ((x != px) || (y != py))
{
if (sid->cb_func.scroll)
sid->cb_func.scroll(obj, NULL);
}
if (sig)
{
if ((x != px) || (y != py))
{
if (sid->cb_func.scroll)
sid->cb_func.scroll(obj, NULL);
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
if (x < px)
{
if (sid->cb_func.scroll_left)
sid->cb_func.scroll_left(obj, NULL);
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,left", "elm");
}
if (x > px)
{
if (sid->cb_func.scroll_right)
sid->cb_func.scroll_right(obj, NULL);
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,right", "elm");
}
if (y < py)
{
if (sid->cb_func.scroll_up)
sid->cb_func.scroll_up(obj, NULL);
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,up", "elm");
}
if (y > py)
{
if (sid->cb_func.scroll_down)
sid->cb_func.scroll_down(obj, NULL);
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,down", "elm");
}
}
if (x != px)
{
if (x == minx)
@ -3573,6 +3596,38 @@ _elm_scroll_scroll_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
sid->cb_func.scroll = scroll_cb;
}
static void
_elm_scroll_scroll_left_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Scrollable_Smart_Interface_Data *sid = _pd;
Elm_Interface_Scrollable_Cb scroll_left_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
sid->cb_func.scroll_left = scroll_left_cb;
}
static void
_elm_scroll_scroll_right_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Scrollable_Smart_Interface_Data *sid = _pd;
Elm_Interface_Scrollable_Cb scroll_right_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
sid->cb_func.scroll_right = scroll_right_cb;
}
static void
_elm_scroll_scroll_up_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Scrollable_Smart_Interface_Data *sid = _pd;
Elm_Interface_Scrollable_Cb scroll_up_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
sid->cb_func.scroll_up = scroll_up_cb;
}
static void
_elm_scroll_scroll_down_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Scrollable_Smart_Interface_Data *sid = _pd;
Elm_Interface_Scrollable_Cb scroll_down_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
sid->cb_func.scroll_down = scroll_down_cb;
}
static void
_elm_scroll_edge_left_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
@ -4165,6 +4220,10 @@ _elm_scrollable_interface_constructor(Eo_Class *klass)
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET), _elm_scroll_animate_start_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET), _elm_scroll_animate_stop_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET), _elm_scroll_scroll_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET), _elm_scroll_scroll_left_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET), _elm_scroll_scroll_right_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET), _elm_scroll_scroll_up_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET), _elm_scroll_scroll_down_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET), _elm_scroll_edge_left_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET), _elm_scroll_edge_right_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET), _elm_scroll_edge_top_cb_set),
@ -4227,6 +4286,10 @@ static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET, "description here"),

View File

@ -157,6 +157,10 @@ enum
ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET,
@ -298,6 +302,50 @@ enum
*/
#define elm_scrollable_interface_scroll_cb_set(scroll_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_cb)
/**
* @def elm_scrollable_interface_scroll_left_cb_set
* @since 1.8
*
* No description supplied by the EAPI.
*
* @param[in] scroll_left_cb
*
*/
#define elm_scrollable_interface_scroll_left_cb_set(scroll_left_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_left_cb)
/**
* @def elm_scrollable_interface_scroll_right_cb_set
* @since 1.8
*
* No description supplied by the EAPI.
*
* @param[in] scroll_right_cb
*
*/
#define elm_scrollable_interface_scroll_right_cb_set(scroll_right_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_right_cb)
/**
* @def elm_scrollable_interface_scroll_up_cb_set
* @since 1.8
*
* No description supplied by the EAPI.
*
* @param[in] scroll_up_cb
*
*/
#define elm_scrollable_interface_scroll_up_cb_set(scroll_up_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_up_cb)
/**
* @def elm_scrollable_interface_scroll_down_cb_set
* @since 1.8
*
* No description supplied by the EAPI.
*
* @param[in] scroll_down_cb
*
*/
#define elm_scrollable_interface_scroll_down_cb_set(scroll_down_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_down_cb)
/**
* @def elm_scrollable_interface_edge_left_cb_set
* @since 1.8
@ -951,6 +999,10 @@ struct _Elm_Scrollable_Smart_Interface_Data
Elm_Interface_Scrollable_Cb animate_start;
Elm_Interface_Scrollable_Cb animate_stop;
Elm_Interface_Scrollable_Cb scroll;
Elm_Interface_Scrollable_Cb scroll_left;
Elm_Interface_Scrollable_Cb scroll_right;
Elm_Interface_Scrollable_Cb scroll_up;
Elm_Interface_Scrollable_Cb scroll_down;
Elm_Interface_Scrollable_Cb edge_left;
Elm_Interface_Scrollable_Cb edge_right;
Elm_Interface_Scrollable_Cb edge_top;

View File

@ -11,6 +11,10 @@ EAPI Eo_Op ELM_OBJ_SCROLLER_BASE_ID = EO_NOOP;
#define MY_CLASS_NAME "elm_scroller"
static const char SIG_SCROLL[] = "scroll";
static const char SIG_SCROLL_LEFT[] = "scroll,left";
static const char SIG_SCROLL_RIGHT[] = "scroll,right";
static const char SIG_SCROLL_UP[] = "scroll,up";
static const char SIG_SCROLL_DOWN[] = "scroll,down";
static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start";
static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop";
static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
@ -28,6 +32,10 @@ static const char SIG_HBAR_UNPRESS[] = "hbar,unpress";
static const Evas_Smart_Cb_Description _smart_callbacks[] =
{
{SIG_SCROLL, ""},
{SIG_SCROLL_LEFT, ""},
{SIG_SCROLL_RIGHT, ""},
{SIG_SCROLL_UP, ""},
{SIG_SCROLL_DOWN, ""},
{SIG_SCROLL_ANIM_START, ""},
{SIG_SCROLL_ANIM_STOP, ""},
{SIG_SCROLL_DRAG_START, ""},
@ -535,6 +543,34 @@ _scroll_cb(Evas_Object *obj,
evas_object_smart_callback_call(obj, SIG_SCROLL, NULL);
}
static void
_scroll_left_cb(Evas_Object *obj,
void *data __UNUSED__)
{
evas_object_smart_callback_call(obj, SIG_SCROLL_LEFT, NULL);
}
static void
_scroll_right_cb(Evas_Object *obj,
void *data __UNUSED__)
{
evas_object_smart_callback_call(obj, SIG_SCROLL_RIGHT, NULL);
}
static void
_scroll_up_cb(Evas_Object *obj,
void *data __UNUSED__)
{
evas_object_smart_callback_call(obj, SIG_SCROLL_UP, NULL);
}
static void
_scroll_down_cb(Evas_Object *obj,
void *data __UNUSED__)
{
evas_object_smart_callback_call(obj, SIG_SCROLL_DOWN, NULL);
}
static void
_scroll_anim_start_cb(Evas_Object *obj,
void *data __UNUSED__)
@ -735,6 +771,10 @@ _elm_scroller_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_scrollable_interface_edge_top_cb_set(_edge_top_cb),
elm_scrollable_interface_edge_bottom_cb_set(_edge_bottom_cb),
elm_scrollable_interface_scroll_cb_set(_scroll_cb),
elm_scrollable_interface_scroll_left_cb_set(_scroll_left_cb),
elm_scrollable_interface_scroll_right_cb_set(_scroll_right_cb),
elm_scrollable_interface_scroll_up_cb_set(_scroll_up_cb),
elm_scrollable_interface_scroll_down_cb_set(_scroll_down_cb),
elm_scrollable_interface_animate_start_cb_set(_scroll_anim_start_cb),
elm_scrollable_interface_animate_stop_cb_set(_scroll_anim_stop_cb),
elm_scrollable_interface_drag_start_cb_set(_scroll_drag_start_cb),