'everything' big cleanup.

- fixed bug with going back to thumb view
- aggregator can now have his one view


SVN revision: 48263
This commit is contained in:
Hannes Janetzek 2010-04-24 00:21:45 +00:00
parent d628d8547a
commit e226f8f013
7 changed files with 112 additions and 174 deletions

View File

@ -84,7 +84,7 @@ typedef struct _Plugin_Setting Plugin_Setting;
not to have any data lying around after cleanup you not to have any data lying around after cleanup you
can use this */ can use this */
#define EVRY_PLUGIN_FREE(_p) \ #define EVRY_PLUGIN_FREE(_p) \
evry_plugin_free(EVRY_PLUGIN(_p), 0); \ if (_p) evry_plugin_free(EVRY_PLUGIN(_p), 0); \
E_FREE(_p); E_FREE(_p);
struct _Evry_Item struct _Evry_Item
@ -341,14 +341,13 @@ struct _Config
/* use up/down keys for prev/next in thumb view */ /* use up/down keys for prev/next in thumb view */
int cycle_mode; int cycle_mode;
unsigned char first_run;
/* not saved data */ /* not saved data */
Eina_List *plugins;
Eina_List *actions; Eina_List *actions;
Eina_List *views; Eina_List *views;
int min_w, min_h; int min_w, min_h;
unsigned char first_run;
}; };
struct _Plugin_Config struct _Plugin_Config

View File

