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