Enlightenment CVS committal
Author : lordchaos
Project : e17
Module : proto
Dir : e17/proto/entropy/src/plugins
Modified Files:
etk_list_viewer.c filesystem.c
Log Message:
* Rearchitect directory-list system
===================================================================
RCS file:
/cvsroot/enlightenment/e17/proto/entropy/src/plugins/etk_list_viewer.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- etk_list_viewer.c 11 Mar 2006 07:11:34 -0000 1.41
+++ etk_list_viewer.c 11 Mar 2006 09:18:51 -0000 1.42
@@ -601,7 +601,10 @@
remove_ref = gui_object_destroy_and_free(comp, viewer->gui_hash);
+ printf("Clearing tree..\n");
+ etk_tree_freeze(ETK_TREE(viewer->tree));
etk_tree_clear(ETK_TREE(viewer->tree));
+ etk_tree_thaw(ETK_TREE(viewer->tree));
ecore_list_goto_first (el);
while ((file = ecore_list_next (el))) {
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- filesystem.c 11 Mar 2006 07:11:34 -0000 1.54
+++ filesystem.c 11 Mar 2006 09:18:51 -0000 1.55
@@ -203,8 +203,9 @@
}
/*Do some freeing */
- entropy_free (file_stat);
entropy_free (file_stat->stat_obj);
+ entropy_free (file_stat);
+
ecore_hash_remove (stat_request_hash, md5);
entropy_free (folder);
entropy_free (md5);
@@ -226,135 +227,106 @@
char *folder;
char *pos;
- //printf("Received a directory listing..\nFiles:\n\n");
- //printf("Original uri: %s\n",
data->resp_command.file_command.files[0]->path);
-
- if (!data->file_list.list) {
- //printf("No directory received - invalid uri?\n");
- ecore_list_destroy (file_list);
- return;
- }
- else {
- //printf("File list at %p\n", data->file_list.list);
- }
-
- ecore_list_goto_first (data->file_list.list);
- while ((ref = ecore_list_next (data->file_list.list))) {
- /*printf("(%s) Received file type for file: %d\n", ref->path,
ref->file_type); */
-
- folder = strdup ((char *) ref->path);
- pos = rindex (folder, '/');
- *pos = '\0';
-
- filename = strdup (pos + 1);
-
- /*If we are the root dir (i.e. we only have
- * one "/", replace it (so we can use it below),
- * and assume this filename has length (BAD). */
- if (!strlen (folder)) {
- *pos = '/';
- *(pos + 1) = '\0';
- }
-
- /*printf("Calling folder is '%s'\n", folder); */
-
- /*If the calling request is currently NULL, we must go to the hash to
retrieve that caller */
- if (!calling_request) {
-
- printf("Looking for calling request with folder '%s'\n", folder);
- calling_request = ecore_hash_get (evfs_dir_requests, folder);
- printf("Received a file from the hash, path is '%s'\n",
calling_request->file->path);
-
- /*Append the original request as the first item in the list */
- /*It's not nice having to do this, but we're kind of stuck. Should
be ok as long
- * as it gets documented*/
- ecore_list_append (file_list, calling_request);
-
- }
-
- //printf("Folder name: '%s', filename '%s'\n", folder, pos+1);
-
- /*Look for an existing file we have cached */
- char *md5 = md5_entropy_path_file (ref->plugin_uri, folder, filename);
-
- /*Now create, or grab, a file */
- if (!(listener = entropy_core_file_cache_retrieve (md5))) {
-
- file = entropy_generic_file_new ();
- /*For now, just make an entropy_generic_file for this object */
- strncpy (file->path, folder, 255);
- strncpy (file->filename, filename, strlen (filename) + 1);
- file->md5 = strdup (md5);
-
- /*Set the file type, if evfs provided it */
- if (ref->file_type == EVFS_FILE_DIRECTORY) {
- file->filetype = FILE_FOLDER;
- strcpy (file->mime_type, "file/folder");
-
- //printf("Marked this file as a directory\n");
- }
- else {
- //printf("Didn't mark this file, type %d\n",ref->file_type);
- file->filetype = FILE_STANDARD;
- bzero (file->mime_type, MIME_LENGTH);
- }
-
- if (calling_request
- && (calling_request->drill_down
- || calling_request->set_parent)) {
- /*printf("Calling request had a parent...\n");
- printf("File ('%s') parent's name is '%s'\n",
- file->filename, calling_request->reparent_file->filename); */
-
- file->parent = calling_request->reparent_file;
-
- /*We are referencing the parent, so - we need to tell the core that
we *need* this
- * file - i.e. don't clean it up*/
- entropy_core_file_cache_add_reference (calling_request->
- reparent_file->md5);
- }
+ printf("Looking for callers for dir list for: '%s'\n",
data->resp_command.file_command.files[0]->path);
+ calling_request = ecore_hash_get (evfs_dir_requests,
data->resp_command.file_command.files[0]->path);
+ if (calling_request) {
+ /*Remove from directory requesters*/
+ ecore_hash_remove(evfs_dir_requests,
data->resp_command.file_command.files[0]->path);
+
+
+ ecore_list_append(file_list, calling_request);
+
+ folder = data->resp_command.file_command.files[0]->path;
- /*Mark the file's uri FIXME do this properly */
- strcpy (file->uri_base, ref->plugin_uri);
- /*printf("Assigned plugin URI: '%s'\n", ref->plugin_uri); */
+ if (data->file_list.list) {
+ ecore_list_goto_first (data->file_list.list);
+ while ((ref = ecore_list_next (data->file_list.list))) {
+ /*printf("(%s) Received file type for file: %d\n",
ref->path, ref->file_type); */
+ pos = rindex (ref->path, '/');
+ filename = strdup (pos + 1);
- /*Register a new listener for this file */
- listener = entropy_malloc (sizeof (entropy_file_listener));
- listener->file = file;
- listener->count = 0;
- entropy_core_file_cache_add (md5, listener);
+ /*Look for an existing file we have cached */
+ char *md5 = md5_entropy_path_file (ref->plugin_uri,
folder, filename);
+ /*Now create, or grab, a file */
+ if (!(listener = entropy_core_file_cache_retrieve
(md5))) {
+
+ file = entropy_generic_file_new ();
+ /*For now, just make an entropy_generic_file for this
object */
+ strncpy (file->path, folder, 255);
+ strncpy (file->filename, filename, strlen (filename)
+ 1);
+ file->md5 = strdup (md5);
+
+ /*Set the file type, if evfs provided it */
+ if (ref->file_type == EVFS_FILE_DIRECTORY) {
+ file->filetype = FILE_FOLDER;
+ strcpy (file->mime_type, "file/folder");
+
+ //printf("Marked this file as a directory\n");
+ }
+ else {
+ //printf("Didn't mark this file, type
%d\n",ref->file_type);
+ file->filetype = FILE_STANDARD;
+ bzero (file->mime_type, MIME_LENGTH);
+ }
+
+ if (calling_request
+ && (calling_request->drill_down
+ || calling_request->set_parent)) {
+ /*printf("Calling request had a parent...\n");
+ printf("File ('%s') parent's name is '%s'\n",
+ file->filename,
calling_request->reparent_file->filename); */
+
+ file->parent = calling_request->reparent_file;
+
+ /*We are referencing the parent, so - we need to
tell the core that we *need* this
+ * file - i.e. don't clean it up*/
+ entropy_core_file_cache_add_reference
(calling_request->
+ reparent_file->md5);
+ }
+
+ /*Mark the file's uri FIXME do this properly */
+ strcpy (file->uri_base, ref->plugin_uri);
+ /*printf("Assigned plugin URI: '%s'\n",
ref->plugin_uri); */
+
+ /*Register a new listener for this file */
+ listener = entropy_malloc (sizeof
(entropy_file_listener));
+ listener->file = file;
+ listener->count = 0;
+ entropy_core_file_cache_add (md5, listener);
+ }
+ else {
+ file = listener->file;
+ entropy_free (md5); /*We don't need this one, we're
returning an old ref */
+ }
+
+ free (filename);
+
+ /*Add this file to our list */
+ ecore_list_append (file_list, file);
+ }
+ }
+
+ /*Create a GUI event to send to watchers */
+ gui_event = entropy_malloc (sizeof (entropy_gui_event));
+ gui_event->event_type =
+ entropy_core_gui_event_get
+ (ENTROPY_GUI_EVENT_FOLDER_CHANGE_CONTENTS_EXTERNAL);
+ gui_event->data = file_list;
+
+ if (calling_request) {
+ entropy_core_layout_notify_event
(calling_request->requester, gui_event,
+ ENTROPY_EVENT_LOCAL);
+ } else {
+ printf(" [*] Could not get calling request for dir list
- Abort!\n");
+ }
+
+ free(calling_request);
+ } else {
+ ecore_list_destroy (file_list);
}
- else {
- file = listener->file;
- entropy_free (md5); /*We don't need this one, we're returning an
old ref */
- }
-
- free (folder);
- free (filename);
-
-
- /*Add this file to our list */
- ecore_list_append (file_list, file);
- }
-
-
- /*Create a GUI event to send to watchers */
- gui_event = entropy_malloc (sizeof (entropy_gui_event));
- gui_event->event_type =
- entropy_core_gui_event_get
- (ENTROPY_GUI_EVENT_FOLDER_CHANGE_CONTENTS_EXTERNAL);
- gui_event->data = file_list;
-
- if (calling_request) {
- entropy_core_layout_notify_event (calling_request->requester,
gui_event,
- ENTROPY_EVENT_LOCAL);
- } else {
- printf(" [*] Could not get calling request for dir list -
Abort!\n");
- }
-
}
break;
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs