'everything' nicer slide

SVN revision: 48082
This commit is contained in:
Hannes Janetzek 2010-04-17 19:13:01 +00:00
parent 31312d16e3
commit 6dc5aa2fe2
3 changed files with 66 additions and 25 deletions

View File

@ -71,7 +71,7 @@ static void _evry_view_update(Evry_State *s, Evry_Plugin *plugin);
static int _evry_view_key_press(Evry_State *s, Ecore_Event_Key *ev);
static int _evry_view_toggle(Evry_State *s, const char *trigger);
static void _evry_view_show(Evry_View *v);
static void _evry_view_hide(Evry_View *v);
static void _evry_view_hide(Evry_View *v, int slide);
static void _evry_item_desel(Evry_State *s, Evry_Item *it);
static void _evry_item_sel(Evry_State *s, Evry_Item *it);
@ -770,8 +770,8 @@ _evry_selector_activate(Evry_Selector *sel)
if (s && s->view)
{
s->view->clear(s->view, 0);
_evry_view_hide(s->view);
/* s->view->clear(s->view, 0); */
_evry_view_hide(s->view, 0);
}
_evry_list_win_clear(evry_conf->hide_list);
@ -1199,7 +1199,7 @@ evry_browse_item(Evry_Selector *sel)
if (s->view)
{
_evry_view_hide(s->view);
_evry_view_hide(s->view, 1);
view = s->view;
}
@ -1724,10 +1724,12 @@ _evry_view_show(Evry_View *v)
}
static void
_evry_view_hide(Evry_View *v)
_evry_view_hide(Evry_View *v, int slide)
{
if (!v) return;
v->clear(v, slide);
if (v->o_list)
{
edje_object_part_unswallow(list->o_main, v->o_list);
@ -1828,7 +1830,7 @@ _evry_view_toggle(Evry_State *s, const char *trigger)
if (s->view)
{
_evry_view_hide(s->view);
_evry_view_hide(s->view, 0);
s->view->destroy(s->view);
}
@ -1977,9 +1979,14 @@ _evry_plugin_select(Evry_State *s, Evry_Plugin *p)
void
evry_plugin_select(const Evry_State *s, Evry_Plugin *p)
{
Evry_Selector *sel;
_evry_plugin_select((Evry_State *) s, p);
_evry_selector_update(_evry_selector_for_plugin_get(p));
sel = _evry_selector_for_plugin_get(p);
if (sel)
_evry_selector_update(sel);
}
static void

View File

@ -54,7 +54,9 @@ struct _Smart_Data
int slide_offset;
double slide;
double slide_to;
int sliding;
int clearing;
};
struct _Item
@ -76,6 +78,10 @@ struct _Item
static View *view = NULL;
static const char *view_types = NULL;
static void _view_clear(Evry_View *view, int slide);
static void
_thumb_gen(void *data, Evas_Object *obj, void *event_info)
{
@ -619,7 +625,7 @@ _animator(void *data)
Smart_Data *sd = evas_object_smart_data_get(data);
double da;
double spd = (25.0/(double)e_config->framerate) / (double) (1 + sd->view->zoom);
if (sd->sliding) spd *= 1.5;
/* if (sd->sliding) spd *= 1.5; */
if (spd > 0.9) spd = 0.9;
int wait = 0;
@ -662,12 +668,18 @@ _animator(void *data)
{
sd->slide = sd->slide_to;
sd->sliding = 0;
if (sd->clearing)
{
_view_clear(EVRY_VIEW(sd->view), 0);
sd->animator = NULL;
return 0;
}
}
else
wait++;
evas_object_move(sd->view->span, sd->slide, sd->y);
evas_object_move(sd->view->span, sd->slide, sd->y);
}
if (wait) return 1;
@ -858,6 +870,26 @@ _view_clear(Evry_View *view, int slide)
Smart_Data *sd = evas_object_smart_data_get(v->span);
Item *it;
if (!sd->clearing && evry_conf->scroll_animate)
{
if (slide)
{
if (sd->items && !sd->animator)
sd->animator = ecore_animator_add(_animator, v->span);
sd->sliding = 1;
sd->slide = sd->x;
sd->slide_to = sd->x + sd->w * -slide;
sd->clearing = EINA_TRUE;
return;
}
if (sd->animator)
ecore_animator_del(sd->animator);
}
sd->clearing = EINA_FALSE;
_clear_items(v->span);
EINA_LIST_FREE(sd->items, it)
@ -1042,19 +1074,19 @@ _view_update(Evry_View *view, int slide)
if (evry_conf->scroll_animate)
{
if (slide)
{
if (sd->items && !sd->animator)
sd->animator = ecore_animator_add(_animator, v->span);
sd->sliding = 1;
sd->slide_to = sd->x;
sd->slide = sd->x + sd->w * -slide;
}
else if (sd->sliding)
{
if (!sd->animator)
sd->animator = ecore_animator_add(_animator, v->span);
}
if (slide)
{
if (sd->items && !sd->animator)
sd->animator = ecore_animator_add(_animator, v->span);
sd->sliding = 1;
sd->slide_to = sd->x;
sd->slide = sd->x + sd->w * -slide;
}
else if (sd->sliding)
{
if (!sd->animator)
sd->animator = ecore_animator_add(_animator, v->span);
}
}
return 0;
@ -1068,6 +1100,7 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev)
Eina_List *l = NULL, *ll;
Item *it = NULL;
const Evry_State *s = v->state;
int slide;
if (!s->plugin)
return 0;
@ -1109,8 +1142,9 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev)
}
}
if (v->tabs->key_down(v->tabs, ev))
if ((slide = v->tabs->key_down(v->tabs, ev)))
{
/* _view_update(view, -slide); */
_view_update(view, 0);
return 1;
}

View File

@ -20,7 +20,7 @@ _animator(void *data)
Tab_View *v = data;
double da;
double spd = (35.0 / (double)e_config->framerate);
double spd = (5.0 / (double)e_config->framerate);
if (spd > 0.9) spd = 0.9;
int wait = 0;