'everything'
authorHannes Janetzek <hannes.janetzek@gmail.com>
Sun, 30 Aug 2009 08:51:15 +0000 (08:51 +0000)
committerHannes Janetzek <hannes.janetzek@gmail.com>
Sun, 30 Aug 2009 08:51:15 +0000 (08:51 +0000)
- added history that should adapt sort list sorting to usage
- conf dialog: moved plugiγ types to separate pages
- fixed bug from shared hash of apps plugins

SVN revision: 42095

src/modules/everything/Evry.h
src/modules/everything/e_mod_main.c
src/modules/everything/e_mod_main.h
src/modules/everything/evry.c
src/modules/everything/evry_config.c
src/modules/everything/evry_plug_aggregator.c
src/modules/everything/evry_view_plugin_tabs.c
src/modules/everything/sources/evry_plug_apps.c
src/modules/everything/sources/evry_plug_border.c
src/modules/everything/sources/evry_plug_dir_browse.c
src/modules/everything/sources/evry_plug_tracker.c

index e129b5d437fc72f8c3b3f19effb0775ea30a0402..7acb39c112420df81e1840281c41f0cb10ac3df4 100644 (file)
@@ -88,6 +88,7 @@ struct _Evry_Item
   Evry_Plugin *plugin;
   int ref;
   void (*free) (Evry_Item *item);
+  double usage;
 };
 
 struct _Evry_Item_App
@@ -136,7 +137,8 @@ struct _Evry_Plugin
   Evas_Object *(*icon_get) (Evry_Plugin *p, const Evry_Item *it, Evas *e);
   /* provide more information for a candidate */
   /* int (*candidate_info) (Evas *evas, Evry_Item *item); */
-
+  const char *(*item_id) (Evry_Plugin *p, const Evry_Item *it);
+  
   /* optional: default action for this plugins items */
   int  (*action) (Evry_Plugin *p, const Evry_Item *item);
 
index ca24f69d0d96924acd841528cc32ede91ff341f1..c4c8aba5d645f2450ddcf787b3932849c8049b54 100644 (file)
@@ -9,13 +9,18 @@
 
 #include "e_mod_main.h"
 
-#define CONFIG_VERSION 3
+#define CONFIG_VERSION 5
+#define HISTORY_VERSION 1
 
 /* actual module specifics */
-static void _e_mod_action_exebuf_cb(E_Object *obj, const char *params);
+static void _e_mod_action_cb(E_Object *obj, const char *params);
 static int  _e_mod_run_defer_cb(void *data);
 static void _e_mod_run_cb(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_mod_menu_add(void *data, E_Menu *m);
+static void _config_init(void);
+static void _config_free(void);
+static void _history_init(void);
+static void _history_free(void);
 
 static E_Int_Menu_Augmentation *maug = NULL;
 static E_Action *act = NULL;
@@ -23,8 +28,13 @@ static E_Action *act = NULL;
 static Eina_Array  *plugins = NULL;
 static E_Config_DD *conf_edd = NULL;
 static E_Config_DD *conf_item_edd = NULL;
+static E_Config_DD *hist_entry_edd = NULL;
+static E_Config_DD *hist_item_edd = NULL;
+static E_Config_DD *hist_edd = NULL;
+
 
 Config *evry_conf = NULL;
+History *evry_hist = NULL;
 
 /* module setup */
 EAPI E_Module_Api e_modapi =
@@ -33,7 +43,6 @@ EAPI E_Module_Api e_modapi =
     "Everything"
   };
 
