'everything'

- slide anim for browsing into folders
- fix for spd when framerate is below 25fps
-Wall checked


SVN revision: 48077
This commit is contained in:
Hannes Janetzek 2010-04-17 17:50:27 +00:00
parent 0a5825d304
commit bdb41a6254
12 changed files with 127 additions and 91 deletions

View File

@ -117,7 +117,7 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item)
d = e_exehist_mime_desktop_get(mime);
if (d)
{
if (d2 = eina_list_data_find(p->apps_mime, d))
if ((d2 = eina_list_data_find(p->apps_mime, d)))
{
p->apps_mime = eina_list_remove(p->apps_mime, d2);
efreet_desktop_free(d2);
@ -296,7 +296,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, const char *file, int match)
if (!exe) return NULL;
if (app = eina_hash_find(p->added, exe))
if ((app = eina_hash_find(p->added, exe)))
{
if (!desktop || (!app->desktop) ||
(desktop == app->desktop) ||
@ -615,16 +615,12 @@ _fetch(Evry_Plugin *plugin, const char *input)
Eina_List *l, *ll, *previous;
Efreet_Desktop *desktop;
Evry_Item *it;
char *file;
int prio = 0;
int len = input ? strlen(input) : 0;
plugin->changed = 0;
previous = plugin->items;
plugin->items = NULL;
/* EVRY_PLUGIN_ITEMS_CLEAR(p); */
/* add apps for a given mimetype */
if (plugin->type == type_action)
_add_desktop_list(p, p->apps_mime, input);
@ -635,7 +631,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
if (!p->apps_all)
{
Eina_List *apps = NULL;
Eina_List *cat_ss, *cat_app, *cat_sys, *cat_set;
Eina_List *cat_ss;
Eina_List *l, *ll;
apps = efreet_util_desktop_name_glob_list("*");

View File

@ -103,7 +103,6 @@ _scan_func(void *data)
{
Data *d = data;
Plugin *p = d->plugin;
Eina_List *files;
char *filename;
const char *mime;

View File

@ -246,7 +246,6 @@ struct _Inst
static Evry_Plugin *p2 = NULL;
static Inst *inst = NULL;
static Evry_Action *act = NULL;
static void
_act_cb_border_switch_to(E_Border *bd)

View File

@ -277,8 +277,8 @@ struct _Evry_View
Evry_View *(*create) (Evry_View *view, const Evry_State *s, const Evas_Object *swallow);
void (*destroy) (Evry_View *view);
int (*cb_key_down) (Evry_View *view, const Ecore_Event_Key *ev);
int (*update) (Evry_View *view);
void (*clear) (Evry_View *view);
int (*update) (Evry_View *view, int slide);
void (*clear) (Evry_View *view, int slide);
int priority;
};

View File

@ -48,14 +48,6 @@ EAPI E_Module_Api e_modapi =
EAPI void *
e_modapi_init(E_Module *m)
{
Eina_List *files;
char buf[4096], dir[4096];
char *file;
/* snprintf(buf, sizeof(buf), "%s/.e/e/config/%s/module.everything",
* e_user_homedir_get(), e_config_profile_get());
* ecore_file_mkdir(buf); */
_e_module_evry_log_dom = eina_log_domain_register
("e_module_everything", EINA_LOG_DEFAULT_COLOR);

View File

@ -220,16 +220,6 @@ evry_show(E_Zone *zone, const char *params)
return 1;
error3:
if (selectors && selectors[0])
_evry_selector_free(selectors[0]);
if (selectors && selectors[1])
_evry_selector_free(selectors[1]);
if (selectors && selectors[2])
_evry_selector_free(selectors[2]);
evry_history_unload();
error2:
if (win)
_evry_window_free(win);
@ -357,7 +347,7 @@ evry_item_free(Evry_Item *it)
}
static Evry_Selector *
_selector_for_plugin_get(Evry_Plugin *p)
_evry_selector_for_plugin_get(Evry_Plugin *p)
{
Evry_State *s;
int i;
@ -435,7 +425,7 @@ evry_plugin_async_update(Evry_Plugin *p, int action)
DBG("plugin: %s", p->name);
sel = _selector_for_plugin_get(p);
sel = _evry_selector_for_plugin_get(p);
if (!sel || !sel->state) return;
s = sel->state;
@ -449,7 +439,7 @@ evry_plugin_async_update(Evry_Plugin *p, int action)
if (!eina_list_data_find(s->cur_plugins, p)) return;
s->cur_plugins = eina_list_remove(s->cur_plugins, p);
if (s->plugin == p)
_evry_plugin_select(s, NULL);
}
@ -492,7 +482,7 @@ evry_plugin_async_update(Evry_Plugin *p, int action)
{
_evry_selector_update(sel);
}
_evry_view_update(s, NULL);
}
else if (action == EVRY_ASYNC_UPDATE_REFRESH)
@ -658,7 +648,8 @@ _evry_window_new(E_Zone *zone)
if (evry_conf->width > mw)
mw = evry_conf->width;
evry_conf->width = mw;
mw += offset_s*2;
mh += offset_s*2;
x = (zone->w * evry_conf->rel_x) - (mw / 2);
@ -779,7 +770,7 @@ _evry_selector_activate(Evry_Selector *sel)
if (s && s->view)
{
s->view->clear(s->view);
s->view->clear(s->view, 0);
_evry_view_hide(s->view);
}
@ -920,7 +911,7 @@ _evry_timer_cb_actions_get(void *data)
{
s = sel->state;
if (s->view)
s->view->update(s->view);
s->view->update(s->view, 0);
else
_evry_view_update(s, NULL);
}
@ -948,7 +939,6 @@ _evry_selector_update(Evry_Selector *sel)
if (s->plugin && (!it || s->item_auto_selected))
{
Eina_List *l;
it = NULL;
/* get first item */
@ -1224,7 +1214,7 @@ evry_browse_item(Evry_Selector *sel)
if (s->view)
{
_evry_view_show(s->view);
s->view->update(s->view);
s->view->update(s->view, -1);
}
}
@ -1248,6 +1238,7 @@ evry_browse_back(Evry_Selector *sel)
_evry_selector_update(sel);
_evry_update_text_label(s);
_evry_view_show(s->view);
s->view->update(s->view, 1);
}
static void
@ -1455,7 +1446,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
if (s->plugin == selector->aggregator)
selector->aggregator->fetch(selector->aggregator, s->input);
if (s->view)
s->view->update(s->view);
s->view->update(s->view, 0);
}
else if (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL)
{
@ -1763,7 +1754,7 @@ _evry_view_update(Evry_State *s, Evry_Plugin *p)
}
if (s->view)
s->view->update(s->view);
s->view->update(s->view, 0);
}
static void
@ -1771,7 +1762,7 @@ _evry_view_clear(Evry_State *s)
{
if (!s || !s->view) return;
s->view->clear(s->view);
s->view->clear(s->view, 0);
}
static int
@ -1843,7 +1834,7 @@ _evry_view_toggle(Evry_State *s, const char *trigger)
s->view = v;
_evry_view_show(s->view);
view->update(s->view);
view->update(s->view, 0);
return 1;
}
@ -1988,7 +1979,7 @@ evry_plugin_select(const Evry_State *s, Evry_Plugin *p)
{
_evry_plugin_select((Evry_State *) s, p);
_evry_selector_update(selector);
_evry_selector_update(_evry_selector_for_plugin_get(p));
}
static void