@ -12,7 +12,7 @@
/* #undef DBG /* #undef DBG
* #define DBG(...) ERR(__VA_ARGS__) */ * #define DBG(...) ERR(__VA_ARGS__) */
#define CONFIG_VERSION 12 #define CONFIG_VERSION 13
/* actual module specifics */ /* actual module specifics */
static void _e_mod_action_cb(E_Object *obj, const char *params); static void _e_mod_action_cb(E_Object *obj, const char *params);
@ -134,8 +134,8 @@ e_modapi_shutdown(E_Module *m __UNUSED__)
evry_plug_clipboard_shutdown(); evry_plug_clipboard_shutdown();
evry_plug_text_shutdown(); evry_plug_text_shutdown();
EINA_LIST_FREE(evry_conf->plugins, p) /* EINA_LIST_FREE(evry_conf->plugins, p)
evry_plugin_free(p, 1); * evry_plugin_free(p, 1); */
EINA_LIST_FREE(evry_conf->actions, a) EINA_LIST_FREE(evry_conf->actions, a)
evry_action_free(a); evry_action_free(a);
@ -162,7 +162,6 @@ EAPI int
e_modapi_save(E_Module *m __UNUSED__) e_modapi_save(E_Module *m __UNUSED__)
{ {
e_config_domain_save("module.everything", conf_edd, evry_conf); e_config_domain_save("module.everything", conf_edd, evry_conf);
return 1; return 1;
} }
@ -231,28 +230,29 @@ _config_init()
evry_conf->version = 11; evry_conf->version = 11;
} }
if (evry_conf && evry_conf->version == 11) if (evry_conf && evry_conf->version <= 12)
{ {
Plugin_Config *pc; Plugin_Config *pc;
Eina_List *conf[3];
int i;
EINA_LIST_FREE(evry_conf->conf_subjects, pc) conf[0] = evry_conf->conf_subjects;
conf[1] = evry_conf->conf_actions;
conf[2] = evry_conf->conf_objects;
for (i = 0; i < 3; i++)
{ {
if (pc->name) eina_stringshare_del(pc->name); EINA_LIST_FREE(conf[i], pc)
if (pc->trigger) eina_stringshare_del(pc->trigger); {
E_FREE(pc); if (pc->name) eina_stringshare_del(pc->name);
} if (pc->trigger) eina_stringshare_del(pc->trigger);
EINA_LIST_FREE(evry_conf->conf_actions, pc) E_FREE(pc);
{ }
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
E_FREE(pc);
}
EINA_LIST_FREE(evry_conf->conf_objects, pc)
{
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
E_FREE(pc);
} }
evry_conf->conf_subjects = NULL;
evry_conf->conf_actions = NULL;
evry_conf->conf_objects = NULL;
evry_conf->version = CONFIG_VERSION; evry_conf->version = CONFIG_VERSION;
} }
@ -290,28 +290,29 @@ static void
_config_free(void) _config_free(void)
{ {
Plugin_Config *pc; Plugin_Config *pc;
int i;
Eina_List *conf[3];
conf[0] = evry_conf->conf_subjects;
conf[1] = evry_conf->conf_actions;
conf[2] = evry_conf->conf_objects;
for (i = 0; i < 3; i++)
{
EINA_LIST_FREE(conf[i], pc)
{
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
if (pc->plugin) evry_plugin_free(pc->plugin, 1);
E_FREE(pc);
}
}
/* free config */
if (evry_conf->cmd_terminal) if (evry_conf->cmd_terminal)
eina_stringshare_del(evry_conf->cmd_terminal); eina_stringshare_del(evry_conf->cmd_terminal);
EINA_LIST_FREE(evry_conf->conf_subjects, pc) if (evry_conf->cmd_sudo)
{ eina_stringshare_del(evry_conf->cmd_sudo);
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
E_FREE(pc);
}
EINA_LIST_FREE(evry_conf->conf_actions, pc)
{
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
E_FREE(pc);
}
EINA_LIST_FREE(evry_conf->conf_objects, pc)
{
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
E_FREE(pc);
}
E_FREE(evry_conf); E_FREE(evry_conf);
} }
@ -393,12 +394,10 @@ EAPI int evry_api_version_check(int version)
static int static int
_evry_cb_plugin_sort(const void *data1, const void *data2) _evry_cb_plugin_sort(const void *data1, const void *data2)
{ {
const Evry_Plugin *p1 = data1; const Plugin_Config *pc1 = data1;
const Evry_Plugin *p2 = data2; const Plugin_Config *pc2 = data2;
if (!p1->config) return -1;
if (!p2->config) return 1;
return p1->config->priority - p2->config->priority; return pc1->priority - pc2->priority;
} }
Evry_Plugin * Evry_Plugin *
@ -433,8 +432,6 @@ evry_plugin_new(Evry_Plugin *base, const char *name, const char *label, int type
p->history = EINA_TRUE; p->history = EINA_TRUE;
p->view_mode = VIEW_MODE_NONE; p->view_mode = VIEW_MODE_NONE;
DBG("%s", p->name);
return p; return p;
} }
@ -444,7 +441,7 @@ evry_plugin_free(Evry_Plugin *p, int free_pointer)
evry_plugin_unregister(p); evry_plugin_unregister(p);
DBG("%s", p->name); DBG("%s", p->name);
if (p->config) p->config->plugin = NULL;
if (p->name) eina_stringshare_del(p->name); if (p->name) eina_stringshare_del(p->name);
if (p->label) eina_stringshare_del(p->label); if (p->label) eina_stringshare_del(p->label);
if (p->type_in) eina_stringshare_del(p->type_in); if (p->type_in) eina_stringshare_del(p->type_in);
@ -472,8 +469,6 @@ evry_action_new(const char *name, const char *label, const char *type_in1, const
act->action = action; act->action = action;
act->check_item = check_item; act->check_item = check_item;
act->icon = (icon ? eina_stringshare_add(icon) : NULL); act->icon = (icon ? eina_stringshare_add(icon) : NULL);
DBG("%s", name);
return act; return act;
} }
@ -500,21 +495,16 @@ evry_action_free(Evry_Action *act)
void void
evry_plugin_register(Evry_Plugin *p, int priority) evry_plugin_register(Evry_Plugin *p, int priority)
{ {
Eina_List *l, *confs = NULL; Eina_List *l, *confs;
Plugin_Config *pc; Plugin_Config *pc;
Eina_List *conf[3];
DBG("%s", p->name); int i = 0;
evry_conf->plugins = eina_list_append(evry_conf->plugins, p); conf[0] = evry_conf->conf_subjects;
conf[1] = evry_conf->conf_actions;
conf[2] = evry_conf->conf_objects;
if (p->type == type_subject) EINA_LIST_FOREACH(conf[p->type], l, pc)
confs = evry_conf->conf_subjects;
else if (p->type == type_action)
confs = evry_conf->conf_actions;
else if (p->type == type_object)
confs = evry_conf->conf_objects;
EINA_LIST_FOREACH(confs, l, pc)
if (pc->name && p->name && !strcmp(pc->name, p->name)) if (pc->name && p->name && !strcmp(pc->name, p->name))
break; break;
@ -530,24 +520,22 @@ evry_plugin_register(Evry_Plugin *p, int priority)
pc->trigger = eina_stringshare_add(p->trigger); pc->trigger = eina_stringshare_add(p->trigger);
pc->trigger_only = 1; pc->trigger_only = 1;
} }
conf[p->type] = eina_list_append(conf[p->type], pc);
pc->plugin = p;
confs = eina_list_append(confs, pc);
} }
p->config = pc; p->config = pc;
evry_conf->plugins = eina_list_sort(evry_conf->plugins, pc->plugin = p;
eina_list_count(evry_conf->plugins),
_evry_cb_plugin_sort); conf[p->type] = eina_list_sort(conf[p->type], -1, _evry_cb_plugin_sort);
if (p->type == type_subject) EINA_LIST_FOREACH(conf[p->type], l, pc)
evry_conf->conf_subjects = confs; pc->priority = i++;
else if (p->type == type_action)
evry_conf->conf_actions = confs; evry_conf->conf_subjects = conf[0];
else if (p->type == type_object) evry_conf->conf_actions = conf[1];
evry_conf->conf_objects = confs; evry_conf->conf_objects = conf[2];
if (p->type == type_subject) if (p->type == type_subject && !p->type_in)
{ {
char buf[256]; char buf[256];
snprintf(buf, sizeof(buf), _("Show %s Plugin"), p->name); snprintf(buf, sizeof(buf), _("Show %s Plugin"), p->name);
@ -562,7 +550,7 @@ evry_plugin_unregister(Evry_Plugin *p)
{ {
DBG("%s", p->name); DBG("%s", p->name);
evry_conf->plugins = eina_list_remove(evry_conf->plugins, p); /* evry_conf->plugins = eina_list_remove(evry_conf->plugins, p); */
if (p->type == type_subject) if (p->type == type_subject)
{ {

View File

@ -90,7 +90,7 @@ int evry_shutdown(void);
int evry_show(E_Zone *zone, const char *params); int evry_show(E_Zone *zone, const char *params);
void evry_hide(void); void evry_hide(void);
EAPI Evry_Plugin *evry_plug_aggregator_new(Evry_Selector *selector); EAPI Evry_Plugin *evry_plug_aggregator_new(Evry_Selector *selector, int type);
EAPI void evry_plug_aggregator_free(Evry_Plugin *plugin); EAPI void evry_plug_aggregator_free(Evry_Plugin *plugin);
EAPI Evry_Plugin *evry_plug_actions_new(int type); EAPI Evry_Plugin *evry_plug_actions_new(int type);

View File

@ -258,7 +258,6 @@ evry_hide(void)
ecore_timer_del(_show_timer); ecore_timer_del(_show_timer);
_show_timer = NULL; _show_timer = NULL;
list->visible = EINA_FALSE; list->visible = EINA_FALSE;
_evry_selector_free(selectors[0]); _evry_selector_free(selectors[0]);
_evry_selector_free(selectors[1]); _evry_selector_free(selectors[1]);
@ -702,8 +701,8 @@ _evry_window_free(Evry_Window *win)
static Evry_Selector * static Evry_Selector *
_evry_selector_new(int type) _evry_selector_new(int type)
{ {
Evry_Plugin *p; Plugin_Config *pc;
Eina_List *l; Eina_List *l, *pcs;
Evry_Selector *sel = E_NEW(Evry_Selector, 1); Evry_Selector *sel = E_NEW(Evry_Selector, 1);
Evas_Object *o = edje_object_add(win->popup->evas); Evas_Object *o = edje_object_add(win->popup->evas);
sel->o_main = o; sel->o_main = o;
@ -711,34 +710,35 @@ _evry_selector_new(int type)
"e/modules/everything/selector_item"); "e/modules/everything/selector_item");
evas_object_show(o); evas_object_show(o);
sel->aggregator = evry_plug_aggregator_new(sel, type);
if (type == type_subject) if (type == type_subject)
{ {
sel->history = evry_hist->subjects; sel->history = evry_hist->subjects;
sel->actions = evry_plug_actions_new(type_subject); sel->actions = evry_plug_actions_new(type);
edje_object_part_swallow(win->o_main, "e.swallow.subject_selector", o); edje_object_part_swallow(win->o_main, "e.swallow.subject_selector", o);
pcs = evry_conf->conf_subjects;
} }
else if (type == type_action) else if (type == type_action)
{ {
sel->history = evry_hist->actions; sel->history = evry_hist->actions;
sel->actions = evry_plug_actions_new(type_action); sel->actions = evry_plug_actions_new(type);
edje_object_part_swallow(win->o_main, "e.swallow.action_selector", o); edje_object_part_swallow(win->o_main, "e.swallow.action_selector", o);
pcs = evry_conf->conf_actions;
} }
else if (type == type_object) else if (type == type_object)
{ {
sel->history = evry_hist->subjects; sel->history = evry_hist->subjects;
edje_object_part_swallow(win->o_main, "e.swallow.object_selector", o); edje_object_part_swallow(win->o_main, "e.swallow.object_selector", o);
pcs = evry_conf->conf_objects;
} }
p = evry_plug_aggregator_new(sel); EINA_LIST_FOREACH(pcs, l, pc)
sel->plugins = eina_list_append(sel->plugins, p);
sel->aggregator = p;
EINA_LIST_FOREACH(evry_conf->plugins, l, p)
{ {
if (!p->config->enabled) continue; if (!pc->enabled) continue;
if (p->type != type) continue; if (!pc->plugin) continue;
sel->plugins = eina_list_append(sel->plugins, p); if (pc->plugin == sel->aggregator) continue;
sel->plugins = eina_list_append(sel->plugins, pc->plugin);
} }
return sel; return sel;
@ -762,12 +762,9 @@ _evry_selector_free(Evry_Selector *sel)
while (sel->states) while (sel->states)
_evry_state_pop(sel); _evry_state_pop(sel);
if (sel->aggregator) EVRY_PLUGIN_FREE(sel->aggregator);
evry_plugin_free(sel->aggregator, 1); EVRY_PLUGIN_FREE(sel->actions);
if (sel->actions)
evry_plug_actions_free(sel->actions);
if (sel->plugins) eina_list_free(sel->plugins); if (sel->plugins) eina_list_free(sel->plugins);
if (sel->update_timer) if (sel->update_timer)
@ -1063,7 +1060,7 @@ _evry_selector_actions_get(Evry_Item *it)
EINA_LIST_FOREACH(sel->plugins, l, plugin) EINA_LIST_FOREACH(sel->plugins, l, plugin)
{ {
if ((plugin == sel->actions) || (plugin == sel->aggregator) || if ((plugin == sel->actions) ||
(plugin->type_in && type_out && plugin->type_in == type_out)) (plugin->type_in && type_out && plugin->type_in == type_out))
{ {
if (plugin->begin) if (plugin->begin)
@ -1162,8 +1159,7 @@ _evry_state_pop(Evry_Selector *sel)
EINA_LIST_FREE(s->plugins, p) EINA_LIST_FREE(s->plugins, p)
p->cleanup(p); p->cleanup(p);
if (sel->aggregator) sel->aggregator->cleanup(sel->aggregator);
sel->aggregator->cleanup(sel->aggregator);
E_FREE(s); E_FREE(s);
@ -1302,8 +1298,7 @@ _evry_selectors_switch(int dir)
{ {
_evry_selector_objects_get(act); _evry_selector_objects_get(act);
_evry_selector_update(selectors[2]); _evry_selector_update(selectors[2]);
edje_object_signal_emit(win->o_main, edje_object_signal_emit(win->o_main, "e,state,object_selector_show", "e");
"e,state,object_selector_show", "e");
next_selector = 2; next_selector = 2;
} }
_evry_selector_activate(selectors[next_selector]); _evry_selector_activate(selectors[next_selector]);
@ -1311,18 +1306,14 @@ _evry_selectors_switch(int dir)
else if (selector == selectors[1] && dir < 0) else if (selector == selectors[1] && dir < 0)
{ {
_evry_selector_activate(selectors[0]); _evry_selector_activate(selectors[0]);
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
edje_object_signal_emit(win->o_main,
"e,state,object_selector_hide", "e");
} }
else if (selector == selectors[2] && dir > 0) else if (selector == selectors[2] && dir > 0)
{ {
while (selector->states) while (selector->states)
_evry_state_pop(selector); _evry_state_pop(selector);
edje_object_signal_emit(win->o_main, edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
"e,state,object_selector_hide", "e");
_evry_selector_activate(selectors[0]); _evry_selector_activate(selectors[0]);
} }
else if (selector == selectors[2] && dir < 0) else if (selector == selectors[2] && dir < 0)
@ -1935,7 +1926,7 @@ _evry_matches_update(Evry_Selector *sel, int async)
if ((len_inp >= len) && if ((len_inp >= len) &&
(!strncmp(s->inp, p->config->trigger, len))) (!strncmp(s->inp, p->config->trigger, len)))
{ {
len_trigger = len; len_trigger = len;
s->cur_plugins = eina_list_append(s->cur_plugins, p); s->cur_plugins = eina_list_append(s->cur_plugins, p);
if(len_inp == len) if(len_inp == len)
p->fetch(p, NULL); p->fetch(p, NULL);
@ -1959,9 +1950,9 @@ _evry_matches_update(Evry_Selector *sel, int async)
if (!s->cur_plugins) if (!s->cur_plugins)
{ {
s->input = s->inp; s->input = s->inp;
EINA_LIST_FOREACH(s->plugins, l, p) EINA_LIST_FOREACH(s->plugins, l, p)
{ {
if ((!win->plugin_dedicated) && if ((!win->plugin_dedicated) &&
(p->config->trigger_only) && (p->config->trigger_only) &&
@ -1987,17 +1978,8 @@ _evry_matches_update(Evry_Selector *sel, int async)
} }
} }
if ((eina_list_count(s->cur_plugins) > 0) && if (sel->aggregator->fetch(sel->aggregator, input))
/* dont add aggregator when there is only one plugin _evry_plugin_list_insert(s, sel->aggregator);
which wont show items in agrregator */
!(eina_list_count(s->cur_plugins) == 1 &&
!((Evry_Plugin *)s->cur_plugins->data)->aggregate))
{
s->cur_plugins = eina_list_prepend(s->cur_plugins, sel->aggregator);
sel->aggregator->fetch(sel->aggregator, input);
}
else
sel->aggregator->cleanup(sel->aggregator);
} }
if (s->plugin_auto_selected || if (s->plugin_auto_selected ||
@ -2049,15 +2031,12 @@ _evry_plugin_select(Evry_State *s, Evry_Plugin *p)
p = s->cur_plugins->data; p = s->cur_plugins->data;
s->plugin_auto_selected = EINA_TRUE; s->plugin_auto_selected = EINA_TRUE;
} }
else if (p)
{ if (p)
s->plugin_auto_selected = EINA_FALSE; s->plugin_auto_selected = EINA_FALSE;
}
if (s->plugin != p) if (s->plugin != p)
{ _evry_item_desel(s, NULL);
_evry_item_desel(s, NULL);
}
s->plugin = p; s->plugin = p;
} }

View File

@ -147,9 +147,6 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
C(scroll_speed); C(scroll_speed);
#undef C #undef C
/* evry_conf->plugins = eina_list_sort(evry_conf->plugins, -1,
* _evry_cb_plugin_sort); */
if (evry_conf->conf_subjects) eina_list_free(evry_conf->conf_subjects); if (evry_conf->conf_subjects) eina_list_free(evry_conf->conf_subjects);
if (evry_conf->conf_actions) eina_list_free(evry_conf->conf_actions); if (evry_conf->conf_actions) eina_list_free(evry_conf->conf_actions);
if (evry_conf->conf_objects) eina_list_free(evry_conf->conf_objects); if (evry_conf->conf_objects) eina_list_free(evry_conf->conf_objects);

View File

@ -127,20 +127,6 @@ _fetch(Evry_Plugin *plugin, const char *input)
/* first is aggregator itself */ /* first is aggregator itself */
lp = s->cur_plugins->next; lp = s->cur_plugins->next;
/* EINA_LIST_FOREACH(lp, l, pp)
* {
* if (pp->changed)
* {
* plugin->changed = 1;
* break;
* }
* }
*
* if (!plugin->changed)
* return 1; */
/* printf("aggreator changed\n"); */
EVRY_PLUGIN_ITEMS_FREE(p); EVRY_PLUGIN_ITEMS_FREE(p);
@ -299,34 +285,20 @@ _icon_get(Evry_Plugin *plugin, const Evry_Item *it, Evas *e)
return o; return o;
} }
static void
_plugin_free(Evry_Plugin *plugin)
{
PLUGIN(p, plugin);
E_FREE(plugin->config);
E_FREE(p);
}
Evry_Plugin * Evry_Plugin *
evry_plug_aggregator_new(Evry_Selector *selector) evry_plug_aggregator_new(Evry_Selector *sel, int type)
{ {
Plugin *p; Plugin *p;
Plugin_Config *pc;
p = E_NEW(Plugin, 1); p = E_NEW(Plugin, 1);
EVRY_PLUGIN_NEW(EVRY_PLUGIN(p), N_("All"), 0, "", "", EVRY_PLUGIN_NEW(EVRY_PLUGIN(p), N_("All"), type, "", "",
NULL, _cleanup, _fetch, _icon_get, _plugin_free); NULL, _cleanup, _fetch, _icon_get, NULL);
EVRY_PLUGIN(p)->action = &_action; EVRY_PLUGIN(p)->action = &_action;
EVRY_PLUGIN(p)->history = EINA_FALSE;
pc = E_NEW(Plugin_Config, 1);
pc->enabled = 1;
pc->priority = -1;
pc->view_mode = -1;
EVRY_PLUGIN(p)->config = pc;
p->selector = selector; evry_plugin_register(EVRY_PLUGIN(p), -1);
p->selector = sel;
return EVRY_PLUGIN(p); return EVRY_PLUGIN(p);
} }

View File

@ -1071,7 +1071,8 @@ _view_update(Evry_View *view, int slide)
} }
sd->items = eina_list_sort(sd->items, eina_list_count(sd->items), _sort_cb); sd->items = eina_list_sort(sd->items, eina_list_count(sd->items), _sort_cb);
if (!sd->cur_item && sd->items) sd->cur_item = sd->items->data;
if (update || !last_vis || v->plugin != p) if (update || !last_vis || v->plugin != p)
{ {
v->plugin = p; v->plugin = p;
@ -1185,7 +1186,9 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev)
if (sd->items) if (sd->items)
l = eina_list_data_find_list(sd->items, sd->cur_item); l = eina_list_data_find_list(sd->items, sd->cur_item);
if (!l)
l = sd->items;
if (v->mode == VIEW_MODE_THUMB && !evry_conf->cycle_mode) if (v->mode == VIEW_MODE_THUMB && !evry_conf->cycle_mode)
{ {
if (!strcmp(ev->key, "Right")) if (!strcmp(ev->key, "Right"))