-
 static Eina_Bool list_cb(Eina_Module *m, void *data)
 {
    if (eina_module_load(m))
@@ -50,67 +59,18 @@ e_modapi_init(E_Module *m)
    char *file;
    E_Action *act;
 
-   snprintf(buf, sizeof(buf), "%s/.e/e/config/%s/module.everything",
-           e_user_homedir_get(), e_config_profile_get());
-   ecore_file_mkdir(buf);
-
-   conf_item_edd = E_CONFIG_DD_NEW("Plugin_Config", Plugin_Config);
-#undef T
-#undef D
-#define T Plugin_Config
-#define D conf_item_edd
-   E_CONFIG_VAL(D, T, name, STR);
-   E_CONFIG_VAL(D, T, trigger, 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
-#define T Config
-#define D conf_edd
-   E_CONFIG_VAL(D, T, version, INT);
-   E_CONFIG_VAL(D, T, width, INT);
-   E_CONFIG_VAL(D, T, height, INT);
-   E_CONFIG_VAL(D, T, rel_x, DOUBLE);
-   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_VAL(D, T, hide_input, INT);
-   E_CONFIG_VAL(D, T, hide_list, INT);
-   E_CONFIG_VAL(D, T, quick_nav, INT);
-   E_CONFIG_LIST(D, T, conf_subjects, conf_item_edd);
-   E_CONFIG_LIST(D, T, conf_actions, conf_item_edd);
-   E_CONFIG_LIST(D, T, conf_objects, conf_item_edd);
-   E_CONFIG_LIST(D, T, conf_views,   conf_item_edd);
-#undef T
-#undef D
-   evry_conf = e_config_domain_load("module.everything", conf_edd);
-
-   if (!evry_conf || (evry_conf->version != CONFIG_VERSION))
-     {
-       evry_conf = E_NEW(Config, 1);
-       evry_conf->version = CONFIG_VERSION;
-       evry_conf->rel_x = 50.0;
-       evry_conf->rel_y = 50.0;
-       evry_conf->width = 400;
-       evry_conf->height = 350;
-       evry_conf->scroll_animate = 0;
-       evry_conf->scroll_speed = 0.08;
-       evry_conf->hide_input = 0;
-       evry_conf->hide_list = 1;
-       evry_conf->quick_nav = 1;
-       evry_conf->conf_subjects = NULL;
-       evry_conf->conf_actions = NULL;
-       evry_conf->conf_objects = NULL;
-       evry_conf->conf_views   = NULL;
-     }
+   /* snprintf(buf, sizeof(buf), "%s/.e/e/config/%s/module.everything",
+    *      e_user_homedir_get(), e_config_profile_get());
+    * ecore_file_mkdir(buf); */
 
+   _config_init();
+   _history_init();
+      
    /* search for plugins */
    eina_module_init();
 
-   snprintf(dir, sizeof(dir), "%s/enlightenment/everything_plugins", e_prefix_lib_get());
+   snprintf(dir, sizeof(dir), "%s/enlightenment/everything_plugins",
+           e_prefix_lib_get());
    files = ecore_file_ls(dir);
 
    EINA_LIST_FREE(files, file)
@@ -127,20 +87,23 @@ e_modapi_init(E_Module *m)
    act = e_action_add("everything");
    if (act)
      {
-       act->func.go = _e_mod_action_exebuf_cb;
+       act->func.go = _e_mod_action_cb;
+       e_action_predef_name_set(_("Everything"),
+                                _("Show Everything Dialog"),
+                                "everything", "", NULL, 0);
      }
 
-   e_action_predef_name_set(_("Everything"), _("Show Everything Dialog"),
-                           "everything", "", NULL, 0);
-
-   maug = e_int_menus_menu_augmentation_add("main/1", _e_mod_menu_add, NULL, NULL, NULL);
+   maug = e_int_menus_menu_augmentation_add("main/1",
+                                           _e_mod_menu_add,
+                                           NULL, NULL, NULL);
 
    e_configure_registry_category_add("extensions", 80, _("Extensions"),
                                     NULL, "preferences-extensions");
 
-   e_configure_registry_item_add("extensions/run_everything", 40, _("Run Everything"),
-                                NULL, "system-run", evry_config_dialog);
-
+   e_configure_registry_item_add("extensions/run_everything", 40,
+                                _("Run Everything"),
+                                NULL, "system-run",
+                                evry_config_dialog);
    evry_init();
 
    e_module_delayed_set(m, 1);
@@ -152,7 +115,7 @@ EAPI int
 e_modapi_shutdown(E_Module *m __UNUSED__)
 {
    E_Config_Dialog *cfd;
-
+   
    evry_shutdown();
 
    /* remove module-supplied menu additions */
@@ -183,17 +146,15 @@ e_modapi_shutdown(E_Module *m __UNUSED__)
    e_configure_registry_item_del("extensions/run_everything");
    e_configure_registry_category_del("extensions");
 
-   if (evry_conf->plugins)       eina_list_free(evry_conf->plugins);
-   if (evry_conf->actions)       eina_list_free(evry_conf->actions);
-   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);
-
-   E_FREE(evry_conf);
+   _config_free();
+   _history_free();
 
    /* Clean EET */
    E_CONFIG_DD_FREE(conf_item_edd);
    E_CONFIG_DD_FREE(conf_edd);
+   E_CONFIG_DD_FREE(hist_item_edd);
+   E_CONFIG_DD_FREE(hist_entry_edd);
+   E_CONFIG_DD_FREE(hist_edd);
    return 1;
 }
 
@@ -201,12 +162,200 @@ EAPI int
 e_modapi_save(E_Module *m __UNUSED__)
 {
    e_config_domain_save("module.everything", conf_edd, evry_conf);
+
+   return 1;
+}
+
+void
+evry_save_history(void)
+{
+   e_config_domain_save("module.everything.history", hist_edd, evry_hist);
+}
+
+
+static void
+_config_init()
+{
+#undef T
+#undef D
+#define T Plugin_Config
+#define D conf_item_edd
+   conf_item_edd = E_CONFIG_DD_NEW("Plugin_Config", Plugin_Config);
+   E_CONFIG_VAL(D, T, name, STR);
+   E_CONFIG_VAL(D, T, trigger, 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);
+#undef T
+#undef D
+   
+#define T Config
+#define D conf_edd
+   conf_edd = E_CONFIG_DD_NEW("Config", Config);
+   E_CONFIG_VAL(D, T, version, INT);
+   E_CONFIG_VAL(D, T, width, INT);
+   E_CONFIG_VAL(D, T, height, INT);
+   E_CONFIG_VAL(D, T, rel_x, DOUBLE);
+   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_VAL(D, T, hide_input, INT);
+   E_CONFIG_VAL(D, T, hide_list, INT);
+   E_CONFIG_VAL(D, T, quick_nav, INT);
+   E_CONFIG_VAL(D, T, cmd_terminal, STR);
+   E_CONFIG_LIST(D, T, conf_subjects, conf_item_edd);
+   E_CONFIG_LIST(D, T, conf_actions, conf_item_edd);
+   E_CONFIG_LIST(D, T, conf_objects, conf_item_edd);
+   E_CONFIG_LIST(D, T, conf_views,   conf_item_edd);
+#undef T
+#undef D
+   evry_conf = e_config_domain_load("module.everything", conf_edd);
+   
+   if (evry_conf && evry_conf->version != CONFIG_VERSION)
+     {
+       _config_free();
+       evry_conf = NULL;
+     }
+   
+   if (!evry_conf)
+     {
+       evry_conf = E_NEW(Config, 1);
+       evry_conf->version = CONFIG_VERSION;
+       evry_conf->rel_x = 50.0;
+       evry_conf->rel_y = 50.0;
+       evry_conf->width = 400;
+       evry_conf->height = 350;
+       evry_conf->scroll_animate = 0;
+       evry_conf->scroll_speed = 0.08;
+       evry_conf->hide_input = 0;
+       evry_conf->hide_list = 1;
+       evry_conf->quick_nav = 1;
+       evry_conf->conf_subjects = NULL;
+       evry_conf->conf_actions = NULL;
+       evry_conf->conf_objects = NULL;
+       evry_conf->conf_views   = NULL;
+       evry_conf->cmd_terminal = eina_stringshare_add("/usr/bin/xterm");
+     }
+}
+
+
+static void
+_config_free(void)
+{
+   Plugin_Config *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);
+     }
+   E_FREE(evry_conf);
+}
+
+
+static void
+_history_init(void)
+{
+#undef T
+#undef D   
+#define T History_Item
+#define D hist_item_edd
+   hist_item_edd = E_CONFIG_DD_NEW("History_Item", History_Item);
+   E_CONFIG_VAL(D, T, plugin, STR);
+   E_CONFIG_VAL(D, T, context, STR);
+   E_CONFIG_VAL(D, T, input, STR);
+   E_CONFIG_VAL(D, T, last_used, DOUBLE);
+   E_CONFIG_VAL(D, T, count, INT);  
+#undef T
+#undef D
+
+#define T History_Entry
+#define D hist_entry_edd
+   hist_entry_edd = E_CONFIG_DD_NEW("History_Entry", History_Entry);
+   E_CONFIG_LIST(D, T, items, hist_item_edd);
+#undef T
+#undef D
+
+#define T History
+#define D hist_edd
+   hist_edd = E_CONFIG_DD_NEW("History_Item", History);
+   E_CONFIG_VAL(D, T, version, INT);
+   E_CONFIG_HASH(D, T, subjects, hist_entry_edd);
+   E_CONFIG_HASH(D, T, actions,  hist_entry_edd);
+#undef T
+#undef D
+   evry_hist = e_config_domain_load("module.everything.history", hist_edd);
+   
+   if (evry_hist && evry_hist->version != HISTORY_VERSION)
+     {
+       _history_free();
+       evry_hist = NULL;
+     }
+   
+   if (!evry_hist)
+     {
+       evry_hist = E_NEW(History, 1);
+       evry_hist->version = HISTORY_VERSION;
+       
+     }
+   if (!evry_hist->subjects)
+     evry_hist->subjects = eina_hash_string_superfast_new(NULL);
+   if (!evry_hist->actions)
+     evry_hist->actions  = eina_hash_string_superfast_new(NULL);
+   
+}
+
+static Eina_Bool
+_hist_free_cb(const Eina_Hash *hash, const void *key, void *data, void *fdata)
+{
+   History_Entry *he = data;
+   History_Item *hi;
+   
+   EINA_LIST_FREE(he->items, hi)
+     {
+       if (hi->input)
+         eina_stringshare_del(hi->input);
+       if (hi->plugin)
+         eina_stringshare_del(hi->plugin);
+       if (hi->context)
+         eina_stringshare_del(hi->context);
+       E_FREE(hi);
+     }
+
+   E_FREE(he);
    return 1;
 }
 
