From 328aa35948a6ed9ef532b07852d3a4f4c5e488be Mon Sep 17 00:00:00 2001 From: Daniel Juyung Seo Date: Sat, 26 Jan 2013 09:55:32 +0000 Subject: [PATCH] elm index: Added elm_index_delay_change_time_set/get APIs for changing delay change time in index widget. SVN revision: 83355 --- legacy/elementary/ChangeLog | 4 ++ legacy/elementary/NEWS | 1 + legacy/elementary/src/lib/elm_index.c | 40 ++++++++++++++- legacy/elementary/src/lib/elm_index.h | 53 ++++++++++++++++++++ legacy/elementary/src/lib/elm_widget_index.h | 1 + 5 files changed, 98 insertions(+), 1 deletion(-) diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index 682040d4e1..65622108b2 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/ChangeLog @@ -956,3 +956,7 @@ 2013-01-26 WooHyun Jung * A widget which doesn't have focus_region_get should give its width and height for correct focus_region_show. + +2013-01-26 Daniel Juyung Seo (SeoZ) + + * Add elm_index_delay_change_time_set/get for changing delay change time in index. diff --git a/legacy/elementary/NEWS b/legacy/elementary/NEWS index 71dbb3becb..03da81d7c2 100644 --- a/legacy/elementary/NEWS +++ b/legacy/elementary/NEWS @@ -30,6 +30,7 @@ Additions: * Add elm_label_slide_go() * Add a label signal callback "slide,end" * Add "highlighted" and "unhighlighted" callbacks to list, genlist, and gengrid. + * Add elm_index_delay_change_time_set/get for changing delay change time in index. Improvements: diff --git a/legacy/elementary/src/lib/elm_index.c b/legacy/elementary/src/lib/elm_index.c index bfef20d48d..daedd1b09d 100644 --- a/legacy/elementary/src/lib/elm_index.c +++ b/legacy/elementary/src/lib/elm_index.c @@ -439,7 +439,7 @@ _sel_eval(Evas_Object *obj, evas_object_smart_callback_call (obj, SIG_CHANGED, (void *)it); if (sd->delay) ecore_timer_del(sd->delay); - sd->delay = ecore_timer_add(INDEX_DELAY_CHANGE_TIME, + sd->delay = ecore_timer_add(sd->delay_change_time, _delay_change_cb, obj); } } @@ -731,6 +731,8 @@ _elm_index_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_layout_content_set(obj, "elm.swallow.index.0", priv->bx[0]); evas_object_show(priv->bx[0]); + priv->delay_change_time = INDEX_DELAY_CHANGE_TIME; + if (edje_object_part_exists (wd->resize_obj, "elm.swallow.index.1")) { @@ -1416,6 +1418,38 @@ _horizontal_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) *ret = sd->horizontal; } +EAPI void +elm_index_delay_change_time_set(Evas_Object *obj, double delay_change_time) +{ + ELM_INDEX_CHECK(obj); + eo_do(obj, elm_obj_index_delay_change_time_set(delay_change_time)); +} + +static void +_delay_change_time_set(Eo *obj __UNUSED__, void *_pd, va_list *list) +{ + double dtime = va_arg(*list, double); + Elm_Index_Smart_Data *sd = _pd; + sd->delay_change_time = dtime; +} + +EAPI double +elm_index_delay_change_time_get(const Evas_Object *obj) +{ + ELM_INDEX_CHECK(obj) 0.0; + double ret = 0.0; + eo_do((Eo *)obj, elm_obj_index_delay_change_time_get(&ret)); + return ret; +} + +static void +_delay_change_time_get(Eo *obj __UNUSED__, void *_pd, va_list *list) +{ + double *ret = va_arg(*list, double *); + Elm_Index_Smart_Data *sd = _pd; + *ret = sd->delay_change_time; +} + static void _class_constructor(Eo_Class *klass) { @@ -1450,6 +1484,8 @@ _class_constructor(Eo_Class *klass) EO_OP_FUNC(ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_INDICATOR_DISABLED_GET), _indicator_disabled_get), EO_OP_FUNC(ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_HORIZONTAL_SET), _horizontal_set), EO_OP_FUNC(ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_HORIZONTAL_GET), _horizontal_get), + EO_OP_FUNC(ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_SET), _delay_change_time_set), + EO_OP_FUNC(ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_GET), _delay_change_time_get), EO_OP_FUNC_SENTINEL }; eo_class_funcs_set(klass, func_desc); @@ -1472,6 +1508,8 @@ static const Eo_Op_Description op_desc[] = { EO_OP_DESCRIPTION(ELM_OBJ_INDEX_SUB_ID_INDICATOR_DISABLED_GET, "Get the value of indicator's disabled status."), EO_OP_DESCRIPTION(ELM_OBJ_INDEX_SUB_ID_HORIZONTAL_SET, "Enable or disable horizontal mode on the index object."), EO_OP_DESCRIPTION(ELM_OBJ_INDEX_SUB_ID_HORIZONTAL_GET, "Get a value whether horizontal mode is enabled or not."), + EO_OP_DESCRIPTION(ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_SET, "Set a delay change time value for index object."), + EO_OP_DESCRIPTION(ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_GET, "Get a delay change time value for index object."), EO_OP_DESCRIPTION_SENTINEL }; static const Eo_Class_Description class_desc = { diff --git a/legacy/elementary/src/lib/elm_index.h b/legacy/elementary/src/lib/elm_index.h index 2aa6615d86..227def9b4b 100644 --- a/legacy/elementary/src/lib/elm_index.h +++ b/legacy/elementary/src/lib/elm_index.h @@ -77,6 +77,8 @@ enum ELM_OBJ_INDEX_SUB_ID_INDICATOR_DISABLED_GET, ELM_OBJ_INDEX_SUB_ID_HORIZONTAL_SET, ELM_OBJ_INDEX_SUB_ID_HORIZONTAL_GET, + ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_SET, + ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_GET, ELM_OBJ_INDEX_SUB_ID_LAST }; @@ -306,6 +308,31 @@ enum * @see elm_index_horizontal_get */ #define elm_obj_index_horizontal_get(ret) ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_index_delay_change_time_set + * @since 1.8 + * + * Change index delay change time. + * + * @param[out] ret + * + * @see elm_index_delay_change_time_get + */ +#define elm_obj_index_delay_change_time_set(dtime) ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_SET), EO_TYPECHECK(double, dtime) + +/** + * @def elm_obj_index_delay_change_time_get + * @since 1.8 + * + * Get index delay change time. + * + * @param[out] ret + * + * @see elm_index_delay_change_time_set + */ +#define elm_obj_index_delay_change_time_get(ret) ELM_OBJ_INDEX_ID(ELM_OBJ_INDEX_SUB_ID_DELAY_CHANGE_TIME_GET), EO_TYPECHECK(double *, ret) + /** * @addtogroup Index * @{ @@ -635,6 +662,32 @@ EAPI void elm_index_horizontal_set(Evas_Object *obj, Eina_B */ EAPI Eina_Bool elm_index_horizontal_get(const Evas_Object *obj); +/** + * Set a delay change time for index object. + * + * @param obj The index object. + * @param delay_change_time The delay change time to set. + * + * @note delay time is 0.2 sec by default. + * + * @see elm_index_delay_change_time_get + * + * @ingroup Index + */ +EAPI void elm_index_delay_change_time_set(Evas_Object *obj, double delay_change_time); + +/** + * Get a delay change time for index object. + * + * @param obj The index object. + * @return delay change time in seconds + * + * @see elm_index_delay_change_time_set + * + * @ingroup Index + */ +EAPI double elm_index_delay_change_time_get(const Evas_Object *obj); + /** * @} */ diff --git a/legacy/elementary/src/lib/elm_widget_index.h b/legacy/elementary/src/lib/elm_widget_index.h index 730cc7412b..96109610b6 100644 --- a/legacy/elementary/src/lib/elm_widget_index.h +++ b/legacy/elementary/src/lib/elm_widget_index.h @@ -28,6 +28,7 @@ struct _Elm_Index_Smart_Data int level; Evas_Coord dx, dy; Ecore_Timer *delay; + double delay_change_time; Eina_Bool level_active[2]; Eina_Bool down : 1;