'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
can use this */
#define EVRY_PLUGIN_FREE(_p) \
evry_plugin_free(EVRY_PLUGIN(_p), 0); \
if (_p) evry_plugin_free(EVRY_PLUGIN(_p), 0); \
E_FREE(_p);
struct _Evry_Item
@ -341,14 +341,13 @@ struct _Config
/* use up/down keys for prev/next in thumb view */
int cycle_mode;
unsigned char first_run;
/* not saved data */
Eina_List *plugins;
Eina_List *actions;
Eina_List *views;
int min_w, min_h;
unsigned char first_run;
};
struct _Plugin_Config

View File

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

View File

@ -90,7 +90,7 @@ int evry_shutdown(void);
int evry_show(E_Zone *zone, const char *params);
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 Evry_Plugin *evry_plug_actions_new(int type);

View File

@ -258,7 +258,6 @@ evry_hide(void)
ecore_timer_del(_show_timer);
_show_timer = NULL;
list->visible = EINA_FALSE;
_evry_selector_free(selectors[0]);
_evry_selector_free(selectors[1]);
@ -702,8 +701,8 @@ _evry_window_free(Evry_Window *win)
static Evry_Selector *
_evry_selector_new(int type)
{
Evry_Plugin *p;
Eina_List *l;
Plugin_Config *pc;
Eina_List *l, *pcs;
Evry_Selector *sel = E_NEW(Evry_Selector, 1);
Evas_Object *o = edje_object_add(win->popup->evas);
sel->o_main = o;
@ -711,34 +710,35 @@ _evry_selector_new(int type)
"e/modules/everything/selector_item");
evas_object_show(o);
sel->aggregator = evry_plug_aggregator_new(sel, type);
if (type == type_subject)
{
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);
pcs = evry_conf->conf_subjects;
}
else if (type == type_action)
{
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);
pcs = evry_conf->conf_actions;
}
else if (type == type_object)
{
sel->history = evry_hist->subjects;
edje_object_part_swallow(win->o_main, "e.swallow.object_selector", o);
pcs = evry_conf->conf_objects;
}
p = evry_plug_aggregator_new(sel);
sel->plugins = eina_list_append(sel->plugins, p);
sel->aggregator = p;
EINA_LIST_FOREACH(evry_conf->plugins, l, p)
EINA_LIST_FOREACH(pcs, l, pc)
{
if (!p->config->enabled) continue;
if (p->type != type) continue;
sel->plugins = eina_list_append(sel->plugins, p);
if (!pc->enabled) continue;
if (!pc->plugin) continue;
if (pc->plugin == sel->aggregator) continue;
sel->plugins = eina_list_append(sel->plugins, pc->plugin);
}
return sel;
@ -762,12 +762,9 @@ _evry_selector_free(Evry_Selector *sel)
while (sel->states)
_evry_state_pop(sel);
if (sel->aggregator)
evry_plugin_free(sel->aggregator, 1);
if (sel->actions)
evry_plug_actions_free(sel->actions);
EVRY_PLUGIN_FREE(sel->aggregator);
EVRY_PLUGIN_FREE(sel->actions);
if (sel->plugins) eina_list_free(sel->plugins);
if (sel->update_timer)
@ -1063,7 +1060,7 @@ _evry_selector_actions_get(Evry_Item *it)
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))
{
if (plugin->begin)
@ -1162,8 +1159,7 @@ _evry_state_pop(Evry_Selector *sel)
EINA_LIST_FREE(s->plugins, p)
p->cleanup(p);
if (sel->aggregator)
sel->aggregator->cleanup(sel->aggregator);
sel->aggregator->cleanup(sel->aggregator);
E_FREE(s);
@ -1302,8 +1298,7 @@ _evry_selectors_switch(int dir)
{
_evry_selector_objects_get(act);
_evry_selector_update(selectors[2]);
edje_object_signal_emit(win->o_main,
"e,state,object_selector_show", "e");
edje_object_signal_emit(win->o_main, "e,state,object_selector_show", "e");
next_selector = 2;
}
_evry_selector_activate(selectors[next_selector]);
@ -1311,18 +1306,14 @@ _evry_selectors_switch(int dir)
else if (selector == selectors[1] && dir < 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)
{
while (selector->states)
_evry_state_pop(selector);
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");
_evry_selector_activate(selectors[0]);
}
else if (selector == selectors[2] && dir < 0)
@ -1935,7 +1926,7 @@ _evry_matches_update(Evry_Selector *sel, int async)
if ((len_inp >= len) &&
(!strncmp(s->inp, p->config->trigger, len)))
{
len_trigger = len;
len_trigger = len;
s->cur_plugins = eina_list_append(s->cur_plugins, p);
if(len_inp == len)
p->fetch(p, NULL);
@ -1959,9 +1950,9 @@ _evry_matches_update(Evry_Selector *sel, int async)
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) &&
(p->config->trigger_only) &&
@ -1987,17 +1978,8 @@ _evry_matches_update(Evry_Selector *sel, int async)
}
}
if ((eina_list_count(s->cur_plugins) > 0) &&
/* dont add aggregator when there is only one plugin
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 (sel->aggregator->fetch(sel->aggregator, input))
_evry_plugin_list_insert(s, sel->aggregator);
}
if (s->plugin_auto_selected ||
@ -2049,15 +2031,12 @@ _evry_plugin_select(Evry_State *s, Evry_Plugin *p)
p = s->cur_plugins->data;
s->plugin_auto_selected = EINA_TRUE;
}
else if (p)
{
s->plugin_auto_selected = EINA_FALSE;
}
if (p)
s->plugin_auto_selected = EINA_FALSE;
if (s->plugin != p)
{
_evry_item_desel(s, NULL);
}
_evry_item_desel(s, NULL);
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);
#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_actions) eina_list_free(evry_conf->conf_actions);
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 */
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);
@ -299,34 +285,20 @@ _icon_get(Evry_Plugin *plugin, const Evry_Item *it, Evas *e)
return o;
}
static void
_plugin_free(Evry_Plugin *plugin)
{
PLUGIN(p, plugin);
E_FREE(plugin->config);
E_FREE(p);
}
Evry_Plugin *
evry_plug_aggregator_new(Evry_Selector *selector)
evry_plug_aggregator_new(Evry_Selector *sel, int type)
{
Plugin *p;
Plugin_Config *pc;
p = E_NEW(Plugin, 1);
EVRY_PLUGIN_NEW(EVRY_PLUGIN(p), N_("All"), 0, "", "",
NULL, _cleanup, _fetch, _icon_get, _plugin_free);
EVRY_PLUGIN_NEW(EVRY_PLUGIN(p), N_("All"), type, "", "",
NULL, _cleanup, _fetch, _icon_get, NULL);
EVRY_PLUGIN(p)->action = &_action;
pc = E_NEW(Plugin_Config, 1);
pc->enabled = 1;
pc->priority = -1;
pc->view_mode = -1;
EVRY_PLUGIN(p)->config = pc;
EVRY_PLUGIN(p)->history = EINA_FALSE;
p->selector = selector;
evry_plugin_register(EVRY_PLUGIN(p), -1);
p->selector = sel;
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);
if (!sd->cur_item && sd->items) sd->cur_item = sd->items->data;
if (update || !last_vis || v->plugin != p)
{
v->plugin = p;
@ -1185,7 +1186,9 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev)
if (sd->items)
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 (!strcmp(ev->key, "Right"))