+static void
+_history_free(void)
+{
+   eina_hash_foreach(evry_hist->subjects, _hist_free_cb, NULL);
+   eina_hash_foreach(evry_hist->actions,  _hist_free_cb, NULL);
+
+   E_FREE(evry_hist);
+}
+
+
 /* action callback */
 static void
-_e_mod_action_exebuf_cb(E_Object *obj, const char *params)
+_e_mod_action_cb(E_Object *obj, const char *params)
 {
    E_Zone *zone = NULL;
 
@@ -317,23 +466,6 @@ evry_plugin_free(Evry_Plugin *p, int free_pointer)
    if (p->trigger)  eina_stringshare_del(p->trigger);
    if (p->icon)     eina_stringshare_del(p->icon);
 
-   if (p->config)
-     {
-       if (p->type == type_subject)
-         evry_conf->conf_subjects = eina_list_remove(evry_conf->conf_subjects, p->config);
-       else if (p->type == type_action)
-         evry_conf->conf_actions = eina_list_remove(evry_conf->conf_actions, p->config);
-       else if (p->type == type_object)
-         evry_conf->conf_objects = eina_list_remove(evry_conf->conf_objects, p->config);
-
-       if (p->config->name)
-         eina_stringshare_del(p->config->name);
-       if (p->config->trigger)
-         eina_stringshare_del(p->config->trigger);
-
-       E_FREE(p->config);
-     }
-
    if (free_pointer)
      E_FREE(p);
 }
@@ -380,7 +512,6 @@ evry_plugin_register(Evry_Plugin *p, int priority)
 {
    Eina_List *l, *confs = NULL;
    Plugin_Config *pc;
-   Eina_Bool found = 0;
 
    evry_conf->plugins = eina_list_append(evry_conf->plugins, p);
 
@@ -392,15 +523,10 @@ evry_plugin_register(Evry_Plugin *p, int priority)
      confs = evry_conf->conf_objects;
 
    EINA_LIST_FOREACH(confs, l, pc)
-     {
-       if (pc->name && p->name && !strcmp(pc->name, p->name))
-         {
-            found = 1;
-            break;
-         }
-     }
+     if (pc->name && p->name && !strcmp(pc->name, p->name))
+       break;
 
-   if (!found)
+   if (!pc)
      {
        pc = E_NEW(Plugin_Config, 1);
        pc->name = eina_stringshare_add(p->name);
@@ -414,7 +540,6 @@ evry_plugin_register(Evry_Plugin *p, int priority)
     *   pc->trigger = eina_stringshare_add(plugin->trigger); */
 
    p->config = pc;
-
    evry_conf->plugins = eina_list_sort(evry_conf->plugins,
                                       eina_list_count(evry_conf->plugins),
                                       _evry_cb_plugin_sort);
@@ -434,7 +559,6 @@ evry_plugin_register(Evry_Plugin *p, int priority)
        e_action_predef_name_set(_("Everything"), buf,
                                 "everything", p->name, NULL, 1);
      }
-   /* TODO sorting, initialization, etc */
 }
 
 void
index c03559b09deb5dd7398df8598ca041f6b1197222..f1a7fdd5217edac9145b9335211cd4e2400f5e7f 100644 (file)
@@ -7,6 +7,9 @@
 typedef struct _Config Config;
 typedef struct _Evry_Selector Evry_Selector;
 typedef struct _Tab_View Tab_View;
+typedef struct _History History;
+typedef struct _History_Entry History_Entry;
+typedef struct _History_Item History_Item;
 
 struct _Config
 {
@@ -29,17 +32,38 @@ struct _Config
   int hide_list;
 
   int quick_nav;
-
-  Eina_Hash *key_bindings;
-
-  /**/
+  
   Eina_List *plugins;
   Eina_List *actions;
   Eina_List *views;
 
-  Eina_Hash *history;
+  const char *cmd_terminal;
 };
 
