Enlightenment CVS committal

Author  : englebass
Project : e17
Module  : libs/efreet

Dir     : e17/libs/efreet/src/lib


Modified Files:
        efreet_utils.c efreet_utils.h 


Log Message:
Search in desktop cache.

===================================================================
RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_utils.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- efreet_utils.c      25 Mar 2007 13:10:09 -0000      1.9
+++ efreet_utils.c      25 Mar 2007 13:43:52 -0000      1.10
@@ -4,6 +4,7 @@
 
 typedef struct _Efreet_Cache_Fill     Efreet_Cache_Fill;
 typedef struct _Efreet_Cache_Fill_Dir Efreet_Cache_Fill_Dir;
+typedef struct _Efreet_Cache_Search   Efreet_Cache_Search;
 
 struct _Efreet_Cache_Fill
 {
@@ -18,8 +19,16 @@
     char *file_id;
 };
 
+struct _Efreet_Cache_Search
+{
+    Efreet_Desktop *desktop;
+    const char     *what;
+};
+
 static int  _efreet_util_cache_fill(void *data);
 static void _efreet_util_cache_dir_free(void *data);
+static void _efreet_util_cache_search_name(void *value, void *data);
+static void _efreet_util_cache_search_generic_name(void *value, void *data);
 
 static Ecore_Hash *desktop_by_file_id = NULL;
 static Ecore_Hash *desktop_by_exec = NULL;
@@ -205,7 +214,31 @@
      * timeconsuming.*/
 
     if (desktop) ecore_hash_set(desktop_by_exec, (void 
*)ecore_string_instance(exec), desktop);
-    return NULL;
+    return desktop;
+}
+
+Efreet_Desktop *
+efreet_util_desktop_name_find(const char *name)
+{
+    Efreet_Cache_Search search;
+
+    if (!name) return NULL;
+    search.desktop = NULL;
+    search.what = name;
+    ecore_hash_for_each_node(desktop_by_exec, _efreet_util_cache_search_name, 
&search);
+    return search.desktop;
+}
+
+Efreet_Desktop *
+efreet_util_desktop_generic_name_find(const char *generic_name)
+{
+    Efreet_Cache_Search search;
+
+    if (!generic_name) return NULL;
+    search.desktop = NULL;
+    search.what = generic_name;
+    ecore_hash_for_each_node(desktop_by_exec, 
_efreet_util_cache_search_generic_name, &search);
+    return search.desktop;
 }
 
 #if 0
@@ -329,4 +362,34 @@
     IF_FREE(dir->path);
     IF_FREE(dir->file_id);
     free(dir);
+}
+
+static void
+_efreet_util_cache_search_name(void *value, void *data)
+{
+    Ecore_Hash_Node     *node;
+    Efreet_Cache_Search *search;
+    Efreet_Desktop      *desktop;
+
+    node = value;
+    search = data;
+
+    desktop = node->value;
+    if (!desktop->name) return;
+    if (!strcmp(desktop->name, search->what)) search->desktop = desktop;
+}
+
+static void
+_efreet_util_cache_search_generic_name(void *value, void *data)
+{
+    Ecore_Hash_Node     *node;
+    Efreet_Cache_Search *search;
+    Efreet_Desktop      *desktop;
+
+    node = value;
+    search = data;
+
+    desktop = node->value;
+    if (!desktop->generic_name) return;
+    if (!strcmp(desktop->generic_name, search->what)) search->desktop = 
desktop;
 }
===================================================================
RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_utils.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- efreet_utils.h      25 Mar 2007 13:10:09 -0000      1.7
+++ efreet_utils.h      25 Mar 2007 13:43:52 -0000      1.8
@@ -4,7 +4,11 @@
 
 char           *efreet_util_path_in_default(const char *section, const char 
*path);
 const char     *efreet_util_path_to_file_id(const char *path);
+
 Efreet_Desktop *efreet_util_desktop_file_id_find(const char *file_id);
 Efreet_Desktop *efreet_util_desktop_exec_find(const char *exec);
+Efreet_Desktop *efreet_util_desktop_name_find(const char *name);
+Efreet_Desktop *efreet_util_desktop_generic_name_find(const char 
*generic_name);
+
 
 #endif



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to