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