+
+
+struct _History_Item
+{
+  const char *plugin;
+  const char *context;
+  const char *input;
+  double last_used;
+  int count;
+};
+
+struct _History_Entry
+{
+  Eina_List *items;
+};
+
+struct _History
+{
+  int version;
+  Eina_Hash *subjects;
+  Eina_Hash *actions;
+};
+  
+
 struct _Evry_Selector
 {
   Evas_Object *o_main;
@@ -64,6 +88,8 @@ struct _Evry_Selector
 
   Evas_Object *o_thumb;
   Eina_Bool    do_thumb;
+
+  Eina_Hash   *history;
 };
 
 struct _Tab_View
@@ -93,6 +119,7 @@ int  evry_init(void);
 int  evry_shutdown(void);
 int  evry_show(E_Zone *zone, const char *params);
 void evry_hide(void);
+void evry_save_history(void);
 
 Evry_Plugin *evry_plug_aggregator_new(Evry_Selector *selector);
 void evry_plug_aggregator_free(Evry_Plugin *plugin);
@@ -104,6 +131,7 @@ EAPI Tab_View *evry_tab_view_new(const Evry_State *s, Evas *e);
 EAPI void evry_tab_view_free(Tab_View *v);
 
 extern Config *evry_conf;
+extern History *evry_hist;
 extern Evry_Selector **selectors;
 extern Evry_Plugin *action_selector;
 #endif
index 94f158cafe8cfe1cdc35b54369e6de4b9aaba3f1..c903d1f6b18008c6214392f718adc67b18545bb6 100644 (file)
@@ -81,6 +81,8 @@ static void _evry_item_sel(Evry_State *s, Evry_Item *it);
 
 static int  _evry_cb_key_down(void *data, int type, void *event);
 static int  _evry_cb_selection_notify(void *data, int type, void *event);
+static void _evry_history_item_add(Eina_Hash *hist, Evry_State *s);
+
 
 /* local subsystem globals */
 static Evry_Window *win = NULL;
@@ -163,7 +165,7 @@ evry_show(E_Zone *zone, const char *params)
 
    if (!evry_conf->hide_input)
      edje_object_signal_emit(list->o_main, "e,state,entry_show", "e");
-
+   
    handlers = eina_list_append
      (handlers, ecore_event_handler_add
       (ECORE_EVENT_KEY_DOWN, _evry_cb_key_down, NULL));
@@ -180,6 +182,12 @@ evry_show(E_Zone *zone, const char *params)
    e_popup_show(win->popup);
    e_popup_show(list->popup);
 
+   if (!evry_conf->hide_input)
+     {
+       edje_object_part_text_set(win->o_main, "e.text.label", "Search:");
+       edje_object_part_text_set(list->o_main, "e.text.label", "Search:");
+     }
+   
    return 1;
 
  error:
@@ -393,7 +401,7 @@ evry_plugin_async_update(Evry_Plugin *p, int action)
          }
 
        /* update aggregator */
-       if (eina_list_count(s->cur_plugins) > 1)
+       if (eina_list_count(s->cur_plugins) > 0)
          {
             agg->fetch(agg, s->input);
 
@@ -447,12 +455,7 @@ _evry_list_win_new(E_Zone *zone)
        return NULL;
      }
    list_win->popup = popup;
-
-   /* evas_event_freeze(popup->evas);
-    * evas_event_feed_mouse_in(popup->evas, ecore_x_current_time_get(), NULL);
-    * evas_event_feed_mouse_move(popup->evas, -1000000, -1000000,
-    *                        ecore_x_current_time_get(), NULL); */
-
+   
    o = edje_object_add(popup->evas);
    list_win->o_main = o;
    e_theme_edje_object_set(o, "base/theme/everything",
@@ -470,9 +473,6 @@ _evry_list_win_new(E_Zone *zone)
 
    edje_object_size_min_calc(o, &mw, &mh);
 
-   printf("list  min size %d %d - %d\n", mw, mh, atoi(offset_y));
-   
-
    if (mh == 0) mh = 200;
    if (mw == 0) mw = win->popup->w / 2;
 
@@ -486,9 +486,7 @@ _evry_list_win_new(E_Zone *zone)
    evas_object_resize(o, list_win->popup->w, list_win->popup->h);
    evas_object_show(o);
    e_popup_edje_bg_object_set(popup, o);
-
-   /* evas_event_thaw(popup->evas); */
-
+   
    return list_win;
 }
 
@@ -609,12 +607,22 @@ _evry_selector_new(int type)
    evas_object_show(o);
 
    if (type == type_subject)
-     edje_object_part_swallow(win->o_main, "e.swallow.subject_selector", o);
+     {
+       sel->history = evry_hist->subjects;
+       edje_object_part_swallow(win->o_main, "e.swallow.subject_selector", o);
+     }
    else if (type == type_action)
-     edje_object_part_swallow(win->o_main, "e.swallow.action_selector", o);
+     {
+       sel->history = evry_hist->actions;
+       edje_object_part_swallow(win->o_main, "e.swallow.action_selector", o);
+     }
+   
    else if (type == type_object)
-     edje_object_part_swallow(win->o_main, "e.swallow.object_selector", o);
-
+     {
+       sel->history = evry_hist->subjects;
+       edje_object_part_swallow(win->o_main, "e.swallow.object_selector", o);
+     }
+   
    p = evry_plug_aggregator_new(sel);
 
    sel->plugins = eina_list_append(sel->plugins, p);
@@ -1052,6 +1060,8 @@ _evry_browse_item(Evry_Selector *sel)
 
    if (!plugins) return 1;
 
+   _evry_history_item_add(sel->history, s); 
+   
    if (s->view)
      {
        _evry_view_hide(s->view);
@@ -1352,6 +1362,102 @@ _evry_clear(Evry_State *s)
    return 0;
 }
 
