diff --git a/src/modules/everything/Makefile.am b/src/modules/everything/Makefile.am index 4b95600aa..3c693b00a 100644 --- a/src/modules/everything/Makefile.am +++ b/src/modules/everything/Makefile.am @@ -21,7 +21,6 @@ pkg_LTLIBRARIES = module.la module_la_SOURCES = e_mod_main.c \ e_mod_main.h \ evry.c \ - evry.h \ evry_config.c \ evry_plug_config.c \ evry_plug_dir_browse.c \ diff --git a/src/modules/everything/e_mod_main.c b/src/modules/everything/e_mod_main.c index dfb36fb4b..bd8c03a9b 100644 --- a/src/modules/everything/e_mod_main.c +++ b/src/modules/everything/e_mod_main.c @@ -1,7 +1,7 @@ /* * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ -#include "e.h" + #include "e_mod_main.h" /* actual module specifics */ @@ -16,7 +16,7 @@ static E_Int_Menu_Augmentation *maug = NULL; static E_Config_DD *conf_edd = NULL; static E_Config_DD *conf_item_edd = NULL; -Config *evry_conf; +Config *evry_conf = NULL; /* module setup */ EAPI E_Module_Api e_modapi = @@ -33,13 +33,16 @@ e_modapi_init(E_Module *m) e_user_homedir_get(), e_config_profile_get()); ecore_file_mkdir(buf); - conf_item_edd = E_CONFIG_DD_NEW("Source_Config", Source_Config); + conf_item_edd = E_CONFIG_DD_NEW("Plugin_Config", Plugin_Config); #undef T #undef D -#define T Source_Config +#define T Plugin_Config #define D conf_item_edd E_CONFIG_VAL(D, T, name, STR); E_CONFIG_VAL(D, T, min_query, INT); + E_CONFIG_VAL(D, T, loaded, INT); + E_CONFIG_VAL(D, T, enabled, INT); + E_CONFIG_VAL(D, T, priority, INT); conf_edd = E_CONFIG_DD_NEW("Config", Config); #undef T #undef D @@ -51,7 +54,7 @@ e_modapi_init(E_Module *m) E_CONFIG_VAL(D, T, rel_y, DOUBLE); E_CONFIG_VAL(D, T, scroll_animate, INT); E_CONFIG_VAL(D, T, scroll_speed, DOUBLE); - E_CONFIG_LIST(D, T, sources, conf_item_edd); + E_CONFIG_LIST(D, T, plugins_conf, conf_item_edd); #undef T #undef D evry_conf = e_config_domain_load("module.everything", conf_edd); @@ -64,10 +67,8 @@ e_modapi_init(E_Module *m) evry_conf->width = 400; evry_conf->height = 350; evry_conf->scroll_animate = 1; - evry_conf->scroll_speed = 0.5; + evry_conf->scroll_speed = 0.08; } - - evry_conf->scroll_speed = 0.08; /* conf_module = m; */ evry_init(); diff --git a/src/modules/everything/e_mod_main.h b/src/modules/everything/e_mod_main.h index a85c082a5..3ac3c88d4 100644 --- a/src/modules/everything/e_mod_main.h +++ b/src/modules/everything/e_mod_main.h @@ -1,17 +1,31 @@ /* * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ + +#include "e.h" + #ifndef E_MOD_MAIN_H #define E_MOD_MAIN_H #define E_TYPEDEFS 1 -#include "evry.h" - +typedef struct _Evry_Plugin Evry_Plugin; +typedef struct _Evry_Item Evry_Item; +typedef struct _Evry_Action Evry_Action; +typedef struct _Evry_Config Evry_Config; +typedef struct _Evry_App Evry_App; #undef E_TYPEDEFS -#include "evry.h" typedef struct _Config Config; -typedef struct _Source_Config Source_Config; +typedef struct _Plugin_Config Plugin_Config; + + +#define EVRY_ACTION_OTHER 0 +#define EVRY_ACTION_FINISHED 1 +#define EVRY_ACTION_CONTINUE 2 + +#define EVRY_ASYNC_UPDATE_ADD 0 +#define EVRY_ASYNC_UPDATE_CLEAR 1 + struct _Config { @@ -21,34 +35,144 @@ struct _Config int width, height; /* generic plugin config */ - Eina_List *sources; + Eina_List *plugins_conf; int scroll_animate; double scroll_speed; int auto_select_first; + + /**/ + Eina_List *plugins; + }; -struct _Source_Config +struct _Plugin_Config { const char *name; + int loaded; + int enabled; + /* minimum input chars to query this source */ int min_query; int priority; }; + +struct _Evry_Item +{ + const char *label; + + const char *uri; + const char *mime; + /* these are only for internally use by plugins */ + /* used e.g. as pointer for item data (Efreet_Desktop) or */ + /* for internal stuff, like priority hints for sorting, etc */ + void *data[4]; + int priority; + + /* not to be set by plugin! */ + Evas_Object *o_icon; + Evas_Object *o_bg; +}; + +struct _Evry_Plugin +{ + const char *name; + + const char *type_in; + const char *type_out; + + /* sync/async ?*/ + Eina_Bool async_query; + + /* whether candidates can be shown without input + * e.g. borders, app history */ + Eina_Bool need_query; + + /* run when plugin is activated. */ + int (*begin) (Evry_Plugin *p, Evry_Item *item); + + /* get candidates matching string, fills 'candidates' list */ + int (*fetch) (Evry_Plugin *p, const char *input); + + /* default action for this plugins items */ + int (*action) (Evry_Plugin *p, Evry_Item *item, const char *input); + + /* run before new query and when hiding 'everything' */ + void (*cleanup) (Evry_Plugin *p); + + /* TODO return icon */ + void (*icon_get) (Evry_Plugin *p, Evry_Item *it, Evas *e); + /* provide more information for a candidate */ + /* int (*candidate_info) (Evas *evas, Evry_Item *item); */ + + Eina_List *items; + + Evas_Object *(*config_page) (void); + void (*config_apply) (void); + + /* for internal use by plugin */ + void *priv; + + /* not to be set by plugin! */ + Evas_Object *tab; + Plugin_Config *config; +}; + +struct _Evry_Action +{ + const char *name; + + const char *type_in1; + const char *type_in2; + const char *type_out; + + Evry_Item *thing1; + Evry_Item *thing2; + + int (*action) (void); + + void (*icon_get) (Evry_Plugin *p, Evry_Item *it, Evas *e); + + void *priv; + + /* not to be set by plugin! */ + Evas_Object *o_icon; +}; + +struct _Evry_Config +{ + Eina_List *plugin_order; + +}; + + +struct _Evry_App +{ + const char *file; + Efreet_Desktop *desktop; +}; EAPI extern E_Module_Api e_modapi; EAPI void *e_modapi_init (E_Module *m); EAPI int e_modapi_shutdown (E_Module *m); EAPI int e_modapi_save (E_Module *m); - EAPI E_Config_Dialog *evry_config_dialog(E_Container *con, const char *params); +EAPI int evry_init(void); +EAPI int evry_shutdown(void); +EAPI int evry_show(E_Zone *zone); +EAPI void evry_hide(void); +EAPI void evry_plugin_register(Evry_Plugin *p); +EAPI void evry_plugin_unregister(Evry_Plugin *p); +EAPI void evry_action_register(Evry_Action *act); +EAPI void evry_action_unregister(Evry_Action *act); +EAPI void evry_plugin_async_update(Evry_Plugin *plugin, int state); EAPI int evry_plug_apps_init(void); EAPI int evry_plug_apps_shutdown(void); diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c index 6090ee598..ef4b97f79 100644 --- a/src/modules/everything/evry.c +++ b/src/modules/everything/evry.c @@ -1,6 +1,5 @@ #include "e.h" #include "e_mod_main.h" -#include "evry.h" #define INPUTLEN 40 #define MATCH_LAG 0.33 @@ -63,14 +62,14 @@ static int _evry_scroll_timer(void *data); static int _evry_push_state(void); static int _evry_pop_state(void); static void _evry_plugin_selector_show(Evry_Plugin *p); -static int _evry_cb_plugin_sort(const void *data1, const void *data2); +static int _evry_cb_plugin_sort(const void *data1, const void *data2); static int _evry_plug_act_select_init(void); static int _evry_plug_act_select_actions_set(void); -static int _evry_plug_act_select_fetch(const char *input); -static int _evry_plug_act_select_action(Evry_Item *item, const char *input); -static void _evry_plug_act_select_cleanup(void); -static void _evry_plug_act_select_item_icon_get(Evry_Item *it, Evas *e); +static int _evry_plug_act_select_fetch(Evry_Plugin *p, const char *input); +static int _evry_plug_act_select_action(Evry_Plugin *p, Evry_Item *item, const char *input); +static void _evry_plug_act_select_cleanup(Evry_Plugin *p); +static void _evry_plug_act_select_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); /* local subsystem globals */ static E_Popup *popup = NULL; @@ -87,7 +86,7 @@ static Ecore_Animator *scroll_animator = NULL; static Ecore_Timer *scroll_timer = NULL; static double scroll_align_to; static double scroll_align; -static Eina_List *plugins = NULL; +/* static Eina_List *plugins = NULL; */ static Eina_List *actions = NULL; static Evry_State *cur_state = NULL; static Eina_List *stack = NULL; @@ -112,14 +111,44 @@ evry_shutdown(void) EAPI void evry_plugin_register(Evry_Plugin *plugin) { - plugins = eina_list_append(plugins, plugin); + Eina_List *l; + Plugin_Config *pc; + Eina_Bool found = 0; + + evry_conf->plugins = eina_list_append(evry_conf->plugins, plugin); + + EINA_LIST_FOREACH(evry_conf->plugins_conf, l, pc) + { + if (pc->name && plugin->name && !strcmp(pc->name, plugin->name)) + { + found = 1; + break; + } + } + + if (!found) + { + pc = E_NEW(Plugin_Config, 1); + pc->name = eina_stringshare_add(plugin->name); + pc->enabled = 1; + pc->priority = eina_list_count(evry_conf->plugins); + + evry_conf->plugins_conf = eina_list_append(evry_conf->plugins_conf, pc); + } + + plugin->config = pc; + + evry_conf->plugins = eina_list_sort(evry_conf->plugins, + eina_list_count(evry_conf->plugins), + _evry_cb_plugin_sort); + /* TODO sorting, initialization, etc */ } EAPI void evry_plugin_unregister(Evry_Plugin *plugin) { - plugins = eina_list_remove(plugins, plugin); + evry_conf->plugins = eina_list_remove(evry_conf->plugins, plugin); /* cleanup */ } @@ -242,7 +271,7 @@ evry_hide(void) EINA_LIST_FREE(s->plugins, p) { - p->cleanup(); + p->cleanup(p); if (p->tab) { @@ -307,9 +336,6 @@ evry_plugin_async_update(Evry_Plugin *p, int action) if (!eina_list_data_find(s->cur_plugins, p)) { s->cur_plugins = eina_list_append(s->cur_plugins, p); - s->cur_plugins = eina_list_sort(s->cur_plugins, - eina_list_count(s->cur_plugins), - _evry_cb_plugin_sort); _evry_plugin_selector_show(p); } else @@ -320,7 +346,7 @@ evry_plugin_async_update(Evry_Plugin *p, int action) } if ((!s->cur_plugin && s->cur_plugins) || (s->cur_plugin == p) || - (s->plugin_auto_selected && (s->cur_plugin->prio > p->prio))) + (s->plugin_auto_selected && (s->cur_plugin->config->priority > p->config->priority))) { if (!s->cur_plugin) s->plugin_auto_selected = 1; @@ -343,7 +369,7 @@ _evry_cb_plugin_sort(const void *data1, const void *data2) { const Evry_Plugin *p1 = data1; const Evry_Plugin *p2 = data2; - return p1->prio - p2->prio; + return p1->config->priority - p2->config->priority; } static int @@ -369,7 +395,7 @@ _evry_push_state(void) EINA_LIST_FOREACH(s->plugins, l, p) { if (p != s->cur_plugin) - p->cleanup(); + p->cleanup(p); if (p->tab) { @@ -379,8 +405,10 @@ _evry_push_state(void) } } - EINA_LIST_FOREACH(plugins, l, p) + EINA_LIST_FOREACH(evry_conf->plugins, l, p) { + if (!p->config->enabled) continue; + if (strstr(p->type_in, cur_type)) { /* printf("%s- in:%s out:%s\n", p->name, p->type_in, p->type_out); */ @@ -400,7 +428,7 @@ _evry_push_state(void) if (s && (s->cur_plugin != action_selector)) it = s->sel_item; - if (p->begin(it)) + if (p->begin(p, it)) list = eina_list_append(list, p); } else @@ -418,7 +446,7 @@ _evry_push_state(void) if (!list) return 0; - list = eina_list_sort(list, eina_list_count(list), _evry_cb_plugin_sort); + /* list = eina_list_sort(list, eina_list_count(list), _evry_cb_plugin_sort); */ _evry_list_clear(); @@ -473,7 +501,7 @@ _evry_pop_state(void) free(s->input); EINA_LIST_FOREACH(s->plugins, l, p) - p->cleanup(); + p->cleanup(p); E_FREE(s); @@ -504,7 +532,7 @@ _evry_pop_state(void) EINA_LIST_FOREACH(s->plugins, l, p) if (p != s->cur_plugin && p->begin) - p->begin(it); + p->begin(p, it); p = s->cur_plugin; s->cur_plugin = NULL; @@ -806,7 +834,7 @@ _evry_plugin_action(int finished) if (s->cur_plugin == action_selector) { /* set cur_action and start plugins for second parameter (if required)*/ - if (s->sel_item) _evry_plug_act_select_action(s->sel_item, s->input); + if (s->sel_item) _evry_plug_act_select_action(s->cur_plugin, s->sel_item, s->input); finished = 0; } @@ -826,7 +854,7 @@ _evry_plugin_action(int finished) if (s->cur_plugin->action) { - ret = s->cur_plugin->action(s->sel_item, s->input); + ret = s->cur_plugin->action(s->cur_plugin, s->sel_item, s->input); } if (ret == EVRY_ACTION_OTHER) { @@ -900,7 +928,7 @@ _evry_show_items(Evry_Plugin *p) _evry_cb_item_mouse_out, it); evas_object_show(o); - p->icon_get(it, popup->evas); + p->icon_get(p, it, popup->evas); if (edje_object_part_exists(o, "e.swallow.icons") && it->o_icon) { edje_object_part_swallow(o, "e.swallow.icons", it->o_icon); @@ -950,9 +978,9 @@ _evry_matches_update(Evry_Plugin *cur_plugin) EINA_LIST_FOREACH(s->plugins, l, p) { if (strlen(s->input) == 0) - items = !p->need_query ? p->fetch(NULL) : 0; + items = !p->need_query ? p->fetch(p, NULL) : 0; else - items = p->fetch(s->input); + items = p->fetch(p, s->input); if (!s->initial || (items && eina_list_count(p->items) > 0)) { @@ -960,8 +988,10 @@ _evry_matches_update(Evry_Plugin *cur_plugin) } } - EINA_LIST_FOREACH(plugins, l, p) + EINA_LIST_FOREACH(evry_conf->plugins, l, p) { + if (!p->config->enabled) continue; + if (p->tab && !eina_list_data_find(s->cur_plugins, p)) { evas_object_del(p->tab); @@ -1323,7 +1353,7 @@ _evry_plug_act_select_actions_set(void) Evry_State *s = cur_state; Evry_Plugin *p = action_selector; - _evry_plug_act_select_cleanup(); + _evry_plug_act_select_cleanup(p); const char *type = s->cur_plugin->type_out; @@ -1342,9 +1372,8 @@ _evry_plug_act_select_actions_set(void) } static int -_evry_plug_act_select_fetch(const char *input) +_evry_plug_act_select_fetch(Evry_Plugin *p, const char *input) { - Evry_Plugin *p = action_selector; Evry_Action *act; Eina_List *l; @@ -1367,7 +1396,7 @@ _evry_plug_act_select_fetch(const char *input) } static int -_evry_plug_act_select_action(Evry_Item *it, const char *input) +_evry_plug_act_select_action(Evry_Plugin *p, Evry_Item *it, const char *input) { Evry_Action *act = it->data[0]; cur_state->cur_action = act; @@ -1378,11 +1407,9 @@ _evry_plug_act_select_action(Evry_Item *it, const char *input) } static void -_evry_plug_act_select_cleanup(void) +_evry_plug_act_select_cleanup(Evry_Plugin *p) { - Evry_Item *it; - Evry_Plugin *p = action_selector; EINA_LIST_FREE(p->items, it) { @@ -1403,7 +1430,7 @@ _evry_plug_act_select_cleanup(void) } static void -_evry_plug_act_select_item_icon_get(Evry_Item *it, Evas *e) +_evry_plug_act_select_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { Evry_Action *act = it->data[0]; diff --git a/src/modules/everything/evry.h b/src/modules/everything/evry.h index 76395c585..2c257b975 100644 --- a/src/modules/everything/evry.h +++ b/src/modules/everything/evry.h @@ -1,13 +1,11 @@ /* * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ + +#include "e_mod_main.h" + #ifdef E_TYPEDEFS -typedef struct _Evry_Plugin Evry_Plugin; -typedef struct _Evry_Item Evry_Item; -typedef struct _Evry_Action Evry_Action; -typedef struct _Evry_Config Evry_Config; -typedef struct _Evry_App Evry_App; /* typedef enum _Evry_Plugin_Type @@ -97,6 +95,7 @@ struct _Evry_Plugin /* not to be set by plugin! */ Evas_Object *tab; + Plugin_Config *config; }; struct _Evry_Action diff --git a/src/modules/everything/evry_config.c b/src/modules/everything/evry_config.c index 1515b0fe7..6172b357c 100644 --- a/src/modules/everything/evry_config.c +++ b/src/modules/everything/evry_config.c @@ -1,6 +1,5 @@ -#include "e.h" + #include "e_mod_main.h" -#include "evry.h" /* typedef struct _E_Config_Dialog_Data E_Config_Dialog_Data; */ @@ -15,6 +14,9 @@ struct _E_Config_Dialog_Data int width, height; int scroll_animate; + + Evas_Object *l_avail; + }; @@ -75,10 +77,88 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) return 1; } +static void +_fill_list(Evas_Object *obj, int enabled) +{ + Evas *evas; + Evas_Coord w; + Eina_List *l; + Evry_Plugin *p; + + /* freeze evas, edje, and list widget */ + evas = evas_object_evas_get(obj); + evas_event_freeze(evas); + edje_freeze(); + e_widget_ilist_freeze(obj); + e_widget_ilist_clear(obj); + + EINA_LIST_FOREACH(evry_conf->plugins, l, p) + e_widget_ilist_append(obj, NULL, p->name, NULL, p, NULL); + + e_widget_ilist_go(obj); + e_widget_min_size_get(obj, &w, NULL); + e_widget_min_size_set(obj, w > 180 ? w : 180, 200); + e_widget_ilist_thaw(obj); + edje_thaw(); + evas_event_thaw(evas); +} + +static void +_plugin_move(Evas_Object *list, int dir) +{ + int sel; + Eina_List *l1, *l2; + + sel = e_widget_ilist_selected_get(list); + + if (sel >= 0) + { + Evry_Plugin *p; + Evas *evas; + int prio = 0; + + l1 = eina_list_nth_list(evry_conf->plugins, sel); + l2 = eina_list_nth_list(evry_conf->plugins, sel + dir); + + if (!l1 || !l2) return; + p = l1->data; + l1->data = l2->data; + l2->data = p; + + _fill_list(list, 0); + e_widget_ilist_selected_set(list, sel + dir); + + EINA_LIST_FOREACH(evry_conf->plugins, l1, p) + p->config->priority = prio++; + } +} + +static void +_plugin_move_up_cb(void *data, void *data2) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + + _plugin_move(cfdata->l_avail, -1); +} + +static void +_plugin_move_down_cb(void *data, void *data2) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + + _plugin_move(cfdata->l_avail, 1); +} + static Evas_Object * _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { - Evas_Object *o, *of, *ob; + Evas_Object *o, *of, *ob, *otb; + + otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale); o = e_widget_list_add(evas, 0, 0); @@ -98,5 +178,23 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf ob = e_widget_check_add(evas, _("Scroll Animate"), &(cfdata->scroll_animate)); e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 1, 0.5); - return o; + + e_widget_toolbook_page_append(otb, NULL, _("General Settings"), o, 0, 0, 0, 0, 0.5, 0.0); + e_widget_toolbook_page_show(otb, 0); + + of = e_widget_framelist_add(evas, _("Available Plugins"), 0); + o = e_widget_ilist_add(evas, 24, 24, NULL); + cfdata->l_avail = o; + /* e_widget_ilist_multi_select_set(ol, 1); */ + /* e_widget_on_change_hook_set(ol, _avail_list_cb_change, cfdata); */ + _fill_list(o, 0); + e_widget_framelist_object_append(of, o); + o = e_widget_button_add(evas, _("Move Up"), NULL, _plugin_move_up_cb, cfdata, NULL); + e_widget_framelist_object_append(of, o); + o = e_widget_button_add(evas, _("Move Down"), NULL, _plugin_move_down_cb, cfdata, NULL); + e_widget_framelist_object_append(of, o); + + e_widget_toolbook_page_append(otb, NULL, _("Plugins"), of, 0, 0, 0, 0, 0.5, 0.0); + + return otb; } diff --git a/src/modules/everything/evry_plug_apps.c b/src/modules/everything/evry_plug_apps.c index 0ac4878a5..e545a07ea 100644 --- a/src/modules/everything/evry_plug_apps.c +++ b/src/modules/everything/evry_plug_apps.c @@ -10,16 +10,17 @@ struct _Inst Evry_Item *candidate; }; -static int _begin(Evry_Item *item); -static int _fetch(const char *input); -static int _action(Evry_Item *item, const char *input); -static void _cleanup(void); -static void _item_add(Efreet_Desktop *desktop, char *file, int prio); +static int _begin(Evry_Plugin *p, Evry_Item *item); +static int _fetch(Evry_Plugin *p, const char *input); +static int _action(Evry_Plugin *p, Evry_Item *item, const char *input); +static void _cleanup(Evry_Plugin *p); +static void _item_add(Evry_Plugin *p, Efreet_Desktop *desktop, char *file, int prio); static int _cb_sort(const void *data1, const void *data2); -static void _item_icon_get(Evry_Item *it, Evas *e); +static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); static int _exec_action(void); -static Evry_Plugin *p; +static Evry_Plugin *p1; +static Evry_Plugin *p2; static Evry_Action *act; static Inst *inst; @@ -27,23 +28,36 @@ static Inst *inst; EAPI int evry_plug_apps_init(void) { - p = E_NEW(Evry_Plugin, 1); - p->type_in = "NONE|FILE"; - p->type_out = "NONE"; - p->need_query = 0; - p->begin = &_begin; - p->fetch = &_fetch; - p->action = &_action; - p->cleanup = &_cleanup; - p->icon_get = &_item_icon_get; - evry_plugin_register(p); + p1 = E_NEW(Evry_Plugin, 1); + p1->name = "Applications"; + p1->type_in = "NONE"; + p1->type_out = "APPLICATION"; + p1->need_query = 0; + p1->begin = &_begin; + p1->fetch = &_fetch; + p1->action = &_action; + p1->cleanup = &_cleanup; + p1->icon_get = &_item_icon_get; + evry_plugin_register(p1); + + p2 = E_NEW(Evry_Plugin, 1); + p2->name = "Open With..."; + p2->type_in = "FILE"; + p2->type_out = "NONE"; + p2->need_query = 0; + p2->begin = &_begin; + p2->fetch = &_fetch; + p2->action = &_action; + p2->cleanup = &_cleanup; + p2->icon_get = &_item_icon_get; + evry_plugin_register(p2); act = E_NEW(Evry_Action, 1); act->name = "Open File..."; act->type_in1 = "APPLICATION"; act->type_in2 = "FILE"; act->type_out = "NONE"; - act->action =_exec_action; + act->action = &_exec_action; evry_action_register(act); inst = NULL; @@ -54,14 +68,15 @@ evry_plug_apps_init(void) EAPI int evry_plug_apps_shutdown(void) { - evry_plugin_unregister(p); + evry_plugin_unregister(p1); + evry_plugin_unregister(p2); evry_action_unregister(act); return 1; } static int -_begin(Evry_Item *it) +_begin(Evry_Plugin *p, Evry_Item *it) { const char *mime; @@ -69,10 +84,6 @@ _begin(Evry_Item *it) if (it) { - p->name = "Open With..."; - p->type_out = "NONE"; - p->prio = 3; - if (!it->uri) return 0; if (!it->mime) @@ -88,10 +99,6 @@ _begin(Evry_Item *it) } else { - p->name = "Applications"; - p->type_out = "APPLICATION"; - p->prio = 1; - inst = E_NEW(Inst, 1); } @@ -99,7 +106,7 @@ _begin(Evry_Item *it) } static int -_action(Evry_Item *it, const char *input) +_action(Evry_Plugin *p, Evry_Item *it, const char *input) { E_Zone *zone; Evry_App *app = NULL; @@ -151,7 +158,7 @@ _action(Evry_Item *it, const char *input) } static void -_list_free(void) +_list_free(Evry_Plugin *p) { Evry_Item *it; Evry_App *app; @@ -166,9 +173,9 @@ _list_free(void) } static void -_cleanup(void) +_cleanup(Evry_Plugin *p) { - _list_free(); + _list_free(p); if (inst) { @@ -180,7 +187,7 @@ _cleanup(void) } static int -_fetch(const char *input) +_fetch(Evry_Plugin *p, const char *input) { Eina_List *l; Efreet_Desktop *desktop; @@ -188,14 +195,14 @@ _fetch(const char *input) char match1[4096]; char match2[4096]; - _list_free(); + _list_free(p); if (inst->apps) { if (!input) { EINA_LIST_FOREACH(inst->apps, l, desktop) - _item_add(desktop, NULL, 1); + _item_add(p, desktop, NULL, 1); } else { @@ -205,19 +212,19 @@ _fetch(const char *input) EINA_LIST_FOREACH(inst->apps, l, desktop) { if (e_util_glob_case_match(desktop->exec, match1)) - _item_add(desktop, NULL, 1); + _item_add(p, desktop, NULL, 1); else if (e_util_glob_case_match(desktop->exec, match2)) - _item_add(desktop, NULL, 2); + _item_add(p, desktop, NULL, 2); else if (e_util_glob_case_match(desktop->name, match1)) - _item_add(desktop, NULL, 1); - else if (e_util_glob_case_match(desktop->name, match2)) - _item_add(desktop, NULL, 2); + _item_add(p, desktop, NULL, 1); + else if (p, e_util_glob_case_match(desktop->name, match2)) + _item_add(p, desktop, NULL, 2); else if (desktop->comment) { if (e_util_glob_case_match(desktop->comment, match1)) - _item_add(desktop, NULL, 3); + _item_add(p, desktop, NULL, 3); else if (e_util_glob_case_match(desktop->comment, match2)) - _item_add(desktop, NULL, 4); + _item_add(p, desktop, NULL, 4); } } } @@ -229,28 +236,28 @@ _fetch(const char *input) snprintf(match1, sizeof(match1), "%s*", input); l = efreet_util_desktop_exec_glob_list(match1); EINA_LIST_FREE(l, desktop) - _item_add(desktop, NULL, 1); + _item_add(p, desktop, NULL, 1); snprintf(match1, sizeof(match1), "*%s*", input); l = efreet_util_desktop_name_glob_list(match1); EINA_LIST_FREE(l, desktop) - _item_add(desktop, NULL, 2); + _item_add(p, desktop, NULL, 2); // TODO make these optional/configurable l = efreet_util_desktop_generic_name_glob_list(match1); EINA_LIST_FREE(l, desktop) - _item_add(desktop, NULL, 3); + _item_add(p, desktop, NULL, 3); l = efreet_util_desktop_comment_glob_list(match1); EINA_LIST_FREE(l, desktop) - _item_add(desktop, NULL, 3); + _item_add(p, desktop, NULL, 3); } else if (!p->items) { // TODO option for popular/recent l = e_exehist_list_get(); EINA_LIST_FREE(l, file) - _item_add(NULL, file, 1); + _item_add(p, NULL, file, 1); } if (inst->added) @@ -270,7 +277,7 @@ _fetch(const char *input) } static void -_item_add(Efreet_Desktop *desktop, char *file, int prio) +_item_add(Evry_Plugin *p, Efreet_Desktop *desktop, char *file, int prio) { Evry_Item *it; Evry_App *app; @@ -355,7 +362,7 @@ _item_add(Efreet_Desktop *desktop, char *file, int prio) } static void -_item_icon_get(Evry_Item *it, Evas *e) +_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { Evry_App *app = it->data[0]; @@ -396,14 +403,14 @@ _cb_sort(const void *data1, const void *data2) } static int -_exec_action(void) +_exec_action() { if (act->thing1 && act->thing2) { inst = E_NEW(Inst, 1); inst->candidate = act->thing2; - _action(act->thing1, NULL); + _action(NULL, act->thing1, NULL); E_FREE(inst); inst = NULL; diff --git a/src/modules/everything/evry_plug_border.c b/src/modules/everything/evry_plug_border.c index e7164bc04..41bad55ef 100644 --- a/src/modules/everything/evry_plug_border.c +++ b/src/modules/everything/evry_plug_border.c @@ -1,12 +1,12 @@ #include "e.h" #include "e_mod_main.h" -static int _fetch(const char *input); -static int _action(Evry_Item *item, const char *input); -static void _cleanup(void); -static void _item_add(E_Border *bd, int prio); +static int _fetch(Evry_Plugin *p, const char *input); +static int _action(Evry_Plugin *p, Evry_Item *item, const char *input); +static void _cleanup(Evry_Plugin *p); +static void _item_add(Evry_Plugin *p, E_Border *bd, int prio); static int _cb_sort(const void *data1, const void *data2); -static void _item_icon_get(Evry_Item *it, Evas *e); +static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); static Evry_Plugin *p; @@ -19,7 +19,6 @@ evry_plug_border_init(void) p->type_in = "NONE"; p->type_out = "BORDER"; p->need_query = 0; - p->prio = 0; p->fetch = &_fetch; p->action = &_action; p->cleanup = &_cleanup; @@ -39,7 +38,7 @@ evry_plug_border_shutdown(void) } static int -_action(Evry_Item *it, const char *input) +_action(Evry_Plugin *p, Evry_Item *it, const char *input) { E_Border *bd; E_Zone *zone; @@ -67,7 +66,7 @@ _action(Evry_Item *it, const char *input) } static void -_cleanup() +_cleanup(Evry_Plugin *p) { Evry_Item *it; @@ -80,7 +79,7 @@ _cleanup() } static int -_fetch(const char *input) +_fetch(Evry_Plugin *p, const char *input) { E_Manager *man; E_Zone *zone; @@ -91,7 +90,7 @@ _fetch(const char *input) E_Border *bd; E_Border_List *bl; - _cleanup(); + _cleanup(p); man = e_manager_current_get(); zone = e_util_zone_current_get(man); @@ -108,17 +107,17 @@ _fetch(const char *input) if (zone == bd->zone) { if (!input) - _item_add(bd, 1); + _item_add(p, bd, 1); else if (bd->client.icccm.name && e_util_glob_case_match(bd->client.icccm.name, match1)) - _item_add(bd, 1); + _item_add(p, bd, 1); else if (e_util_glob_case_match(e_border_name_get(bd), match1)) - _item_add(bd, 1); + _item_add(p, bd, 1); else if (bd->client.icccm.name && e_util_glob_case_match(bd->client.icccm.name, match2)) - _item_add(bd, 2); + _item_add(p, bd, 2); else if (e_util_glob_case_match(e_border_name_get(bd), match2)) - _item_add(bd, 2); + _item_add(p, bd, 2); } } e_container_border_list_free(bl); @@ -133,13 +132,13 @@ _fetch(const char *input) } static void -_item_icon_get(Evry_Item *it, Evas *e) +_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { it->o_icon = e_border_icon_add(((E_Border *)it->data[0]), e); } static void -_item_add(E_Border *bd, int prio) +_item_add(Evry_Plugin *p, E_Border *bd, int prio) { Evry_Item *it; diff --git a/src/modules/everything/evry_plug_border_act.c b/src/modules/everything/evry_plug_border_act.c index d5014086e..a136e049a 100644 --- a/src/modules/everything/evry_plug_border_act.c +++ b/src/modules/everything/evry_plug_border_act.c @@ -8,12 +8,12 @@ struct _Inst E_Border *border; }; -static int _begin(Evry_Item *item); -static int _fetch(const char *input); -static int _action(Evry_Item *item, const char *input); -static void _cleanup(void); -static void _item_icon_get(Evry_Item *it, Evas *e); -static void _item_add(const char *label, void (*action_cb) (E_Border *bd), const char *icon); +static int _begin(Evry_Plugin *p, Evry_Item *item); +static int _fetch(Evry_Plugin *p, const char *input); +static int _action(Evry_Plugin *p, Evry_Item *item, const char *input); +static void _cleanup(Evry_Plugin *p); +static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); +static void _item_add(Evry_Plugin *p, const char *label, void (*action_cb) (E_Border *bd), const char *icon); static Evry_Plugin *p; static Inst *inst; @@ -27,7 +27,6 @@ evry_plug_border_act_init(void) p->type_in = "BORDER"; p->type_out = "NONE"; p->need_query = 0; - p->prio = 0; p->begin = &_begin; p->fetch = &_fetch; p->action = &_action; @@ -64,7 +63,7 @@ _act_cb_border_minimize(E_Border *bd) } static int -_begin(Evry_Item *item) +_begin(Evry_Plugin *p, Evry_Item *item) { E_Border *bd; @@ -76,20 +75,20 @@ _begin(Evry_Item *item) } static int -_fetch(const char *input) +_fetch(Evry_Plugin *p, const char *input) { - _cleanup(); + _cleanup(p); - _item_add(_("Iconify"), _act_cb_border_minimize, + _item_add(p, _("Iconify"), _act_cb_border_minimize, "e/widgets/border/default/minimize"); - _item_add(_("Close"), _act_cb_border_close, + _item_add(p, _("Close"), _act_cb_border_close, "e/widgets/border/default/close"); return 1; } static int -_action(Evry_Item *item, const char *input) +_action(Evry_Plugin *p, Evry_Item *item, const char *input) { void (*border_action) (E_Border *bd); border_action = item->data[0]; @@ -99,7 +98,7 @@ _action(Evry_Item *item, const char *input) } static void -_cleanup(void) +_cleanup(Evry_Plugin *p) { Evry_Item *it; @@ -112,7 +111,7 @@ _cleanup(void) } static void -_item_add(const char *label, void (*action_cb) (E_Border *bd), const char *icon) +_item_add(Evry_Plugin *p, const char *label, void (*action_cb) (E_Border *bd), const char *icon) { Evry_Item *it; @@ -124,7 +123,7 @@ _item_add(const char *label, void (*action_cb) (E_Border *bd), const char *icon) } static void -_item_icon_get(Evry_Item *it, Evas *e) +_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { it->o_icon = edje_object_add(e); e_theme_edje_object_set(it->o_icon, "base/theme/borders", (const char *)it->data[1]); diff --git a/src/modules/everything/evry_plug_calc.c b/src/modules/everything/evry_plug_calc.c index bb939d94a..ff9090670 100644 --- a/src/modules/everything/evry_plug_calc.c +++ b/src/modules/everything/evry_plug_calc.c @@ -5,13 +5,13 @@ * - dc support? */ -static int _begin(Evry_Item *it); -static int _fetch(const char *input); -static int _action(Evry_Item *item, const char *input); -static void _cleanup(void); -static void _item_add(char *output, int prio); +static int _begin(Evry_Plugin *p, Evry_Item *it); +static int _fetch(Evry_Plugin *p, const char *input); +static int _action(Evry_Plugin *p, Evry_Item *item, const char *input); +static void _cleanup(Evry_Plugin *p); +static void _item_add(Evry_Plugin *p, char *output, int prio); static int _cb_sort(const void *data1, const void *data2); -static void _item_icon_get(Evry_Item *it, Evas *e); +static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); static int _cb_data(void *data, int type, void *event); static Evry_Plugin *p; @@ -29,7 +29,6 @@ evry_plug_calc_init(void) p->type_in = "NONE"; p->type_out = "NONE"; p->need_query = 0; - p->prio = 6; p->async_query = 1; p->begin = &_begin; p->fetch = &_fetch; @@ -59,7 +58,7 @@ evry_plug_calc_shutdown(void) } static int -_begin(Evry_Item *it) +_begin(Evry_Plugin *p, Evry_Item *it) { data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _cb_data, p); @@ -72,7 +71,7 @@ _begin(Evry_Item *it) } static void -_cleanup() +_cleanup(Evry_Plugin *p) { Evry_Item *it, *it2; int i = 0; @@ -108,7 +107,7 @@ _send_input(const char *input) } static int -_action(Evry_Item *it, const char *input) +_action(Evry_Plugin *p, Evry_Item *it, const char *input) { if (!it) { @@ -139,7 +138,7 @@ _action(Evry_Item *it, const char *input) it = p->items->data; - _item_add((char *) it->label, 1); + _item_add(p, (char *) it->label, 1); } evry_plugin_async_update(p, EVRY_ASYNC_UPDATE_ADD); @@ -157,7 +156,7 @@ _action(Evry_Item *it, const char *input) if (p->items->data == it) { Evry_Item *it2 = p->items->data; - _item_add((char *) it2->label, 1); + _item_add(p, (char *) it2->label, 1); } } @@ -165,7 +164,7 @@ _action(Evry_Item *it, const char *input) } static int -_fetch(const char *input) +_fetch(Evry_Plugin *p, const char *input) { if (history) { @@ -179,13 +178,13 @@ _fetch(const char *input) } static void -_item_icon_get(Evry_Item *it, Evas *e) +_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { it->o_icon = NULL; } static void -_item_add(char *output, int prio) +_item_add(Evry_Plugin *p, char *output, int prio) { Evry_Item *it; @@ -217,7 +216,7 @@ _cb_data(void *data, int type, void *event) it->label = eina_stringshare_add(l->line); } else - _item_add(l->line, 1); + _item_add(p, l->line, 1); } evry_plugin_async_update(p, EVRY_ASYNC_UPDATE_ADD); diff --git a/src/modules/everything/evry_plug_config.c b/src/modules/everything/evry_plug_config.c index cc947b550..7efad4653 100644 --- a/src/modules/everything/evry_plug_config.c +++ b/src/modules/everything/evry_plug_config.c @@ -1,11 +1,11 @@ #include "e.h" #include "e_mod_main.h" -static int _fetch(const char *input); -static int _action(Evry_Item *item, const char *input); -static void _cleanup(void); -static void _item_add(E_Configure_It *eci, int prio); -static void _item_icon_get(Evry_Item *it, Evas *e); +static int _fetch(Evry_Plugin *p, const char *input); +static int _action(Evry_Plugin *p, Evry_Item *item, const char *input); +static void _cleanup(Evry_Plugin *p); +static void _item_add(Evry_Plugin *p, E_Configure_It *eci, int prio); +static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); static int _cb_sort(const void *data1, const void *data2); static Evry_Plugin *p; @@ -18,7 +18,6 @@ evry_plug_config_init(void) p->name = "Settings"; p->type_in = "NONE"; p->type_out = "NONE"; - p->prio = 4; p->fetch = &_fetch; p->action = &_action; p->cleanup = &_cleanup; @@ -38,7 +37,7 @@ evry_plug_config_shutdown(void) } static int -_action(Evry_Item *it, const char *input) +_action(Evry_Plugin *p, Evry_Item *it, const char *input) { E_Configure_It *eci, *eci2; E_Container *con; @@ -75,7 +74,7 @@ _action(Evry_Item *it, const char *input) } static void -_cleanup(void) +_cleanup(Evry_Plugin *p) { Evry_Item *it; @@ -87,7 +86,7 @@ _cleanup(void) } static int -_fetch(const char *input) +_fetch(Evry_Plugin *p, const char *input) { E_Manager *man; E_Zone *zone; @@ -98,7 +97,7 @@ _fetch(const char *input) E_Configure_Cat *ecat; E_Configure_It *eci; - _cleanup(); + _cleanup(p); snprintf(match1, sizeof(match1), "%s*", input); snprintf(match2, sizeof(match2), "*%s*", input); @@ -114,13 +113,13 @@ _fetch(const char *input) if (eci->pri >= 0) { if (e_util_glob_case_match(eci->label, match1)) - _item_add(eci, 1); + _item_add(p, eci, 1); else if (e_util_glob_case_match(eci->label, match2)) - _item_add(eci, 2); + _item_add(p, eci, 2); else if (e_util_glob_case_match(ecat->label, match1)) - _item_add(eci, 3); + _item_add(p, eci, 3); else if (e_util_glob_case_match(ecat->label, match2)) - _item_add(eci, 4); + _item_add(p, eci, 4); } } } @@ -136,7 +135,7 @@ _fetch(const char *input) } static void -_item_icon_get(Evry_Item *it, Evas *e) +_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { E_Configure_It *eci = it->data[0]; Evas_Object *o = NULL; @@ -155,7 +154,7 @@ _item_icon_get(Evry_Item *it, Evas *e) } static void -_item_add(E_Configure_It *eci, int prio) +_item_add(Evry_Plugin *p, E_Configure_It *eci, int prio) { Evry_Item *it; diff --git a/src/modules/everything/evry_plug_dir_browse.c b/src/modules/everything/evry_plug_dir_browse.c index e9c5ba0d5..e87851a9c 100644 --- a/src/modules/everything/evry_plug_dir_browse.c +++ b/src/modules/everything/evry_plug_dir_browse.c @@ -9,14 +9,14 @@ struct _State Eina_List *items; }; -static int _begin(Evry_Item *it); -static int _fetch(const char *input); -static int _action(Evry_Item *it, const char *input); -static void _cleanup(void); +static int _begin(Evry_Plugin *p, Evry_Item *it); +static int _fetch(Evry_Plugin *p, const char *input); +static int _action(Evry_Plugin *p, Evry_Item *it, const char *input); +static void _cleanup(Evry_Plugin *p); static int _cb_sort(const void *data1, const void *data2); -static void _item_icon_get(Evry_Item *it, Evas *e); -static void _list_free(void); -static Evry_Item *_item_fill(const char *directory, const char *file); +static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); +static void _list_free(Evry_Plugin *p); +static Evry_Item *_item_fill(Evry_Plugin *p, const char *directory, const char *file); static Evry_Plugin *p; static Eina_List *stack = NULL; @@ -29,7 +29,6 @@ evry_plug_dir_browse_init(void) p->name = "Browse Files"; p->type_in = "NONE|FILE"; p->type_out = "FILE"; - p->prio = 2; p->begin = &_begin; p->fetch = &_fetch; p->action = &_action; @@ -51,7 +50,7 @@ evry_plug_dir_browse_shutdown(void) } static int -_begin(Evry_Item *it) +_begin(Evry_Plugin *p, Evry_Item *it) { State *s; @@ -76,13 +75,13 @@ _begin(Evry_Item *it) } static int -_action(Evry_Item *it, const char *input) +_action(Evry_Plugin *p, Evry_Item *it, const char *input) { return EVRY_ACTION_OTHER; } static void -_list_free() +_list_free(Evry_Plugin *p) { Evry_Item *it; @@ -97,7 +96,7 @@ _list_free() } static void -_cleanup() +_cleanup(Evry_Plugin *p) { State *s; @@ -105,7 +104,7 @@ _cleanup() s = stack->data; - _list_free(); + _list_free(p); eina_stringshare_del(s->directory); @@ -122,7 +121,7 @@ _cleanup() /* based on directory-watcher from drawer module */ static int -_fetch(const char *input) +_fetch(Evry_Plugin *p, const char *input) { Eina_List *files; char *file; @@ -131,7 +130,7 @@ _fetch(const char *input) char match2[4096]; State *s = stack->data; - _list_free(); + _list_free(p); files = ecore_file_ls(s->directory); @@ -155,17 +154,17 @@ _fetch(const char *input) { if (e_util_glob_case_match(file, match1)) { - it = _item_fill(s->directory, file); + it = _item_fill(p, s->directory, file); it->priority += 1; } else if (e_util_glob_case_match(file, match2)) { - it = _item_fill(s->directory, file); + it = _item_fill(p, s->directory, file); } } else { - it = _item_fill(s->directory, file); + it = _item_fill(p, s->directory, file); } if (it) @@ -188,7 +187,7 @@ _fetch(const char *input) /* based on directory-watcher from drawer module */ static Evry_Item * -_item_fill(const char *directory, const char *file) +_item_fill(Evry_Plugin *p, const char *directory, const char *file) { Evry_Item *it = NULL; char buf[4096]; @@ -241,7 +240,7 @@ _item_fill(const char *directory, const char *file) } static void -_item_icon_get(Evry_Item *it, Evas *e) +_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { char *item_path; diff --git a/src/modules/everything/evry_plug_tracker.c b/src/modules/everything/evry_plug_tracker.c index 758932e40..95c5cfe86 100644 --- a/src/modules/everything/evry_plug_tracker.c +++ b/src/modules/everything/evry_plug_tracker.c @@ -10,11 +10,11 @@ struct _Inst E_DBus_Connection *conn; }; -static int _fetch(const char *input); -static int _action(Evry_Item *it, const char *input); -static void _cleanup(void); -static void _item_add(char *file, char *service, char *mime, int prio); -static void _item_icon_get(Evry_Item *it, Evas *e); +static int _fetch(Evry_Plugin *p, const char *input); +static int _action(Evry_Plugin *p, Evry_Item *it, const char *input); +static void _cleanup(Evry_Plugin *p); +static void _item_add(Evry_Plugin *p, char *file, char *service, char *mime, int prio); +static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e); static void _dbus_cb_reply(void *data, DBusMessage *msg, DBusError *error); static Evry_Plugin *p; @@ -32,7 +32,6 @@ evry_plug_tracker_init(void) p->type_in = "NONE"; p->type_out = "FILE"; p->need_query = 1; - p->prio = 3; p->fetch = &_fetch; p->action = &_action; p->cleanup = &_cleanup; @@ -64,13 +63,13 @@ evry_plug_tracker_shutdown(void) } static int -_action(Evry_Item *it, const char *input) +_action(Evry_Plugin *p, Evry_Item *it, const char *input) { return EVRY_ACTION_OTHER; } static void -_cleanup(void) +_cleanup(Evry_Plugin *p) { Evry_Item *it; @@ -84,7 +83,7 @@ _cleanup(void) } static int -_fetch(const char *input) +_fetch(Evry_Plugin *p, const char *input) { Eina_List *list; DBusMessage *msg; @@ -95,7 +94,7 @@ _fetch(const char *input) char *service = "Files"; char *match; - _cleanup(); + _cleanup(p); match = malloc(sizeof(char) * strlen(input) + 2); sprintf(match, "%s*", input); @@ -120,7 +119,7 @@ _fetch(const char *input) } static void -_item_icon_get(Evry_Item *it, Evas *e) +_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e) { char *item_path; @@ -146,7 +145,7 @@ _item_icon_get(Evry_Item *it, Evas *e) } static void -_item_add(char *file, char *service, char *mime, int prio) +_item_add(Evry_Plugin *p, char *file, char *service, char *mime, int prio) { Evry_Item *it; @@ -194,7 +193,7 @@ _dbus_cb_reply(void *data, DBusMessage *msg, DBusError *error) if (uri && service && mime) { - _item_add(uri, service, mime, 1); + _item_add(p, uri, service, mime, 1); } }