View File

@ -62,9 +62,6 @@ evry_config_dialog(E_Container *con, const char *params __UNUSED__)
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
Eina_List *l;
Evry_Plugin *p;
#define C(_name) cfdata->_name = evry_conf->_name
C(height);
C(width);
@ -114,13 +111,13 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
E_FREE(cfdata);
}
static int
_evry_cb_plugin_sort(const void *data1, const void *data2)
{
const Evry_Plugin *p1 = data1;
const Evry_Plugin *p2 = data2;
return p1->config->priority - p2->config->priority;
}
/* static int
* _evry_cb_plugin_sort(const void *data1, const void *data2)
* {
* const Evry_Plugin *p1 = data1;
* const Evry_Plugin *p2 = data2;
* return p1->config->priority - p2->config->priority;
* } */
static int
_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)

View File

@ -45,8 +45,8 @@ _begin(Evry_Plugin *p, const Evry_Item *it)
EINA_LIST_FOREACH(evry_conf->actions, l, act)
{
if (!act->type_in1 || (act->type_in1 == type) &&
(!act->check_item || act->check_item(act, it)))
if ((!act->type_in1) ||
((act->type_in1 == type) && (!act->check_item || act->check_item(act, it))))
{
act->item1 = it;

View File

@ -4,8 +4,6 @@
typedef struct _Plugin Plugin;
static int _auto_selected;
struct _Plugin
{
Evry_Plugin base;
@ -51,14 +49,6 @@ _cb_sort(const void *data1, const void *data2)
{
const Evry_Item *it1 = data1;
const Evry_Item *it2 = data2;
if (!_auto_selected)
{
if (it1->selected)
return -1;
if (it2->selected)
return 1;
}
if (it1->usage && it2->usage)
return (it1->usage > it2->usage ? -1 : 1);
@ -104,8 +94,6 @@ _cb_sort(const void *data1, const void *data2)
return strcasecmp(it1->label, it2->label);
}
static int refs = 0;
static inline Eina_List *
_add_item(Plugin *p, Eina_List *items, Evry_Item *it)
{
@ -238,9 +226,6 @@ _fetch(Evry_Plugin *plugin, const char *input)
if (items) eina_list_free(items);
/* XXX workaround */
_auto_selected = p->selector->state->item_auto_selected;
if (input)
{
EVRY_PLUGIN_ITEMS_SORT(p, _cb_sort);

View File

@ -4,7 +4,7 @@ static Evry_View *view;
static Evas_Object *o_text = NULL;
static void
_view_clear(Evry_View *v)
_view_clear(Evry_View *v, int slide)
{
v->active = 0;
evas_object_del(v->o_list);
@ -14,7 +14,7 @@ _view_clear(Evry_View *v)
static int
_view_update(Evry_View *v)
_view_update(Evry_View *v, int slide)
{
return 1;
}

View File

@ -44,13 +44,17 @@ struct _Smart_Data
Evas_Object *selector;
double last_select;
double sel_pos_to;
double sel_pos;
double scroll_align;
double scroll_align_to;
Ecore_Animator *animator;
double last_select;
int slide_offset;
double slide;
double slide_to;
int sliding;
};
struct _Item
@ -615,7 +619,10 @@ _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);
double spd = (25.0/(double)e_config->framerate) / (double) (1 + sd->view->zoom);
if (sd->sliding) spd *= 2.0;
if (spd > 0.9) spd = 0.9;
int wait = 0;
if (sd->sel_pos != sd->sel_pos_to)
@ -646,6 +653,24 @@ _animator(void *data)
e_scrollframe_child_pos_set(sd->view->sframe, 0, sd->scroll_align);
}
if (sd->sliding)
{
sd->slide = (sd->slide * (1.0 - spd)) + (sd->slide_to * spd);
da = sd->slide - sd->slide_to;
if (da < 0.0) da = -da;
if (da < 0.02)
{
sd->slide = sd->slide_to;
sd->sliding = 0;
}
else
wait++;
evas_object_move(sd->view->span, sd->slide, sd->y);
}
if (wait) return 1;
sd->animator = NULL;
@ -758,11 +783,19 @@ _pan_item_select(Evas_Object *obj, Item *it, int scroll)
if (!scroll || !evry_conf->scroll_animate)
{
sd->scroll_align = sd->scroll_align_to;
sd->sel_pos = sd->sel_pos_to;
if (align_to >= 0)
sd->sel_pos = align_to * it->h;
{
sd->sel_pos = align_to * it->h;
sd->sel_pos_to = sd->sel_pos;
}
if (align >= 0)
{
sd->scroll_align = align;
sd->scroll_align_to = align;
e_scrollframe_child_pos_set(sd->view->sframe, 0, sd->scroll_align);
}
if (sd->animator)
@ -820,7 +853,7 @@ _clear_items(Evas_Object *obj)
}
static void
_view_clear(Evry_View *view)
_view_clear(Evry_View *view, int slide)
{
View *v = (View*) view;
Smart_Data *sd = evas_object_smart_data_get(v->span);
@ -879,7 +912,7 @@ _update_frame(Evas_Object *obj)
}
static int
_view_update(Evry_View *view)
_view_update(Evry_View *view, int slide)
{
VIEW(v, view);
Smart_Data *sd = evas_object_smart_data_get(v->span);
@ -894,7 +927,7 @@ _view_update(Evry_View *view)
if (!p)
{
_view_clear(view);
_view_clear(view, 0);
return 1;
}
@ -1000,6 +1033,7 @@ _view_update(Evry_View *view)
v->plugin = p;
sd->update = EINA_TRUE;
_update_frame(v->span);
}
@ -1007,6 +1041,23 @@ _view_update(Evry_View *view)
v->tabs->update(v->tabs);
if (evry_conf->scroll_animate)
{
if (slide)
{
if (!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;
}
@ -1061,7 +1112,7 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev)
if (v->tabs->key_down(v->tabs, ev))
{
_view_update(view);
_view_update(view, 0);
return 1;
}
@ -1260,13 +1311,14 @@ _view_create(Evry_View *view, const Evry_State *s, const Evas_Object *swallow)
_pan_set, _pan_get, _pan_max_get,
_pan_child_size_get);
edje_object_part_swallow(v->bg, "e.swallow.list", v->sframe);
evas_object_show(v->sframe);
evas_object_show(v->span);
v->tabs = evry_tab_view_new(s, v->evas);
EVRY_VIEW(v)->o_list = v->bg;
v->tabs = evry_tab_view_new(s, v->evas);
v->view.o_bar = v->tabs->o_tabs;
EVRY_VIEW(v)->o_bar = v->tabs->o_tabs;
h = ecore_event_handler_add(EVRY_EVENT_ITEM_CHANGED, _cb_item_changed, v);
v->handlers = eina_list_append(v->handlers, h);

View File

@ -17,7 +17,8 @@ _animator(void *data)
Tab_View *v = data;
double da;
double spd = (25.0 / (double)e_config->framerate);
double spd = (35.0 / (double)e_config->framerate);
if (spd > 0.9) spd = 0.9;
int wait = 0;
if (v->align != v->align_to)
@ -26,7 +27,7 @@ _animator(void *data)
da = v->align - v->align_to;
if (da < 0.0) da = -da;
if (da < 0.02)
if (da < 0.01)
v->align = v->align_to;
else
wait++;
@ -80,6 +81,22 @@ _tab_scroll_to(Tab_View *v, Evry_Plugin *p, int animate)
e_box_align_set(v->o_tabs, 0.0, 0.5);
}
static Ecore_Timer *timer = NULL;
static void
_tabs_update(Tab_View *v);
static int
_timer_cb(void *data)
{
_tabs_update(data);
timer = NULL;
return 0;
}
static void
_tabs_update(Tab_View *v)
{
@ -88,12 +105,20 @@ _tabs_update(Tab_View *v)
Evry_Plugin *p;
const Evry_State *s = v->state;
Tab *tab;
Evas_Coord w;
Evas_Coord w, x;
Evas_Object *o;
/* evas_object_geometry_get(v->o_tabs, NULL, NULL, &w, NULL); */
w = evry_conf->width - 22;
edje_object_calc_force(v->o_tabs);
evas_object_geometry_get(v->o_tabs, &x, NULL, &w, NULL);
if (!w && !timer)
timer = ecore_timer_add(0.1, _timer_cb, v);
/* if (w < evry_conf->width - 18)
* w = evry_conf->width - 18; */
printf("tabs update %d %d\n", x, w);
/* remove tabs for not active plugins */
e_box_freeze(v->o_tabs);
@ -271,14 +296,14 @@ _tabs_key_down(Tab_View *v, const Ecore_Event_Key *ev)
else if (!strcmp(key, "Prior"))
{
_plugin_prev(v);
return 1;
return -1;
}
else if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)
{
if (!strcmp(key, "Left"))
{
_plugin_prev(v);
return 1;
return -1;
}
else if (!strcmp(key, "Right"))
{
@ -292,7 +317,7 @@ _tabs_key_down(Tab_View *v, const Ecore_Event_Key *ev)
if (!strcmp(key, "Left"))
{
_plugin_prev(v);
return 1;
return -1;
}
else if (!strcmp(key, "Right"))
{