+static void
+_evry_history_item_add(Eina_Hash *hist, Evry_State *s)
+{
+   History_Entry *he;
+   History_Item  *hi;
+   Evry_Item *it;
+   Eina_List *l;
+   const char *id;
+
+   if (!s) return;
+   
+   it = s->cur_item;
+   if (!it) return;
+
+   if (it->plugin->item_id)
+     id = it->plugin->item_id(it->plugin, it);
+   else
+     id = it->label;
+   
+   he = eina_hash_find(hist, id);
+   if (he)
+     {
+       /* found history entry */
+       EINA_LIST_FOREACH(he->items, l, hi)
+         if (hi->plugin == it->plugin->name) break;
+
+       if (hi)
+         {
+            /* found history item */
+            if (hi->input)
+              {
+                 if (!s->input || !strncmp (hi->input, s->input, strlen(s->input)))
+                   {
+                      /* s->input matches hi->input and is equal or shorter */
+                      hi->count++;
+                      hi->last_used /= 1000.0;
+                      hi->last_used += ecore_time_get();
+                   }
+                 else if (s->input)
+                   {
+                      if (!strncmp (hi->input, s->input, strlen(hi->input)))
+                        {
+                           /* s->input matches hi->input but is longer */
+                           eina_stringshare_del(hi->input);
+                           hi->input = eina_stringshare_add(s->input);
+                        }
+                      else
+                        {
+                           /* s->input is different from hi->input
+                              -> create new item */
+                           hi = NULL;
+                        }
+                   }
+              }
+            else
+              {
+                 /* remember input for item */
+                 hi->count++;
+                 hi->last_used /= 2.0;
+                 hi->last_used += ecore_time_get();
+
+                 if (s->input)
+                   hi->input = eina_stringshare_add(s->input);
+              }
+         }
+
+       if (!hi)
+         {          
+            hi = E_NEW(History_Item, 1);
+            hi->plugin = eina_stringshare_ref(it->plugin->name);
+            hi->last_used = ecore_time_get();
+            hi->count = 1;
+            if (s->input)
+              hi->input = eina_stringshare_add(s->input);
+
+            he->items = eina_list_append(he->items, hi);
+         }
+     }
+   else
+     {
+       he = E_NEW(History_Entry, 1);
+       hi = E_NEW(History_Item, 1);
+       hi->plugin = eina_stringshare_ref(it->plugin->name);
+       hi->last_used = ecore_time_get();
+       hi->count = 1;
+       if (s->input)
+         hi->input = eina_stringshare_add(s->input);
+
+       he->items = eina_list_append(he->items, hi);
+       eina_hash_add(hist, id, he);
+     }
+   evry_save_history();
+
+}
+
+
 static void
 _evry_plugin_action(Evry_Selector *sel, int finished)
 {
@@ -1361,7 +1467,8 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
    s_action  = selectors[1]->state;
    s_object = NULL;
 
-   if (!s_subject || !s_action) return;
+   if (!s_subject || !s_action)
+     return;
 
    if (update_timer)
      {
@@ -1372,7 +1479,8 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
        update_timer = NULL;
      }
 
-   if (!s_subject->cur_item || !s_action->cur_item) return;
+   if (!s_subject->cur_item || !s_action->cur_item)
+     return;
 
    if (s_action->cur_item->plugin == action_selector)
      {
@@ -1382,7 +1490,8 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
        if (selectors[2] == selector)
          it_object = selector->state->cur_item;
 
-       if (act->type_in2 && !it_object) return;
+       if (act->type_in2 && !it_object)
+         return;
 
        act->item2 = it_object;
 
@@ -1397,6 +1506,11 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
      }
    else return;
 
+   _evry_history_item_add(evry_hist->subjects, s_subject);
+   _evry_history_item_add(evry_hist->actions,  s_action);
+   _evry_history_item_add(evry_hist->subjects,  s_object);
+   
+   
    /* let subject and object plugin know that an action was performed */
    if (s_subject->plugin->action)
      s_subject->plugin->action(s_subject->plugin, s_subject->cur_item);
@@ -1591,7 +1705,7 @@ _evry_matches_update(Evry_Selector *sel, int async)
               }
          }
 
-       if (eina_list_count(s->cur_plugins) > 1)
+       if (eina_list_count(s->cur_plugins) > 0)
          {
             sel->aggregator->fetch(sel->aggregator, s->input);
             s->cur_plugins = eina_list_prepend(s->cur_plugins, sel->aggregator);
index 2703eee6ce63a2c1cc36f77945d713bcf20a0a7b..ad99a433a90608a6d7642acff73bb2c99ca04faf 100644 (file)
@@ -21,6 +21,8 @@ struct _E_Config_Dialog_Data
   int width, height;
   int scroll_animate;
 
+  char *cmd_terminal;
+
   Evas_Object *l_subject;
   Evas_Object *l_action;
   Evas_Object *l_object;
@@ -73,6 +75,9 @@ _fill_data(E_Config_Dialog_Data *cfdata)
        cfdata->p_action = eina_list_append(cfdata->p_action, p);
      else if (p->type == type_object)
        cfdata->p_object = eina_list_append(cfdata->p_object, p);
+
+   if (evry_conf->cmd_terminal)
+     cfdata->cmd_terminal = strdup(evry_conf->cmd_terminal);   
 }
 
 static void *
@@ -91,7 +96,7 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
    if (cfdata->p_subject) eina_list_free(cfdata->p_subject);
    if (cfdata->p_action)  eina_list_free(cfdata->p_action);
    if (cfdata->p_object)  eina_list_free(cfdata->p_object);
-
+   E_FREE(cfdata->cmd_terminal);
    E_FREE(cfdata);
 }
 
@@ -116,6 +121,10 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
                                       eina_list_count(evry_conf->plugins),
                                       _evry_cb_plugin_sort);
 
+   if (evry_conf->cmd_terminal)
+     eina_stringshare_del(evry_conf->cmd_terminal);
+   evry_conf->cmd_terminal = eina_stringshare_add(cfdata->cmd_terminal);
+   
    e_config_save_queue();
    return 1;
 }
