'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_key_press(Evry_State *s, Ecore_Event_Key *ev);
static int _evry_view_toggle(Evry_State *s, const char *trigger); static int _evry_view_toggle(Evry_State *s, const char *trigger);
static void _evry_view_show(Evry_View *v); 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_desel(Evry_State *s, Evry_Item *it);
static void _evry_item_sel(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) if (s && s->view)
{ {
s->view->clear(s->view, 0); /* s->view->clear(s->view, 0); */
_evry_view_hide(s->view); _evry_view_hide(s->view, 0);
} }
_evry_list_win_clear(evry_conf->hide_list); _evry_list_win_clear(evry_conf->hide_list);
@ -1199,7 +1199,7 @@ evry_browse_item(Evry_Selector *sel)
if (s->view) if (s->view)
{ {
_evry_view_hide(s->view); _evry_view_hide(s->view, 1);
view = s->view; view = s->view;
} }
@ -1724,10 +1724,12 @@ _evry_view_show(Evry_View *v)
} }
static void static void
_evry_view_hide(Evry_View *v) _evry_view_hide(Evry_View *v, int slide)
{ {
if (!v) return; if (!v) return;
v->clear(v, slide);
if (v->o_list) if (v->o_list)
{ {
edje_object_part_unswallow(list->o_main, 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) if (s->view)
{ {
_evry_view_hide(s->view); _evry_view_hide(s->view, 0);
s->view->destroy(s->view); s->view->destroy(s->view);
} }
@ -1977,9 +1979,14 @@ _evry_plugin_select(Evry_State *s, Evry_Plugin *p)
void void
evry_plugin_select(const Evry_State *s, Evry_Plugin *p) evry_plugin_select(const Evry_State *s, Evry_Plugin *p)
{ {
Evry_Selector *sel;
_evry_plugin_select((Evry_State *) s, p); _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 static void

View File

@ -54,7 +54,9 @@ struct _Smart_Data
int slide_offset; int slide_offset;
double slide; double slide;
double slide_to; double slide_to;
int sliding; int sliding;
int clearing;
}; };
struct _Item struct _Item
@ -76,6 +78,10 @@ struct _Item
static View *view = NULL; static View *view = NULL;
static const char *view_types = NULL; static const char *view_types = NULL;
static void _view_clear(Evry_View *view, int slide);
static void static void
_thumb_gen(void *data, Evas_Object *obj, void *event_info) _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); Smart_Data *sd = evas_object_smart_data_get(data);
double da; double da;
double spd = (25.0/(double)e_config->framerate) / (double) (1 + sd->view->zoom); 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; if (spd > 0.9) spd = 0.9;
int wait = 0; int wait = 0;
@ -662,8 +668,14 @@ _animator(void *data)
{ {
sd->slide = sd->slide_to; sd->slide = sd->slide_to;
sd->sliding = 0; sd->sliding = 0;
}
if (sd->clearing)
{
_view_clear(EVRY_VIEW(sd->view), 0);
sd->animator = NULL;
return 0;
}
}
else else
wait++; wait++;
@ -858,6 +870,26 @@ _view_clear(Evry_View *view, int slide)
Smart_Data *sd = evas_object_smart_data_get(v->span); Smart_Data *sd = evas_object_smart_data_get(v->span);
Item *it; 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); _clear_items(v->span);
EINA_LIST_FREE(sd->items, it) EINA_LIST_FREE(sd->items, it)
@ -1068,6 +1100,7 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev)
Eina_List *l = NULL, *ll; Eina_List *l = NULL, *ll;
Item *it = NULL; Item *it = NULL;
const Evry_State *s = v->state; const Evry_State *s = v->state;
int slide;
if (!s->plugin) if (!s->plugin)
return 0; 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); _view_update(view, 0);
return 1; return 1;
} }

View File

@ -20,7 +20,7 @@ _animator(void *data)
Tab_View *v = data; Tab_View *v = data;
double da; 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; if (spd > 0.9) spd = 0.9;
int wait = 0; int wait = 0;