elm_transit: Add elm_transit_go_in() API

Summary:
elm_transit_go() is executed immediately after it is called.
elm_transit_go_in() starts transit in given seconds.

@feature

Reviewers: Hermet, seoz

Reviewed By: seoz

Subscribers: seoz, Hermet

Differential Revision: https://phab.enlightenment.org/D1954
This commit is contained in:
Jee-Yong Um 2015-02-17 08:34:46 +09:00 committed by Daniel Juyung Seo
parent 684013d25e
commit f4bf91f7c7
2 changed files with 38 additions and 0 deletions

View File

@ -30,6 +30,7 @@ struct _Elm_Transit
EINA_MAGIC;
Ecore_Animator *animator;
Ecore_Timer *timer; /**< Timer used by elm_transit_go_in() */
Eina_Inlist *effect_list;
Eina_List *objs;
Elm_Transit *prev_chain_transit;
@ -266,6 +267,8 @@ _transit_del(Elm_Transit *transit)
if (transit->del_data.func)
transit->del_data.func(transit->del_data.arg, transit);
ecore_timer_del(transit->timer);
//cut off the chain transit relationship
EINA_LIST_FOREACH_SAFE(transit->next_chain_transits, elist, elist_next, chain_transit)
chain_transit->prev_chain_transit = NULL;
@ -460,6 +463,17 @@ _recover_image_uv(Evas_Object *obj, Evas_Map *map, Eina_Bool revert, Eina_Bool b
return EINA_TRUE;
}
static Eina_Bool
_transit_go_in_cb(void *data)
{
Elm_Transit *transit = data;
transit->timer = NULL;
elm_transit_go(transit);
return ECORE_CALLBACK_CANCEL;
}
EAPI Elm_Transit *
elm_transit_add(void)
{
@ -724,6 +738,8 @@ elm_transit_go(Elm_Transit *transit)
{
ELM_TRANSIT_CHECK_OR_RETURN(transit);
ELM_SAFE_FREE(transit->timer, ecore_timer_del);
Eina_List *elist;
Evas_Object *obj;
@ -746,6 +762,15 @@ elm_transit_go(Elm_Transit *transit)
_transit_animate_cb(transit);
}
EAPI void
elm_transit_go_in(Elm_Transit *transit, double in)
{
ELM_TRANSIT_CHECK_OR_RETURN(transit);
if (transit->timer) ecore_timer_del(transit->timer);
transit->timer = ecore_timer_add(in, _transit_go_in_cb, transit);
}
EAPI void
elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused)
{

View File

@ -578,6 +578,19 @@ EAPI double elm_transit_duration_get(const Elm_Transit *transit)
*/
EAPI void elm_transit_go(Elm_Transit *transit);
/**
* Starts the transition in given seconds.
*
* @note @p transit can not be NULL
*
* @param transit The transit object.
* @param in The interval value in seconds
*
* @since 1.14
* @ingroup Transit
*/
EAPI void elm_transit_go_in(Elm_Transit *transit, double in);
/**
* Pause/Resume the transition.
*