@@ -209,9 +218,15 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial
    ob = e_widget_check_add(evas, _("Quick Navigation (ALT + h,j,k,l,n,p,m,i)"),
                           &(cfdata->quick_nav));
    e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o, of, 1, 1, 0.5);
 
+   ob = e_widget_label_add(evas, _("Terminal Command"));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_entry_add(evas, &(cfdata->cmd_terminal), NULL, NULL, NULL);
+   e_widget_framelist_object_append(of, ob);
    
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+
    /* ob = e_widget_label_add(evas, _("Popup Width"));
     * e_widget_framelist_object_append(of, ob);
     * ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"),
@@ -235,10 +250,10 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial
 
 
    e_widget_toolbook_page_append(otb, NULL, _("General Settings"),
-                                o, 0, 0, 0, 0, 0.5, 0.0);
+                                o, 1, 0, 1, 0, 0.5, 0.0);
 
    ob = e_widget_list_add(evas, 1, 1);
-   of = e_widget_framelist_add(evas, _("Subject Plugins"), 0);
+   of = e_widget_framelist_add(evas, _("Active Plugins"), 0);
    o = e_widget_ilist_add(evas, 24, 24, NULL);
    cfdata->l_subject = o;
    /* e_widget_on_change_hook_set(ol, _avail_list_cb_change, cfdata); */
@@ -255,8 +270,12 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial
                           cfdata->p_subject);
    e_widget_framelist_object_append(of, o);
    e_widget_list_object_append(ob, of, 1, 1, 0.5);
+   e_widget_toolbook_page_append(otb, NULL, _("Subject Plugins"),
+                                of, 1, 0, 1, 0, 0.5, 0.0);
+
 
-   of = e_widget_framelist_add(evas, _("Action Plugins"), 0);
+   ob = e_widget_list_add(evas, 1, 1);
+   of = e_widget_framelist_add(evas, _("Active Plugins"), 0);
    o = e_widget_ilist_add(evas, 24, 24, NULL);
    cfdata->l_action = o;
    _fill_list(cfdata->p_action, o, 0);
@@ -272,8 +291,11 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial
                           cfdata->p_action);
    e_widget_framelist_object_append(of, o);
    e_widget_list_object_append(ob, of, 1, 1, 0.5);
+   e_widget_toolbook_page_append(otb, NULL, _("Action Plugins"),
+                                of, 1, 0, 1, 0, 0.5, 0.0);
 
-   of = e_widget_framelist_add(evas, _("Object Plugins"), 0);
+   ob = e_widget_list_add(evas, 1, 1);
+   of = e_widget_framelist_add(evas, _("Active Plugins"), 0);
    o = e_widget_ilist_add(evas, 24, 24, NULL);
    cfdata->l_object = o;
    _fill_list(cfdata->p_object, o, 0);
@@ -290,9 +312,10 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial
    e_widget_framelist_object_append(of, o);
    e_widget_list_object_append(ob, of, 1, 1, 0.5);
 
-   e_widget_toolbook_page_append(otb, NULL, _("Plugins"),
-                                ob, 0, 0, 0, 0, 0.5, 0.0);
-   e_widget_toolbook_page_show(otb, 1);
+   e_widget_toolbook_page_append(otb, NULL, _("Object Plugins"),
+                                ob, 1, 0, 1, 0, 0.5, 0.0);
+
+   e_widget_toolbook_page_show(otb, 0);
 
    return otb;
 }
index bb6065e69a505fc4d53bc215b49031399d3cedcf..a3b22642b60acd6a89d28c99fd92c500744b7915 100644 (file)
@@ -15,6 +15,13 @@ _cb_sort_recent(const void *data1, const void *data2)
    const Evry_Item *it1 = data1;
    const Evry_Item *it2 = data2;
 
+   if (it1->usage && it2->usage)
+     return (it2->usage - it1->usage);
+   if (it1->usage && !it2->usage)
+     return -1;
+   if (it2->usage && !it1->usage)
+     return 1;
+   
    if ((it1->plugin == action_selector) ||
        (it2->plugin == action_selector))
      {
@@ -26,7 +33,7 @@ _cb_sort_recent(const void *data1, const void *data2)
                  - it2->plugin->config->priority);
        else
          return (it1->plugin->config->priority -
-                 (it1->plugin->config->priority + it2->priority));
+                 (it2->plugin->config->priority + it2->priority));
      }
      
   return -1;
@@ -38,6 +45,13 @@ _cb_sort(const void *data1, const void *data2)
    const Evry_Item *it1 = data1;
    const Evry_Item *it2 = data2;
 
+   if (it1->usage && it2->usage)
+     return (it2->usage - it1->usage);
+   if (it1->usage && !it2->usage)
+     return -1;
+   if (it2->usage && !it1->usage)
+     return 1;
+
    if ((it1->plugin == action_selector) ||
        (it2->plugin == action_selector))
      {
@@ -87,6 +101,9 @@ _fetch(Evry_Plugin *plugin, const char *input)
    Evry_Item *it;
    int cnt = 0;
    Eina_List *items = NULL;
+   History_Entry *he;
+   History_Item *hi;
+   const char *id;
 
    s = p->selector->state;
 
@@ -115,11 +132,11 @@ _fetch(Evry_Plugin *plugin, const char *input)
          }
      }
 
