e17/evry: allow theme to set min size of thumb view icons

- cleanup list swallow functions... thought there was a bug


SVN revision: 62599
This commit is contained in:
Hannes Janetzek 2011-08-19 22:11:09 +00:00
parent 4bb85a2b3b
commit 7e553786d5
2 changed files with 80 additions and 61 deletions

View File

@ -156,7 +156,7 @@ evry_show(E_Zone *zone, E_Zone_Edge edge, const char *params, Eina_Bool popup)
_evry_time = ecore_time_get(); _evry_time = ecore_time_get();
DBG("_____evry_show______"); DBG("_____evry_show______");
#endif #endif
E_OBJECT_CHECK_RETURN(zone, 0); E_OBJECT_CHECK_RETURN(zone, 0);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, 0); E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, 0);
@ -170,7 +170,7 @@ evry_show(E_Zone *zone, E_Zone_Edge edge, const char *params, Eina_Bool popup)
ECORE_X_WINDOW_TYPE_UTILITY); ECORE_X_WINDOW_TYPE_UTILITY);
ecore_evas_name_class_set(win->ewin->ecore_evas, "E", "everything"); ecore_evas_name_class_set(win->ewin->ecore_evas, "E", "everything");
ecore_evas_show(win->ewin->ecore_evas); ecore_evas_show(win->ewin->ecore_evas);
if (e_grabinput_get(win->ewin->evas_win, 0, win->ewin->evas_win)) if (e_grabinput_get(win->ewin->evas_win, 0, win->ewin->evas_win))
@ -178,7 +178,7 @@ evry_show(E_Zone *zone, E_Zone_Edge edge, const char *params, Eina_Bool popup)
else else
ERR("could not acquire grab"); ERR("could not acquire grab");
} }
evry_history_load(); evry_history_load();
if (params) if (params)
@ -538,7 +538,7 @@ _evry_selector_update_actions(Evry_Selector *sel)
if (sel->action_timer) if (sel->action_timer)
ecore_timer_del(sel->action_timer); ecore_timer_del(sel->action_timer);
_evry_selector_item_clear(sel); _evry_selector_item_clear(sel);
sel->action_timer = ecore_timer_add(0.2, _evry_timer_cb_actions_get, sel); sel->action_timer = ecore_timer_add(0.2, _evry_timer_cb_actions_get, sel);
} }
@ -1262,7 +1262,7 @@ _evry_selector_thumb(Evry_Selector *sel, const Evry_Item *it)
{ {
e_thumb_icon_file_set(sel->o_thumb, file->path, "e/desktop/background"); e_thumb_icon_file_set(sel->o_thumb, file->path, "e/desktop/background");
e_thumb_icon_size_set(sel->o_thumb, 128, 80); e_thumb_icon_size_set(sel->o_thumb, 128, 80);
} }
else else
e_thumb_icon_file_set(sel->o_thumb, file->path, NULL); e_thumb_icon_file_set(sel->o_thumb, file->path, NULL);
@ -1326,7 +1326,7 @@ _evry_selector_item_update(Evry_Selector *sel)
if (!_evry_selector_thumb(sel, it)) if (!_evry_selector_thumb(sel, it))
{ {
o = evry_util_icon_get(it, win->evas); o = evry_util_icon_get(it, win->evas);
if ((!o) && it->plugin) if ((!o) && it->plugin)
o = evry_util_icon_get(EVRY_ITEM(it->plugin), win->evas); o = evry_util_icon_get(EVRY_ITEM(it->plugin), win->evas);
} }
@ -1481,13 +1481,13 @@ _evry_state_pop(Evry_Selector *sel, int immediate)
ecore_timer_del(sel->update_timer); ecore_timer_del(sel->update_timer);
sel->update_timer = NULL; sel->update_timer = NULL;
} }
if (sel->action_timer) if (sel->action_timer)
{ {
ecore_timer_del(sel->action_timer); ecore_timer_del(sel->action_timer);
sel->action_timer = NULL; sel->action_timer = NULL;
} }
if (s->view) if (s->view)
{ {
if (immediate) if (immediate)
@ -1691,8 +1691,8 @@ evry_browse_item(Evry_Item *it)
if (s->view) if (s->view)
{ {
s->view->state = s; s->view->state = s;
_evry_view_show(win, s->view, SLIDE_LEFT);
s->view->update(s->view); s->view->update(s->view);
_evry_view_show(win, s->view, SLIDE_LEFT);
} }
} }
@ -1704,17 +1704,21 @@ evry_browse_item(Evry_Item *it)
int int
evry_browse_back(Evry_Selector *sel) evry_browse_back(Evry_Selector *sel)
{ {
Evry_Window *win = sel->win; Evry_Window *win;
Evry_State *s;
if (!sel) sel = CUR_SEL; if (!sel) return 0;
Evry_State *s = sel->state;
DBG("%p", sel); if ((!sel) || !(win = sel->win))
if (!s || !sel->states->next)
return 0; return 0;
if (!(s = sel->state) || (!sel->states->next))
return 0;
/* next = eina_list_data_get(sel->states->next);
* edje_object_part_unswallow(win->o_main, next->view->o_list); */
_evry_state_pop(sel, 0); _evry_state_pop(sel, 0);
s = sel->state; s = sel->state;
@ -2299,7 +2303,7 @@ _evry_action_do(Evry_Action *act)
{ {
Evry_Event_Action_Performed *ev; Evry_Event_Action_Performed *ev;
int ret; int ret;
if ((ret = act->action(act))) if ((ret = act->action(act)))
{ {
ev = E_NEW(Evry_Event_Action_Performed, 1); ev = E_NEW(Evry_Event_Action_Performed, 1);
@ -2333,7 +2337,7 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
Evry_Window *win = sel->win; Evry_Window *win = sel->win;
Eina_List *l; Eina_List *l;
int ret = 0; int ret = 0;
if ((SUBJ_SEL)->update_timer) if ((SUBJ_SEL)->update_timer)
{ {
_evry_matches_update(SUBJ_SEL, 0); _evry_matches_update(SUBJ_SEL, 0);
@ -2389,7 +2393,7 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
if (SUBJ_SEL == CUR_SEL) if (SUBJ_SEL == CUR_SEL)
_evry_selectors_switch(win, 1); _evry_selectors_switch(win, 1);
if (ACTN_SEL == CUR_SEL) if (ACTN_SEL == CUR_SEL)
_evry_selectors_switch(win, 1); _evry_selectors_switch(win, 1);
return; return;
} }
@ -2462,6 +2466,22 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
} }
} }
static void
_evry_view_list_swallow_set(Evas_Object *obj, const char *part, Evas_Object *swallow)
{
Evas_Object *o;
o = edje_object_part_swallow_get(obj, part);
if (o != swallow)
{
evas_object_hide(o);
edje_object_part_unswallow(obj, o);
edje_object_part_unswallow(obj, swallow);
edje_object_part_swallow(obj, part, swallow);
evas_object_show(swallow);
}
}
static void static void
_evry_view_show(Evry_Window *win, Evry_View *v, int slide) _evry_view_show(Evry_Window *win, Evry_View *v, int slide)
@ -2479,24 +2499,21 @@ _evry_view_show(Evry_Window *win, Evry_View *v, int slide)
if (slide == SLIDE_LEFT) if (slide == SLIDE_LEFT)
{ {
edje_object_part_swallow(win->o_main, "list:e.swallow.list2", v->o_list); _evry_view_list_swallow_set(win->o_main, "list:e.swallow.list2", v->o_list);
evas_object_show(v->o_list);
edje_object_signal_emit(win->o_main, "list:e,action,slide,left", "e"); edje_object_signal_emit(win->o_main, "list:e,action,slide,left", "e");
edje_object_signal_emit(v->o_list, "e,action,show,list", "e"); edje_object_signal_emit(v->o_list, "e,action,show,list", "e");
} }
else if (slide == SLIDE_RIGHT) else if (slide == SLIDE_RIGHT)
{ {
edje_object_part_swallow(win->o_main, "list:e.swallow.list", v->o_list); _evry_view_list_swallow_set(win->o_main, "list:e.swallow.list", v->o_list);
evas_object_show(v->o_list);
edje_object_signal_emit(win->o_main, "list:e,action,slide,right", "e"); edje_object_signal_emit(win->o_main, "list:e,action,slide,right", "e");
edje_object_signal_emit(v->o_list, "e,action,show,list", "e"); edje_object_signal_emit(v->o_list, "e,action,show,list", "e");
} }
else else
{ {
edje_object_part_swallow(win->o_main, "list:e.swallow.list", v->o_list); _evry_view_list_swallow_set(win->o_main, "list:e.swallow.list", v->o_list);
evas_object_show(v->o_list);
edje_object_signal_emit(win->o_main, "list:e,action,slide,default", "e"); edje_object_signal_emit(win->o_main, "list:e,action,slide,default", "e");
edje_object_signal_emit(v->o_list, "e,action,show,list", "e"); edje_object_signal_emit(v->o_list, "e,action,show,list", "e");
@ -2540,8 +2557,8 @@ _evry_state_clear(Evry_Window *win)
if (v->o_list) if (v->o_list)
{ {
edje_object_part_unswallow(win->o_main, v->o_list);
evas_object_hide(v->o_list); evas_object_hide(v->o_list);
edje_object_part_unswallow(win->o_main, v->o_list);
} }
} }
@ -2559,32 +2576,26 @@ _evry_view_hide(Evry_Window *win, Evry_View *v, int slide)
if (slide && v->o_list) if (slide && v->o_list)
{ {
evas_object_hide(v->o_list); win->state_clearing = v->state;
edje_object_part_unswallow(win->o_main, v->o_list);
if (slide == SLIDE_RIGHT) if (slide == SLIDE_RIGHT)
{ {
edje_object_part_swallow(win->o_main, "list:e.swallow.list2", _evry_view_list_swallow_set(win->o_main, "list:e.swallow.list2", v->o_list);
v->o_list);
win->state_clearing = v->state;
} }
else /* if (slide == SLIDE_LEFT) */ else /* if (slide == SLIDE_LEFT) */
{ {
edje_object_part_swallow(win->o_main, "list:e.swallow.list", _evry_view_list_swallow_set(win->o_main, "list:e.swallow.list", v->o_list);
v->o_list);
win->state_clearing = v->state;
} }
evas_object_show(v->o_list);
edje_object_signal_emit(v->o_list, "e,action,hide,list", "e"); edje_object_signal_emit(v->o_list, "e,action,hide,list", "e");
/* FIXME get signal from theme when anim finished */ /* FIXME get signal from theme when anim finished */
v->state->clear_timer = ecore_timer_add(0.5, _clear_timer, win); v->state->clear_timer = ecore_timer_add(1.5, _clear_timer, win);
if (v->o_bar) if (v->o_bar)
{ {
edje_object_part_unswallow(win->o_main, v->o_bar);
evas_object_hide(v->o_bar); evas_object_hide(v->o_bar);
edje_object_part_unswallow(win->o_main, v->o_bar);
} }
return; return;
@ -2594,14 +2605,14 @@ _evry_view_hide(Evry_Window *win, Evry_View *v, int slide)
if (v->o_list) if (v->o_list)
{ {
edje_object_part_unswallow(win->o_main, v->o_list);
evas_object_hide(v->o_list); evas_object_hide(v->o_list);
edje_object_part_unswallow(win->o_main, v->o_list);
} }
if (v->o_bar) if (v->o_bar)
{ {
edje_object_part_unswallow(win->o_main, v->o_bar);
evas_object_hide(v->o_bar); evas_object_hide(v->o_bar);
edje_object_part_unswallow(win->o_main, v->o_bar);
} }
} }
@ -2612,14 +2623,14 @@ _evry_view_create(Evry_State *s)
if (s->view) if (s->view)
return 1; return 1;
if (s->plugin && s->plugin->view) if (s->plugin && s->plugin->view)
view = s->plugin->view; view = s->plugin->view;
else else
view = eina_list_data_get(evry_conf->views); view = eina_list_data_get(evry_conf->views);
s->view = view->create(view, s, s->selector->win->o_main); s->view = view->create(view, s, s->selector->win->o_main);
if (s->view) if (s->view)
{ {
s->view->state = s; s->view->state = s;
@ -2640,7 +2651,7 @@ _evry_view_update(Evry_Window *win, Evry_State *s)
s->view->update(s->view); s->view->update(s->view);
return 0; return 0;
} }
if (_evry_view_create(s)) if (_evry_view_create(s))
{ {
s->view->update(s->view); s->view->update(s->view);
@ -2748,7 +2759,7 @@ _evry_matches_update(Evry_Selector *sel, int async)
#ifdef CHECK_TIME #ifdef CHECK_TIME
DBG("matches update %f", ecore_time_get() - _evry_time); DBG("matches update %f", ecore_time_get() - _evry_time);
#endif #endif
if (sel->update_timer) if (sel->update_timer)
{ {
ecore_timer_del(sel->update_timer); ecore_timer_del(sel->update_timer);
@ -2942,7 +2953,7 @@ _evry_plugin_select(Evry_State *s, Evry_Plugin *p)
_evry_view_show(s->selector->win, s->view, 0); _evry_view_show(s->selector->win, s->view, 0);
s->view->update(s->view); s->view->update(s->view);
} }
} }
} }

