Enlightenment CVS committal

Author  : lordchaos
Project : e17
Module  : proto

Dir     : e17/proto/entropy/src/dialogs


Modified Files:
        etk_file_cache_debug_dialog.c 


Log Message:
* Hook up the file cache dialog.  Also supports sorting by # of listeners.  
More details to come
* Fix logic flaw in event cycle for file listing and file-decaching (success #1 
for file cache debug dialog)

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/proto/entropy/src/dialogs/etk_file_cache_debug_dialog.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- etk_file_cache_debug_dialog.c       6 Mar 2006 08:26:13 -0000       1.2
+++ etk_file_cache_debug_dialog.c       6 Mar 2006 10:41:40 -0000       1.3
@@ -1,18 +1,89 @@
 #include "entropy.h"
 #include <Etk.h>
 
+static int _etk_file_cache_dialog_running = 0;
+void etk_file_cache_dialog_refresh(Etk_Widget* tree);
+
+static int _entropy_etk_file_cache_dialog_listener_compare_cb
+(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, 
void *data)
+{
+       int val1, val2;
+
+   etk_tree_row_fields_get(row1, col, &val1, NULL);
+   etk_tree_row_fields_get(row2, col, &val2, NULL);
+
+   if (val1 < val2)
+      return 1;
+   else if (val1 > val2)
+      return -1;
+   else
+      return 0;
+       
+}
+
+static Etk_Bool
+_etk_file_cache_debug_dialog_delete_cb (Etk_Object * object, void *data)
+{
+       _etk_file_cache_dialog_running = 0;
+       etk_object_destroy(object);
+
+       return ETK_TRUE;
+}
+
+void _etk_file_cache_dialog_refresh_cb(Etk_Object* object, void* data)
+{
+       etk_file_cache_dialog_refresh(ETK_WIDGET(data));
+}
+
+void etk_file_cache_dialog_refresh(Etk_Widget* tree)
+{
+       Etk_Tree_Col* col1;
+       Etk_Tree_Col* col2;
+
+       char* key;
+       char buffer[PATH_MAX];
+       Ecore_List* keys;       
+       
+       etk_tree_clear(ETK_TREE(tree));
+       
+       /*Populate the tree*/
+       col1 = etk_tree_nth_col_get(ETK_TREE(tree), 0);
+       col2 = etk_tree_nth_col_get(ETK_TREE(tree), 1);
+
+       etk_tree_freeze(ETK_TREE(tree));
+       
+       keys = entropy_core_file_cache_keys_retrieve();
+       while ( (key = ecore_list_remove_first(keys))) {
+                 entropy_file_listener* listen = 
entropy_core_file_cache_retrieve(key);
+                 
+                 if (listen) {
+                         snprintf(buffer, PATH_MAX, "%s/%s", 
listen->file->path, listen->file->filename);
+               
+                         etk_tree_append(ETK_TREE(tree), 
+                         col1, listen->count, 
+                         col2,   buffer,
+                         NULL);
+                 }
+       
+       }
+       ecore_list_destroy(keys);
+
+       etk_tree_thaw(ETK_TREE(tree));
+}
+
 void etk_file_cache_dialog_create()
 {
        Etk_Widget* window = NULL;
        Etk_Widget* tree = NULL;
        Etk_Tree_Col* tree_col;
+       Etk_Widget* button;
+       Etk_Widget* vbox;
 
-       Etk_Tree_Col* col1;
-       Etk_Tree_Col* col2;
 
-       char* key;
-       entropy_mime_action* action;
-       Ecore_List* keys;
+       if (_etk_file_cache_dialog_running)
+               return;
+
+       _etk_file_cache_dialog_running = 1;
 
        window = etk_window_new();
 
@@ -21,23 +92,37 @@
 
        etk_widget_size_request_set(ETK_WIDGET(window), 450, 500);
 
+       vbox = etk_vbox_new(ETK_FALSE,0);
+       etk_container_add(ETK_CONTAINER(window), vbox);
+
 
        tree = etk_tree_new();
+       etk_box_pack_start(ETK_BOX(vbox), tree, ETK_TRUE, ETK_TRUE, 0);
+       
        etk_tree_mode_set(ETK_TREE(tree), ETK_TREE_MODE_LIST);
-       tree_col = etk_tree_col_new(ETK_TREE(tree), _("File Type"), 
-                 etk_tree_model_text_new(ETK_TREE(tree)), 125);
+       tree_col = etk_tree_col_new(ETK_TREE(tree), _("Listeners"), 
+                 etk_tree_model_int_new(ETK_TREE(tree)), 125);
+
+       etk_tree_col_sort_func_set(tree_col, 
_entropy_etk_file_cache_dialog_listener_compare_cb, ETK_TRUE, NULL);
 
-       tree_col = etk_tree_col_new(ETK_TREE(tree), _("Executable"), 
+       tree_col = etk_tree_col_new(ETK_TREE(tree), _("Filename"), 
                  etk_tree_model_text_new(ETK_TREE(tree)), 150);
         etk_tree_col_expand_set(tree_col, ETK_TRUE);
 
        etk_tree_build(ETK_TREE(tree));
 
-       etk_container_add(ETK_CONTAINER(window), tree);
+       
+       etk_file_cache_dialog_refresh(tree);
 
-       /*Populate the tree*/
-       col1 = etk_tree_nth_col_get(ETK_TREE(tree), 0);
-       col2 = etk_tree_nth_col_get(ETK_TREE(tree), 1);
+       button = etk_button_new_with_label("Refresh");
+       etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_file_cache_dialog_refresh_cb), tree);
+
+       
+       etk_box_pack_end(ETK_BOX(vbox), button, ETK_FALSE, ETK_FALSE, 0);
+
+
+         etk_signal_connect ("delete_event", ETK_OBJECT (window),
+                     ETK_CALLBACK (_etk_file_cache_debug_dialog_delete_cb), 
window);
        
        etk_widget_show_all(window);
 }




-------------------------------------------------------
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
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to