-   if (!input[0] || eina_list_count(items) < 20)
+   if (!input[0] || eina_list_count(items) < 50)
      {
        EINA_LIST_FOREACH(s->cur_plugins, l, pp)
          {
-            for (cnt = 0, ll = pp->items; ll && cnt < 15; ll = ll->next, cnt++)
+            for (cnt = 0, ll = pp->items; ll && cnt < 50; ll = ll->next, cnt++)
               {
                  if (!items || !eina_list_data_find_list(items, ll->data))
                    {
@@ -134,7 +151,34 @@ _fetch(Evry_Plugin *plugin, const char *input)
      }
 
    if (items) eina_list_free(items);
+   
+   EINA_LIST_FOREACH(EVRY_PLUGIN(p)->items, l, it)
+     {
+       cnt = 1;
+       if (it->usage) continue;
+
+       if (it->plugin->item_id)
+         id = it->plugin->item_id(it->plugin, it);
+       else
+         id = it->label;
 
+       if ((he = eina_hash_find(p->selector->history, id)))
+         {
+            EINA_LIST_FOREACH(he->items, ll, hi)
+              {
+                 if ((hi->plugin == it->plugin->name) &&
+                     ((!input[0]) || (!input[0] && !hi->input) || 
+                      (!strncmp(input, hi->input, strlen(input))) ||
+                      (!strncmp(input, hi->input, strlen(hi->input)))))
+                   {
+                      cnt++;
+                      it->usage += hi->last_used;
+                   }
+              }
+            it->usage /= (double)cnt;
+         }
+     }
+   
    if (input[0])
      {
        EVRY_PLUGIN_ITEMS_SORT(p, _cb_sort);
index 2c4c16c62a3a585b82c5ac019042e5489f7f656c..183882cd4fdeb452f09f44929e7f625d4c3dd659 100644 (file)
@@ -104,9 +104,13 @@ _tabs_update(Tab_View *v)
        evas_object_show(o);
        e_box_pack_end(v->o_tabs, o);
 
-       e_box_pack_options_set(o, 1, 1, 1, 0, 0.0, 0.5,
-                              (tab->mw < tab->cw ? tab->cw : tab->mw), 10,
-                              (w ? w/3 : 150), 9999);
+       if (eina_list_count(s->cur_plugins) == 2)
+         e_box_pack_options_set(o, 1, 1, 0, 0, 0.0, 0.5,
+                                120, 10, 120, 9999);
+       else
+         e_box_pack_options_set(o, 1, 1, 1, 0, 0.0, 0.5,
+                                (tab->mw < tab->cw ? tab->cw : tab->mw), 10,
+                                (w ? w/3 : 120), 9999);
        if (s->plugin == p)
          edje_object_signal_emit(o, "e,state,selected", "e");
        else
index d967dd446a6c601f7b85bd2a8bf06e69c50f8efb..d0187160c82662f36a35f784debdc9f37ae7235c 100644 (file)
@@ -11,6 +11,7 @@ struct _Plugin
   Eina_List *apps_mime;
   Eina_List *apps_all;
   const Evry_Item *candidate;
+  Eina_Hash *added;
 };
 
 /* taken from exebuf module */
@@ -84,12 +85,19 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item)
        p->apps_mime = eina_list_prepend(p->apps_mime, desktop);
      }
 
+   p->added = added;
+   if (!p->added)
+     p->added = eina_hash_string_small_new(_hash_free);
+   added = p->added;
+   
    return plugin;
 }
 
 static Evry_Plugin *
 _begin(Evry_Plugin *plugin, const Evry_Item *item)
 {
+   PLUGIN(p, plugin);
+   
    /* taken from exebuf module */
    char *path, *pp, *last;
    E_Exe_List *el;
@@ -128,7 +136,7 @@ _begin(Evry_Plugin *plugin, const Evry_Item *item)
 
    exe_scan_idler = ecore_idler_add(_scan_idler, NULL);
 
-   added = eina_hash_string_small_new(_hash_free);
+   p->added = eina_hash_string_small_new(_hash_free);
 
    return plugin;
 }
@@ -153,7 +161,12 @@ _cleanup(Evry_Plugin *plugin)
    Efreet_Desktop *desktop;
    char *str;
 
+   /* TODO popup end func !!!
+      - cleanup hash for open-with plugin */
    eina_hash_free(added);
+   added = NULL;
+   
+   eina_hash_free(p->added);
 
    EVRY_PLUGIN_ITEMS_CLEAR(p);
 
@@ -209,7 +222,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, char *file, int match)
        char buf[1024];
        char *tmp;
 
-       if ((app = eina_hash_find(added, file)))
+       if ((app = eina_hash_find(p->added, file)))
          {
             if (!eina_list_data_find_list(EVRY_PLUGIN(p)->items, app))
               {
@@ -245,7 +258,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, char *file, int match)
 
    if (!exe) return 0;
 
-   if ((app = eina_hash_find(added, exe)) &&
+   if ((app = eina_hash_find(p->added, exe)) &&
        (!desktop || (desktop == app->desktop)))
      {
        if (!eina_list_data_find_list(EVRY_PLUGIN(p)->items, app))
@@ -270,7 +283,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, char *file, int match)
    app->desktop = desktop;
    if (file) app->file = eina_stringshare_add(file);
 
-   eina_hash_add(added, exe, app);
+   eina_hash_add(p->added, exe, app);
 
    if (desktop)
      {
@@ -279,13 +292,13 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, char *file, int match)
        if (tmp && strcmp(exe, tmp))
          {
             evry_item_ref(EVRY_ITEM(app));
-            eina_hash_add(added, tmp, app);
+            eina_hash_add(p->added, tmp, app);
          }
      }
    if (file && strcmp(exe, file))
      {
        evry_item_ref(EVRY_ITEM(app));
-       eina_hash_add(added, file, app);
+       eina_hash_add(p->added, file, app);
      }
 
    EVRY_ITEM(app)->fuzzy_match = match;
@@ -454,7 +467,8 @@ _fetch(Evry_Plugin *plugin, const char *input)
 
    if (!plugin->items) return 0;
 
-   EVRY_PLUGIN_ITEMS_SORT(plugin, _cb_sort);
+   if (plugin->type != type_action || input)
+     EVRY_PLUGIN_ITEMS_SORT(plugin, _cb_sort);
 
    EINA_LIST_FOREACH(plugin->items, l, it)
      it->priority = prio++;
index 0d83a349f6c59785709aed5877d591b1131ed478..3c5b8a9029fb608cf91b086d4da8d948dc1cd3dd 100644 (file)
@@ -235,12 +235,27 @@ _item_icon_get(Evry_Plugin *p __UNUSED__, const Evry_Item *it, Evas *e)
    return o;
 }
 