View File

@ -89,7 +89,7 @@ _thumb_gen(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
e_icon_size_get(it->thumb, &w, &h); e_icon_size_get(it->thumb, &w, &h);
edje_extern_object_aspect_set(it->thumb, EDJE_ASPECT_CONTROL_BOTH, w, h); edje_extern_object_aspect_set(it->thumb, EDJE_ASPECT_CONTROL_BOTH, w, h);
edje_object_part_unswallow(it->frame, it->image); edje_object_part_unswallow(it->frame, it->image);
edje_object_part_swallow(it->frame, "e.swallow.thumb", it->thumb); edje_object_part_swallow(it->frame, "e.swallow.thumb", it->thumb);
evas_object_show(it->thumb); evas_object_show(it->thumb);
edje_object_signal_emit(it->frame, "e,action,thumb,show_delayed", "e"); edje_object_signal_emit(it->frame, "e,action,thumb,show_delayed", "e");
@ -136,7 +136,7 @@ _thumb_idler(void *data)
char *suffix; char *suffix;
int w, h; int w, h;
int cnt = 0; int cnt = 0;
sd->queue = eina_list_sort(sd->queue, -1, _sort_pos_cb); sd->queue = eina_list_sort(sd->queue, -1, _sort_pos_cb);
EINA_LIST_FOREACH_SAFE(sd->queue, l, ll, it) EINA_LIST_FOREACH_SAFE(sd->queue, l, ll, it)
@ -171,7 +171,7 @@ _thumb_idler(void *data)
evas_object_smart_callback_add(it->thumb, "e_thumb_gen", _thumb_gen, it); evas_object_smart_callback_add(it->thumb, "e_thumb_gen", _thumb_gen, it);
e_thumb_icon_size_set(it->thumb, it->w, it->h); e_thumb_icon_size_set(it->thumb, it->w, it->h);
if (it->item->icon && it->item->icon[0]) if (it->item->icon && it->item->icon[0])
e_thumb_icon_file_set(it->thumb, it->item->icon, NULL); e_thumb_icon_file_set(it->thumb, it->item->icon, NULL);
else if ((suffix = strrchr(file->path, '.')) && (!strncmp(suffix, ".edj", 4))) else if ((suffix = strrchr(file->path, '.')) && (!strncmp(suffix, ".edj", 4)))
@ -187,7 +187,7 @@ _thumb_idler(void *data)
} }
edje_object_signal_emit(it->frame, "e,action,thumb,show", "e"); edje_object_signal_emit(it->frame, "e,action,thumb,show", "e");
sd->queue = eina_list_remove_list(sd->queue, l); sd->queue = eina_list_remove_list(sd->queue, l);
if (cnt++ > 10) if (cnt++ > 10)
@ -419,12 +419,20 @@ _e_smart_reconfigure_do(void *data)
} }
else else
{ {
if (sd->view->zoom == 0) Evas_Object *o = edje_object_add(sd->view->evas);
ww = 96; e_theme_edje_object_set(o, "base/theme/modules/everything",
else if (sd->view->zoom == 1) "e/modules/everything/thumbview/item/thumb");
ww = 128; edje_object_size_min_get(o, &ww, &hh);
else evas_object_del(o);
ww = 192; if (!ww)
{
if (sd->view->zoom == 0)
ww = 96;
else if (sd->view->zoom == 1)
ww = 128;
else
ww = 192;
}
div = sd->w / ww; div = sd->w / ww;
if (div < 1) div = 1; if (div < 1) div = 1;
@ -451,7 +459,7 @@ _e_smart_reconfigure_do(void *data)
if (x <= (sd->w - ww)) if (x <= (sd->w - ww))
continue; continue;
x = 0; x = 0;
y += hh; y += hh;
} }
@ -1412,24 +1420,24 @@ _cb_action_performed(void *data, int type __UNUSED__, void *event)
Eina_List *l; Eina_List *l;
Item *it; Item *it;
Smart_Data *sd; Smart_Data *sd;
sd = evas_object_smart_data_get(v->span); sd = evas_object_smart_data_get(v->span);
if (!sd) return ECORE_CALLBACK_PASS_ON; if (!sd) return ECORE_CALLBACK_PASS_ON;
EINA_LIST_FOREACH(sd->items, l, it) EINA_LIST_FOREACH(sd->items, l, it)
{ {
if ((it->item == ev->it1) || if ((it->item == ev->it1) ||
(it->item == ev->it2)) (it->item == ev->it2))
break; break;
} }
if (it && it->visible) if (it && it->visible)
{ {
evas_object_raise(it->frame); evas_object_raise(it->frame);
edje_object_signal_emit(it->frame, "e,action,go", "e"); edje_object_signal_emit(it->frame, "e,action,go", "e");
} }
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
} }
@ -1632,7 +1640,7 @@ _view_create(Evry_View *view, const Evry_State *s, const Evas_Object *swallow)
v->handlers = eina_list_append(v->handlers, h); v->handlers = eina_list_append(v->handlers, h);
h = evry_event_handler_add(EVRY_EVENT_ACTION_PERFORMED, _cb_action_performed, v); h = evry_event_handler_add(EVRY_EVENT_ACTION_PERFORMED, _cb_action_performed, v);
v->handlers = eina_list_append(v->handlers, h); v->handlers = eina_list_append(v->handlers, h);
return EVRY_VIEW(v); return EVRY_VIEW(v);
} }