Enlightenment CVS committal

Author  : jethomas
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_filelist.c ewl_filelist.h 


Log Message:
Use ecore_file_monitor in the filelist.

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_filelist.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- ewl_filelist.c      20 May 2008 23:47:00 -0000      1.61
+++ ewl_filelist.c      23 Jun 2008 23:37:27 -0000      1.62
@@ -24,7 +24,9 @@
 static void ewl_filelist_setup(Ewl_Filelist *fl);
 static void ewl_filelist_view_setup(Ewl_Filelist *fl);
 static void ewl_filelist_cb_clicked(Ewl_Widget *w, void *ev,
-                                                void *data __UNUSED__);
+                                                void *data);
+void ewl_filelist_monitor_event(void *data, Ecore_File_Monitor *em,
+                        Ecore_File_Event event, const char *path);
 
 /**
  * @return Returns a new Ewl_Filelist widget or NULL on failure
@@ -268,20 +270,17 @@
         }
         else if ((!fl->directory) || (strcmp(dir, fl->directory)))
         {
-                Ewl_Filelist_Directory *data;
                 Ewl_Event_Action_Response ev_data;
 
                 IF_FREE(fl->directory);
                 fl->directory = strdup(dir);
 
-                data = ewl_mvc_data_get(EWL_MVC(fl->controller));
-                if (data) ewl_filelist_model_data_unref(data);
-                
-                data = ewl_filelist_model_directory_new(fl->directory,
-                                                 fl->show_dot, TRUE, 
fl->filter);
-                ewl_mvc_data_set(EWL_MVC(fl->controller), data);
-                ewl_mvc_dirty_set(EWL_MVC(fl->controller), TRUE);
+                if (fl->fm)
+                        ecore_file_monitor_del(fl->fm);
+                fl->fm = ecore_file_monitor_add(fl->directory,
+                                ewl_filelist_monitor_event, fl);
 
+                ewl_filelist_refresh(fl);
                 ev_data.response = EWL_FILELIST_EVENT_DIR_CHANGE;
                 ewl_callback_call_with_event_data(EWL_WIDGET(fl),
                                 EWL_CALLBACK_VALUE_CHANGED, &ev_data);
@@ -291,6 +290,35 @@
 }
 
 /**
+ * @param fl: The filelist to work with
+ * @return Returns no value
+ * @brief Refreshes the filelist when the directory shown is know to have
+ * changed
+ */
+void
+ewl_filelist_refresh(Ewl_Filelist *fl)
+{
+        Ewl_Filelist_Directory *data;
+
+        DENTER_FUNCTION(DLEVEL_STABLE);
+        DCHECK_PARAM_PTR(fl);
+        DCHECK_TYPE(fl, EWL_FILELIST_TYPE);
+
+        if (!fl->directory)
+                DRETURN(DLEVEL_STABLE);
+
+        data = ewl_mvc_data_get(EWL_MVC(fl->controller));
+        if (data) ewl_filelist_model_data_unref(data);
+
+        data = ewl_filelist_model_directory_new(fl->directory,
+                                        fl->show_dot, TRUE, fl->filter);
+        ewl_mvc_data_set(EWL_MVC(fl->controller), data);
+        ewl_mvc_dirty_set(EWL_MVC(fl->controller), TRUE);
+
+        DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
  * @param fl: The filelist to get the current directory from
  * @return Returns the current directory
  * @brief Retrieves the current directory set on the filelist
@@ -1273,5 +1301,14 @@
                 ewl_filelist_selected_files_change_notify(fl);
 
         DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void ewl_filelist_monitor_event(void *data, Ecore_File_Monitor *em __UNUSED__,
+                                        Ecore_File_Event event __UNUSED__,
+                                        const char *path __UNUSED__)
+{
+        Ewl_Filelist *fl = data;
+
+        ewl_filelist_refresh(fl);
 }
 
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_filelist.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- ewl_filelist.h      7 May 2008 13:38:23 -0000       1.25
+++ ewl_filelist.h      23 Jun 2008 23:37:27 -0000      1.26
@@ -8,6 +8,7 @@
 #include "ewl_text.h"
 #include "ewl_model.h"
 #include "ewl_view.h"
+#include <Ecore_File.h>
 
 /**
  * @addtogroup Ewl_Filelist Ewl_Filelist: The base widget for the filelists
@@ -73,24 +74,25 @@
  */
 struct Ewl_Filelist
 {
-        Ewl_Box box;                /**< Inherits from Ewl_Box */
-        Ewl_Widget *controller; /**< Must inherit from mvc **/
+        Ewl_Box box;                     /**< Inherits from Ewl_Box */
+        Ewl_Widget *controller;          /**< Must inherit from mvc **/
 
-        Ewl_View *view;                 /**< The view for mvc */
-        Ewl_Model *model;        /**< The model for the mvc */
+        Ewl_View *view;                  /**< The view for mvc */
+        Ewl_Model *model;                /**< The model for the mvc */
 
-        char *directory;        /**< The directory to display */
-        Ewl_Filelist_Filter *filter;                /**< The file filter to 
employ */
+        char *directory;                 /**< The directory to display */
+        Ewl_Filelist_Filter *filter;     /**< The file filter to employ */
 
-        unsigned char multiselect:1;        /**< Allow multiple file selctions 
*/
+        unsigned char multiselect:1;     /**< Allow multiple file selctions */
         unsigned char show_dot:1;        /**< Show . files */
 
-        Ewl_Filelist_View view_flag;        /**< The view to use for 
controller */
+        Ewl_Filelist_View view_flag;     /**< The view to use for controller */
 
         struct
         {        Ewl_Scrollpane_Flags h; /**< Horizontal scroll flag */
-                Ewl_Scrollpane_Flags v; /**< Vertical scroll flag */
-        } scroll_flags;                /**< Flags to modify a containing 
scrollpane */
+                Ewl_Scrollpane_Flags v;  /**< Vertical scroll flag */
+        } scroll_flags;                  /**< Flags to modify a containing 
scrollpane */
+        Ecore_File_Monitor *fm;          /**< File monitor */
 };
 
 /**
@@ -153,62 +155,63 @@
         unsigned int num_files;
 };
 
-Ewl_Widget        *ewl_filelist_new(void);
+Ewl_Widget              *ewl_filelist_new(void);
 
-int                 ewl_filelist_init(Ewl_Filelist *fl);
+int                      ewl_filelist_init(Ewl_Filelist *fl);
 
-void                 ewl_filelist_directory_set(Ewl_Filelist *fl,
+void                     ewl_filelist_directory_set(Ewl_Filelist *fl,
                                                         const char *dir);
-const char        *ewl_filelist_directory_get(Ewl_Filelist *fl);
+const char              *ewl_filelist_directory_get(Ewl_Filelist *fl);
+void                     ewl_filelist_refresh(Ewl_Filelist *fl);
 
-void                 ewl_filelist_filter_set(Ewl_Filelist *fl,
+void                     ewl_filelist_filter_set(Ewl_Filelist *fl,
                                                         Ewl_Filelist_Filter 
*filter);
-Ewl_Filelist_Filter        *ewl_filelist_filter_get(Ewl_Filelist *fl);
+Ewl_Filelist_Filter     *ewl_filelist_filter_get(Ewl_Filelist *fl);
 
-void                 ewl_filelist_view_set(Ewl_Filelist *fl,
+void                     ewl_filelist_view_set(Ewl_Filelist *fl,
                                                 Ewl_Filelist_View view);
-Ewl_Filelist_View *ewl_filelist_view_get(Ewl_Filelist *fl);
+Ewl_Filelist_View       *ewl_filelist_view_get(Ewl_Filelist *fl);
 
 
-void                 ewl_filelist_multiselect_set(Ewl_Filelist *fl,
+void                     ewl_filelist_multiselect_set(Ewl_Filelist *fl,
                                                         unsigned int ms);
-unsigned int         ewl_filelist_multiselect_get(Ewl_Filelist *fl);
+unsigned int             ewl_filelist_multiselect_get(Ewl_Filelist *fl);
 
-void                  ewl_filelist_show_dot_files_set(Ewl_Filelist *fl,
+void                     ewl_filelist_show_dot_files_set(Ewl_Filelist *fl,
                                                         unsigned int dot);
-unsigned int         ewl_filelist_show_dot_files_get(Ewl_Filelist *fl);
+unsigned int             ewl_filelist_show_dot_files_get(Ewl_Filelist *fl);
 
-void                 ewl_filelist_selected_file_set(Ewl_Filelist *fl,
+void                     ewl_filelist_selected_file_set(Ewl_Filelist *fl,
                                                          const char *file);
-char                 *ewl_filelist_selected_file_get(Ewl_Filelist *fl);
-char                *ewl_filelist_size_get(off_t st_size);
-char                *ewl_filelist_perms_get(mode_t st_mode);
-char                *ewl_filelist_username_get(uid_t st_uid);
-char                *ewl_filelist_groupname_get(gid_t st_gid);
-char                *ewl_filelist_modtime_get(time_t modtime);
-Ewl_Widget        *ewl_filelist_selected_file_preview_get(Ewl_Filelist *fl,
+char                    *ewl_filelist_selected_file_get(Ewl_Filelist *fl);
+char                    *ewl_filelist_size_get(off_t st_size);
+char                    *ewl_filelist_perms_get(mode_t st_mode);
+char                    *ewl_filelist_username_get(uid_t st_uid);
+char                    *ewl_filelist_groupname_get(gid_t st_gid);
+char                    *ewl_filelist_modtime_get(time_t modtime);
+Ewl_Widget              *ewl_filelist_selected_file_preview_get(Ewl_Filelist 
*fl,
                                                         const char *path);
-Ewl_Widget        *ewl_filelist_multi_select_preview_get(Ewl_Filelist *fl);
+Ewl_Widget              *ewl_filelist_multi_select_preview_get(Ewl_Filelist 
*fl);
 
-void                 ewl_filelist_selected_files_set(Ewl_Filelist *fl,
+void                     ewl_filelist_selected_files_set(Ewl_Filelist *fl,
                                                         Ecore_List *files);
-Ecore_List        *ewl_filelist_selected_files_get(Ewl_Filelist *fl);
-void                  ewl_filelist_selected_files_change_notify(Ewl_Filelist 
*fl);
+Ecore_List              *ewl_filelist_selected_files_get(Ewl_Filelist *fl);
+void                     
ewl_filelist_selected_files_change_notify(Ewl_Filelist *fl);
 
-void                 ewl_filelist_selected_signal_all(Ewl_Filelist *fl,
+void                     ewl_filelist_selected_signal_all(Ewl_Filelist *fl,
                                                 const char *signal);
 
-void                 ewl_filelist_vscroll_flag_set(Ewl_Filelist *fl,
+void                     ewl_filelist_vscroll_flag_set(Ewl_Filelist *fl,
                                                 Ewl_Scrollpane_Flags v);
-Ewl_Scrollpane_Flags ewl_filelist_vscroll_flag_get(Ewl_Filelist *fl);
+Ewl_Scrollpane_Flags     ewl_filelist_vscroll_flag_get(Ewl_Filelist *fl);
 
-void                 ewl_filelist_hscroll_flag_set(Ewl_Filelist *fl,
+void                     ewl_filelist_hscroll_flag_set(Ewl_Filelist *fl,
                                                 Ewl_Scrollpane_Flags h);
-Ewl_Scrollpane_Flags ewl_filelist_hscroll_flag_get(Ewl_Filelist *fl);
+Ewl_Scrollpane_Flags     ewl_filelist_hscroll_flag_get(Ewl_Filelist *fl);
 
-const char        *ewl_filelist_stock_icon_get(const char *path);
+const char              *ewl_filelist_stock_icon_get(const char *path);
 
-char                 *ewl_filelist_expand_path(Ewl_Filelist *fl, const char 
*dir);
+char                    *ewl_filelist_expand_path(Ewl_Filelist *fl, const char 
*dir);
 
 /*
  * Internally used functions, override at your own risk



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to