+static const char *
+_item_id(Evry_Plugin *p, const Evry_Item *it)
+{
+   E_Border *bd = it->data;
+   if (bd->client.icccm.class)
+     return (bd->client.icccm.class);
+   if (bd->client.icccm.name)
+     return (bd->client.icccm.name);
+   else
+     return NULL;
+}
+
+
 static Eina_Bool
 _init(void)
 {
    plugin = evry_plugin_new(NULL, "Windows", type_subject, NULL, "BORDER", 0, NULL, NULL,
                       _begin, _cleanup, _fetch, NULL, _item_icon_get, NULL, NULL);
 
+   plugin->item_id = &_item_id;
+   
    evry_plugin_register(plugin, 2);
 
    return EINA_TRUE;
index a36a3de769538a51dd602a2b36b4b7861087adfa..b7957c5f74f1283d9f07a780a3f4bdb1dac495f4 100644 (file)
@@ -448,6 +448,14 @@ _open_term_action(Evry_Action *act)
    return ret;
 }
 
+static const char *
+_item_id(Evry_Plugin *p, const Evry_Item *item)
+{
+   ITEM_FILE(file, item);
+   
+   return file->uri;
+}
+
 static Eina_Bool
 _init(void)
 {
@@ -459,6 +467,9 @@ _init(void)
                        _begin, _cleanup, _fetch, NULL, _icon_get,
                        NULL, NULL);
 
+   p1->item_id = &_item_id;
+   p1->item_id = &_item_id;
+   
    evry_plugin_register(p1, 3);
    evry_plugin_register(p2, 1);
 
index fa35ca683a9b7bfcac507e023b0b284ee22a84bc..99aee8dd6b466ea8bfbc35d5d3004a5fa09809da 100644 (file)
@@ -1,5 +1,4 @@
-#include "Evry.h"
-
+#include "e_mod_main.h"
 
 /* TODO check if trackerd is running and version */
 
@@ -21,7 +20,7 @@ struct _Plugin
 static E_DBus_Connection *conn = NULL;
 static Eina_List *plugins = NULL;
 static int _prio = 5;
-
+static int active = 0;
 
 static Evry_Plugin *
 _begin(Evry_Plugin *plugin, const Evry_Item *it)
@@ -170,6 +169,7 @@ _dbus_cb_reply(void *data, DBusMessage *msg, DBusError *error)
    if (dbus_error_is_set(error))
      {
        _cleanup(EVRY_PLUGIN(p));
+       active = 0;
        printf("Error: %s - %s\n", error->name, error->message);
        return;
      }
@@ -253,6 +253,47 @@ _dbus_cb_reply(void *data, DBusMessage *msg, DBusError *error)
    evry_plugin_async_update(EVRY_PLUGIN(p), EVRY_ASYNC_UPDATE_ADD);
 }
 
+static void
+_dbus_cb_version(void *data, DBusMessage *msg, DBusError *error)
+{
+   DBusMessageIter iter;
+   int version = 0;
+
+   if (dbus_error_is_set(error))
+     {
+       printf("Error: %s - %s\n", error->name, error->message);
+       return;
+     }
+
+   dbus_message_iter_init(msg, &iter);
+
+   if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_INT32)
+     dbus_message_iter_get_basic(&iter, &version);
+
+   printf("tracker version %d\n", version);
+   
+   if (version < 690)
+     active = 0;
+   else
+     active = 2;
+}
+
+static void
+_get_version(void)
+{
+   DBusMessage *msg;
+
+   msg = dbus_message_new_method_call("org.freedesktop.Tracker",
+                                     "/org/freedesktop/Tracker",
+                                     "org.freedesktop.Tracker",
+                                     "GetVersion");
+
+   e_dbus_message_send(conn, msg, _dbus_cb_version, -1, NULL);
+   dbus_message_unref(msg);
+
+   active = 1;
+}
+
 static int
 _fetch(Evry_Plugin *plugin, const char *input)
 {
@@ -305,6 +346,13 @@ _fetch(Evry_Plugin *plugin, const char *input)
        return 0;
      }
 
+
+   if (!active)
+     _get_version();
+
+   if (active != 2)
+     return 0;
+   
    p->active++;
 
    msg = dbus_message_new_method_call("org.freedesktop.Tracker",
@@ -377,70 +425,7 @@ _plugin_new(const char *name, int type, char *service, int max_hits, int begin)
    evry_plugin_register(EVRY_PLUGIN(p), _prio++);
 }
 
-static void
-_dbus_cb_version(void *data, DBusMessage *msg, DBusError *error)
-{
-   DBusMessageIter iter;
-   Plugin *p;
-   int version = 0;
-
-   if (dbus_error_is_set(error))
-     {
-       printf("Error: %s - %s\n", error->name, error->message);
-       e_dbus_connection_close(conn);
-
-       EINA_LIST_FREE(plugins, p)
-         {
-            if (p->condition[0]) free(p->condition);
-
-            EVRY_PLUGIN_FREE(p);
-         }
-       return;
-     }
-
-   dbus_message_iter_init(msg, &iter);
-
-   if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_INT32)
-     dbus_message_iter_get_basic(&iter, &version);
-
-   printf("tracker version %d\n", version);
-
-   if (version < 690)
-     {
-       e_dbus_connection_close(conn);
-
-       EINA_LIST_FREE(plugins, p)
-         {
-            if (p->condition[0]) free(p->condition);
-
-            EVRY_PLUGIN_FREE(p);
-         }
-     }
-}
-
-
-static void
-_get_version(void)
-{
-   DBusMessage *msg;
-
-   msg = dbus_message_new_method_call("org.freedesktop.Tracker",
-                                     "/org/freedesktop/Tracker",
-                                     "org.freedesktop.Tracker",
-                                     "GetVersion");
-
-   e_dbus_message_send(conn, msg, _dbus_cb_version, -1, NULL);
-   dbus_message_unref(msg);
-}
-
 
-/* static Evry_Plugin *
- * _begin_subject(Evry_Plugin *plugin, const Evry_Item *it)
- * {
- *    if (!conn) return NULL;
- *
- *    return plugin;
- * } */
 
 
 static Eina_Bool