Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_fileman.c e_fileman_smart.c e_fileman_smart.h 


Log Message:
*** NOTE NOTE NOTE NOTE NOTE ***
***  THIS UPDATE BREAKS EFM  ***
*** NOTE NOTE NOTE NOTE NOTE ***

I commited this because the scrolling code is in place and I wanted Seb to
try to help me find a bug.



===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_fileman.c 13 Oct 2005 00:52:02 -0000      1.3
+++ e_fileman.c 14 Oct 2005 11:55:49 -0000      1.4
@@ -14,6 +14,7 @@
  ****/
 
 static void _e_fileman_vscrollbar_drag_cb(Evas_Object *object, double value, 
void *data);
+static void _e_fileman_reconf_cb(void *data, Evas_Object *obj, 
E_Fm_Event_Reconfigure *ev);
 static void _e_fileman_cb_resize(E_Win *win);
 static void _e_fileman_cb_delete(E_Win *win);
 static void _e_fileman_free(E_Fileman *fileman);
@@ -67,18 +68,19 @@
    fileman->vscrollbar = e_scrollbar_add(fileman->evas);
    e_scrollbar_direction_set(fileman->vscrollbar, E_SCROLLBAR_VERTICAL);
    e_scrollbar_callback_drag_add(fileman->vscrollbar, 
_e_fileman_vscrollbar_drag_cb, fileman);
-   edje_object_part_swallow(fileman->main, "vscrollbar", fileman->vscrollbar);
 
    e_win_resize_callback_set(fileman->win, _e_fileman_cb_resize);
    e_win_resize(fileman->win, 640, 480);
 
    fileman->smart = e_fm_add(fileman->evas);
    e_fm_e_win_set(fileman->smart, fileman->win);
-   e_fm_dir_set(fileman->smart, dir);
+   //e_fm_dir_set(fileman->smart, dir);
    edje_object_part_swallow(fileman->main, "icon_area", fileman->smart);
 
    ecore_x_dnd_aware_set(fileman->win->evas_win, 1);
 
+   e_fm_reconfigure_callback_add(fileman->smart, _e_fileman_reconf_cb, 
fileman);
+   
    return fileman;
 }
 
@@ -110,13 +112,23 @@
    e_object_del(E_OBJECT(fileman->win));
    free(fileman);
 }
+
 static void
 _e_fileman_cb_resize(E_Win *win)
 {
    E_Fileman *fileman;
-
+   Evas_Coord w, h;
+   
    fileman = win->data;
    evas_object_resize(fileman->main, win->w, win->h);
+   e_fm_geometry_virtual_get(fileman->smart, &w, &h);
+   if(h > win->h)
+     edje_object_part_swallow(fileman->main, "vscrollbar", 
fileman->vscrollbar);
+   else 
+    {
+       edje_object_part_unswallow(fileman->main, fileman->vscrollbar);
+       evas_object_hide(fileman->vscrollbar);
+    }
 }
 
 static void
@@ -138,3 +150,17 @@
    e_fm_scroll_vertical(fileman->smart, value);
 }
 
+static void
+_e_fileman_reconf_cb(void *data, Evas_Object *obj, E_Fm_Event_Reconfigure *ev)
+{   
+   E_Fileman *fileman;
+   
+   fileman = data;
+   
+   if(ev->h > fileman->win->h)
+     edje_object_part_swallow(fileman->main, "vscrollbar", 
fileman->vscrollbar);
+   else {
+      edje_object_part_unswallow(fileman->main, fileman->vscrollbar);
+      evas_object_hide(fileman->vscrollbar);
+   }
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman_smart.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- e_fileman_smart.c   14 Oct 2005 11:51:17 -0000      1.30
+++ e_fileman_smart.c   14 Oct 2005 11:55:49 -0000      1.31
@@ -51,15 +51,16 @@
 # define D(x)  ((void) 0)
 #endif
 
-typedef struct _E_Fileman_Smart_Data         E_Fileman_Smart_Data;
-typedef struct _E_Fileman_File_Attributes    E_Fileman_File_Attributes;
-typedef struct _E_Fileman_File               E_Fileman_File;
-typedef struct _E_Fm_Config                  E_Fm_Config;
-typedef struct _E_Fileman_Thumb_Pending      E_Fileman_Thumb_Pending;
-typedef struct _E_Fileman_Fake_Mouse_Up_Info E_Fileman_Fake_Mouse_Up_Info;
-typedef struct _E_Fileman_Assoc_App          E_Fileman_Assoc_App;
-typedef enum   _E_Fileman_File_Type          E_Fileman_File_Type;
-typedef enum   _E_Fileman_Arrange            E_Fileman_Arrange;
+typedef struct _E_Fileman_Smart_Data            E_Fileman_Smart_Data;
+typedef struct _E_Fileman_File_Attributes       E_Fileman_File_Attributes;
+typedef struct _E_Fileman_File                  E_Fileman_File;
+typedef struct _E_Fm_Config                     E_Fm_Config;
+typedef struct _E_Fileman_Thumb_Pending         E_Fileman_Thumb_Pending;
+typedef struct _E_Fileman_Fake_Mouse_Up_Info    E_Fileman_Fake_Mouse_Up_Info;
+typedef struct _E_Fileman_Assoc_App             E_Fileman_Assoc_App;
+typedef struct _E_Fm_Event_Reconfigure_Internal 
E_Fm_Event_Reconfigure_Internal;
+typedef enum   _E_Fileman_File_Type             E_Fileman_File_Type;
+typedef enum   _E_Fileman_Arrange               E_Fileman_Arrange;
 
 
 struct _E_Fileman_File_Attributes
@@ -119,6 +120,13 @@
    pid_t pid;
 };
 
+struct _E_Fm_Event_Reconfigure_Internal
+{
+   void *data;
+   Evas_Object *obj;
+   void (*func)(void *data, Evas_Object *obj, E_Fm_Event_Reconfigure *ev);
+};
+
 enum _E_Fileman_File_Type
 {
    E_FILEMAN_FILETYPE_ALL = 0,
@@ -153,14 +161,18 @@
 {
    Evas_Object *bg;
    Evas_Object *clip;
-
+   Evas_Object *layout;
+   
    E_Menu *menu;
    E_Win *win;
    Evas *evas;
 
    Evas_List *event_handlers;
+   Evas_List *reconf_event_handlers;
    Evas_List *pending_thumbs;
 
+   unsigned char reconf_event_raised : 1;   
+   
    char *dir;
    Evas_List *files;
    Evas_List *files_raw;
@@ -233,13 +245,15 @@
 static void _e_fm_smart_hide(Evas_Object *object);
 
 static void                _e_fm_redraw_new(E_Fileman_Smart_Data *sd);
-static void                _e_fm_redraw_update(E_Fileman_Smart_Data *sd);
+static void                _e_fm_redraw(E_Fileman_Smart_Data *sd);
 static void                _e_fm_size_calc(E_Fileman_Smart_Data *sd);
 static void                _e_fm_stat_to_attr(struct stat st, 
E_Fileman_File_Attributes *attr, char *name);
+static void                _e_fm_event_reconfigure_raise(E_Fileman_Smart_Data 
*sd);
 static void                _e_fm_selections_clear(E_Fileman_Smart_Data *sd);
 static void                _e_fm_selections_add(E_Fileman_File *file);
 static void                _e_fm_selections_del(E_Fileman_File *file);
 static void                _e_fm_selections_add_rect(E_Fileman_Smart_Data *sd, 
Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+static void                _e_fm_file_free(E_Fileman_File *file);
 static void                _e_fm_files_free(E_Fileman_Smart_Data *sd);
 static Evas_Bool           _e_fm_file_can_preview(E_Fileman_File *file);
 static void                _e_fm_file_delete(E_Fileman_File *file);
@@ -408,167 +422,59 @@
 
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
      return;
-
-   /* fix me */
-   return;
-
-   evas_object_geometry_get(sd->bg, &bx, &by, &bw, &bh);
-
+   
    offsetpx = (sd->position - percent) * sd->max.h;
    sd->position = percent;
-
-   printf("offsetpx = %d\n", offsetpx);
-
+   
    if (offsetpx > 0) // moving up
-     {
-       int offset;
-       int visible;
-       Evas_List *dirs;
-
-       offset = sd->file_offset - sd->visible_files;
-       visible = sd->visible_files;
-       dirs = evas_list_nth_list(sd->files, offset);
-       offsetpx = abs(offsetpx);
-       printf("downscroll!!\n");
-       while (dirs)
-         {
-            Evas_Coord x, y, w, h;
-            E_Fileman_File *file;
-
-            printf("moving icons %d pixels!\n",offsetpx);
-
-            file = dirs->data;
-            evas_object_geometry_get(file->icon, &x, &y, &w, &h);
-
-            if ((y + offsetpx + w) > (by + bh))
-              sd->file_offset--;
-
-            evas_object_move(file->icon, x, y + offsetpx);
-
-            dirs = dirs->next;
-         }
-     }
-   else if (offsetpx < 0) // moving down
-     {
-       int offset;
-       int visible;
-       Evas_List *dirs;
-
-       offset = sd->file_offset - sd->visible_files;
-       visible = sd->visible_files;
-       dirs = evas_list_nth_list(sd->files, offset);
-       offsetpx = abs(offsetpx);
-       printf("downscroll!!\n");
-       while (dirs)
-         {
-            Evas_Coord x, y, w, h;
-            E_Fileman_File *file;
-
-            printf("moving icons %d pixels!\n",offsetpx);
-
-            file = dirs->data;
-            evas_object_geometry_get(file->icon, &x, &y, &w, &h);
-
-            if ((y - offsetpx + w) < by)
-              {
-                 sd->file_offset++;
-                 sd->visible_files--;
-              }
-
-            evas_object_move(file->icon, x, y - offsetpx);
-
-            dirs = dirs->next;
-         }
-     }
+    {       
+       Evas_Coord x, y, w, h;
+       evas_object_geometry_get(sd->layout, &x, &h, NULL, NULL);
+       offsetpx = abs(offsetpx);       
+       e_icon_layout_clip_freeze(sd->layout);
+       evas_object_move(sd->layout, x, h + offsetpx);
+       e_icon_layout_clip_thaw(sd->layout);       
+    } else if (offsetpx < 0) // moving down
+       {
+          Evas_Coord x, y, w, h;
+          evas_object_geometry_get(sd->layout, &x, &h, NULL, NULL);
+          offsetpx = abs(offsetpx);
+          e_icon_layout_clip_freeze(sd->layout);          
+          evas_object_move(sd->layout, x, h - offsetpx);
+          e_icon_layout_clip_thaw(sd->layout);    
+       }      
+}
 
-   _e_fm_redraw_update(sd);
+void
+e_fm_geometry_virtual_get(Evas_Object *object, Evas_Coord *w, Evas_Coord *h)
+{  
+   E_Fileman_Smart_Data *sd;
+   
+   if ((!object) || !(sd = evas_object_smart_data_get(object)))
+     return;
+   
+   if(w)
+     *w = sd->max.w;
+   
+   if(h)
+     *h = sd->max.h;   
 }
 
-static void
-_e_fm_redraw_update(E_Fileman_Smart_Data *sd)
+void
+e_fm_reconfigure_callback_add(Evas_Object *object, void (*func)(void *data, 
Evas_Object *obj, E_Fm_Event_Reconfigure *ev), void *data)
 {
-   Evas_List *dirs = NULL;
-   Evas_Coord x, y, w, h;
-   Evas_Coord yo;
-
-   E_Fileman_File *file;
-
-   if (!sd->dir)
+   E_Fileman_Smart_Data *sd;
+   E_Fm_Event_Reconfigure_Internal *event;
+   
+   if ((!object) || !(sd = evas_object_smart_data_get(object)))
      return;
-
-   dirs = evas_list_nth(sd->files, sd->file_offset - 1);
-   printf("offset is %d\n",sd->file_offset);
-   file = dirs->data;
-   if (!file) printf("CANT GET FILE!\n");
-   evas_object_geometry_get(file->icon, &x, &y, &w, &h);
-   x += w + sd->icon_info.x_space;
-
-   evas_object_geometry_get(sd->bg, NULL, &yo, &w, &h);
-
-   dirs = sd->files_raw;
-
-   sd->file_offset -= sd->visible_files;
-
-   dirs = evas_list_nth_list(dirs, sd->file_offset);
-
-   while (dirs)
-     {
-       E_Fileman_File_Attributes *attr;
-       int icon_w, icon_h;
-       Evas_Object *icon;
-
-       if (y > (yo + h))
-         return;
-
-       attr = evas_list_data (dirs);
-
-       icon = edje_object_add(sd->evas);
-       e_theme_edje_object_set(icon, "base/theme/fileman",
-                               "fileman/icon");
-
-       file = E_NEW(E_Fileman_File, 1);
-       file->icon = icon;
-       file->attr = attr;
-       file->sd = sd;
-       file->icon_img = _e_fm_file_icon_get(file);
-       edje_object_part_swallow(icon, "icon_swallow", file->icon_img);
-       edje_object_part_text_set(icon, "icon_title", attr->name);
-       file->event = evas_object_rectangle_add(sd->evas);
-       evas_object_color_set(file->event, 0, 0, 0, 0);
-
-       edje_object_size_min_calc(icon, &icon_w, &icon_h);
-       evas_object_resize(icon, icon_w, icon_h);
-       evas_object_resize(file->event, icon_w, icon_h);
-
-       if ((x > w) || ((x + icon_w) > w))
-         {
-            x = sd->icon_info.x_space;
-            y += icon_h + sd->icon_info.y_space;
-         }
-
-       evas_object_move(icon, x, y);
-       evas_object_move(file->event, x, y);
-       evas_object_stack_above(icon, sd->bg);
-       evas_object_stack_above(file->event, icon);
-       evas_object_clip_set(icon, sd->clip);
-       evas_object_clip_set(file->event, sd->clip);
-       evas_object_show(icon);
-       evas_object_show(file->event);
-
-       x += icon_w + sd->icon_info.x_space;
-
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_DOWN, 
_e_fm_file_icon_mouse_down_cb, file);
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_UP, 
_e_fm_file_icon_mouse_up_cb, file);
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_IN, 
_e_fm_file_icon_mouse_in_cb, file);
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_OUT, 
_e_fm_file_icon_mouse_out_cb, file);
-       evas_object_repeat_events_set(file->event, TRUE);
-
-       sd->files = evas_list_append(sd->files, file);
-
-       sd->file_offset++;
-       sd->visible_files++;
-       dirs = dirs->next;
-     }
+   
+   event = E_NEW(E_Fm_Event_Reconfigure_Internal, 1);
+   event->data = data;
+   event->func = func;
+   event->obj = object;
+   
+   sd->reconf_event_handlers = evas_list_append(sd->reconf_event_handlers, 
event);
 }
 
 /* local subsystem functions */
@@ -590,7 +496,7 @@
    sd->bg = evas_object_rectangle_add(evas); // this should become an edje
    evas_object_color_set(sd->bg, 0, 0, 0, 0);
    evas_object_show(sd->bg);
-
+   
    evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_DOWN,
                                  _e_fm_mouse_down_cb, sd);
    evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_UP,
@@ -598,7 +504,12 @@
    evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_MOVE,
                                  _e_fm_mouse_move_cb, sd);
    evas_object_smart_member_add(sd->bg, object);
-
+   
+   sd->layout = e_icon_layout_add(evas);
+   e_icon_layout_spacing_set(sd->layout, 15, 15);   
+   evas_object_stack_above(sd->layout, sd->bg);
+   evas_object_show(sd->layout);   
+   
    sd->clip = evas_object_rectangle_add(evas);
    evas_object_smart_member_add(sd->clip, object);
    evas_object_move(sd->clip, -100000, -100000);
@@ -606,6 +517,7 @@
    evas_object_color_set(sd->clip, 255, 255, 255, 255);
 
    evas_object_clip_set(sd->bg, sd->clip);
+   evas_object_clip_set(sd->layout, sd->clip);   
 
    sd->icon_info.w = 48;
    sd->icon_info.h = 48;
@@ -835,8 +747,8 @@
 
    evas_object_move(sd->bg, x, y);
    evas_object_move(sd->clip, x, y);
-
-   _e_fm_redraw_new(sd); // no new
+   evas_object_move(sd->layout, x, y);
+//   _e_fm_redraw(sd); // no new
 }
 
 static void
@@ -848,11 +760,19 @@
      return;
 
    evas_object_resize(sd->bg, w, h);
-   evas_object_resize(sd->clip, w, h);
+   evas_object_resize(sd->clip, w, h);   
+   _e_fm_size_calc(sd);
+   evas_object_resize(sd->layout, w, h);   
+   e_icon_layout_virtual_size_set(sd->layout, w, sd->max.h);
    sd->conf.main->width = w;
    sd->conf.main->height = h;
+   
    // optimize
-   _e_fm_redraw_new(sd); // no new
+   //   _e_fm_redraw(sd); // no new
+   
+   if(!sd->reconf_event_raised)
+     _e_fm_event_reconfigure_raise(sd);
+   
 }
 
 static void
@@ -893,16 +813,9 @@
    if (sd->files)
      _e_fm_files_free(sd);
 
-   evas_object_geometry_get(sd->bg, &x, &y, &w, &h);
-   xo = x;
-   yo = y;
-
-   x = sd->icon_info.x_space;
-   y = sd->icon_info.y_space;
-
    sd->files_raw = _e_fm_dir_files_get(sd->dir, E_FILEMAN_FILETYPE_NORMAL);
    dirs = sd->files_raw;
-
+   
    if (sd->monitor)
      ecore_file_monitor_del(sd->monitor);
    sd->monitor = ecore_file_monitor_add(sd->dir, _e_fm_dir_monitor_cb, sd);
@@ -912,43 +825,27 @@
    snprintf(attr->name, PATH_MAX, "..");
 
    dirs = evas_list_prepend(dirs, attr);
-
-   //sd->file_offset = 0;
-   //sd->visible_files = 0;
-
-   sd->file_offset -= sd->visible_files;
-
-   if (sd->file_offset <= 0)
-     sd->file_offset = 0;
-   else
-     dirs = evas_list_nth_list(dirs, sd->file_offset);
-
-   sd->visible_files = 0;
-
-   //_e_fm_size_calc(sd);
-
+     
+   e_icon_layout_freeze(sd->layout);
+   
    while (dirs)
      { 
        int icon_w, icon_h;
-       Evas_Object *icon;
-
-       if (y > (yo + h)) break;
 
        attr = evas_list_data(dirs);
 
-       icon = edje_object_add(sd->evas);
-       e_theme_edje_object_set(icon, "base/theme/fileman",
-                               "fileman/icon");
+
+
 
        file = E_NEW(E_Fileman_File, 1);
-       file->icon = icon;
+       file->icon = edje_object_add(sd->evas);
+       e_theme_edje_object_set(file->icon, "base/theme/fileman",
+                               "fileman/icon");        
        file->attr = attr;
        file->sd = sd;
        file->icon_img = _e_fm_file_icon_get(file);
-       edje_object_part_swallow(icon, "icon_swallow", file->icon_img);
-       edje_object_part_text_set(icon, "icon_title", attr->name);
-       file->event = evas_object_rectangle_add(sd->evas);
-       evas_object_color_set(file->event, 0, 0, 0, 0);
+       edje_object_part_swallow(file->icon, "icon_swallow", file->icon_img);
+       edje_object_part_text_set(file->icon, "icon_title", attr->name);
 
 #if 0
          {
@@ -970,47 +867,45 @@
          }
 #endif
 
-       edje_object_size_min_calc(icon, &icon_w, &icon_h);
-       evas_object_resize(icon, icon_w, icon_h);
-       evas_object_resize(file->event, icon_w, icon_h);
-
-       if ((x > w) || ((x + icon_w) > w))
-         {
-            x = sd->icon_info.x_space;
-            y += icon_h + sd->icon_info.y_space;
-         }
-
-       evas_object_move(icon, x, y);
-       evas_object_move(file->event, x, y);
-       evas_object_stack_above(icon, sd->bg);
-       evas_object_stack_above(file->event, icon);
-       evas_object_clip_set(icon, sd->clip);
-       evas_object_clip_set(file->event, sd->clip);
-       evas_object_show(icon);
-       evas_object_show(file->event);
+       edje_object_size_min_calc(file->icon, &icon_w, &icon_h);
+       evas_object_resize(file->icon, icon_w, icon_h);
 
-       x += icon_w + sd->icon_info.x_space;
+       e_icon_layout_pack(sd->layout, file->icon);
+       evas_object_show(file->icon);
 
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_DOWN, 
_e_fm_file_icon_mouse_down_cb, file);
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_UP, 
_e_fm_file_icon_mouse_up_cb, file);
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_IN, 
_e_fm_file_icon_mouse_in_cb, file);
-       evas_object_event_callback_add(file->event, EVAS_CALLBACK_MOUSE_OUT, 
_e_fm_file_icon_mouse_out_cb, file);
-       evas_object_repeat_events_set(file->event, FALSE);
+       evas_object_event_callback_add(file->icon, EVAS_CALLBACK_MOUSE_DOWN, 
_e_fm_file_icon_mouse_down_cb, file);
+       evas_object_event_callback_add(file->icon, EVAS_CALLBACK_MOUSE_UP, 
_e_fm_file_icon_mouse_up_cb, file);
+       evas_object_event_callback_add(file->icon, EVAS_CALLBACK_MOUSE_IN, 
_e_fm_file_icon_mouse_in_cb, file);
+       evas_object_event_callback_add(file->icon, EVAS_CALLBACK_MOUSE_OUT, 
_e_fm_file_icon_mouse_out_cb, file);
 
        sd->files = evas_list_append(sd->files, file);
 
-       sd->file_offset++;
-       sd->visible_files++;
        dirs = dirs->next;
      }
+   
+   e_icon_layout_thaw(sd->layout);
+   
+   if(!sd->reconf_event_raised)
+     _e_fm_event_reconfigure_raise(sd);
+}
+
+
+static void
+_e_fm_redraw(E_Fileman_Smart_Data *sd)
+{
+   e_icon_layout_redraw_force(sd->layout);
+   
+   if(!sd->reconf_event_raised)
+     _e_fm_event_reconfigure_raise(sd);
 }
 
-// when this is enabled, the thumbnailer is broken
+// when this is enabled, the thumbnailer is broken, double check if its
+// still broken. seems ok.
 static void
 _e_fm_size_calc(E_Fileman_Smart_Data *sd)
 {
    Evas_List *dirs = NULL;
-   Evas_Coord x, y, w, h;
+   Evas_Coord xbg, x, y, w, h;
    E_Fileman_File *file;
    E_Fileman_File_Attributes *attr;
 
@@ -1018,7 +913,7 @@
      return;
 
    evas_object_geometry_get(sd->bg, &x, &y, &w, &h);
-
+   xbg = x;
    x = 0;
    y = 0;
 
@@ -1064,11 +959,39 @@
        dirs = dirs->next;
      }
 
-   sd->max.w = x; // not really max w.
+   sd->max.w = xbg;
    sd->max.h = y;
 }
 
 static void
+_e_fm_event_reconfigure_raise(E_Fileman_Smart_Data *sd)
+{
+   Evas_List *l;
+   
+   if(sd->reconf_event_raised == 1)
+     return;
+   
+   sd->reconf_event_raised = 1;
+   
+   for (l = sd->reconf_event_handlers; l; l = l->next)
+    {
+       E_Fm_Event_Reconfigure_Internal *ri;
+       E_Fm_Event_Reconfigure *ev;
+       
+       ev = E_NEW(E_Fm_Event_Reconfigure, 1);
+       
+       ri = l->data;
+       
+       ev->w = sd->max.w;
+       ev->h = sd->max.h;
+       
+       ri->func(ri->data, ri->obj, ev);       
+    }
+   
+   sd->reconf_event_raised = 0;   
+}
+
+static void
 _e_fm_selections_clear(E_Fileman_Smart_Data *sd)
 {
    Evas_List *l;
@@ -1163,7 +1086,24 @@
    sd->dir = strdup(dir);
 
    _e_fm_selections_clear(sd);
-   _e_fm_redraw_new(sd);
+   _e_fm_redraw_new(sd);   
+}
+
+static void
+_e_fm_file_free(E_Fileman_File *file)
+{   
+   e_icon_layout_unpack(file);
+   evas_object_del(file->icon_img);
+   evas_object_del(file->icon);
+   evas_object_del(file->entry);
+   evas_object_del(file->title);
+//   evas_object_del(file->event);
+   file->sd = NULL;
+   
+   E_FREE(file->attr);
+   if (file->menu)
+     e_object_del(E_OBJECT(file->menu));
+   free(file);
 }
 
 static void
@@ -1178,17 +1118,7 @@
    for (l = sd->files; l; l = l->next)
      {
        file = l->data;
-       evas_object_del(file->icon_img);
-       evas_object_del(file->icon);
-       evas_object_del(file->entry);
-       evas_object_del(file->title);
-       evas_object_del(file->event);
-       file->sd = NULL;
-
-       E_FREE(file->attr);
-       if (file->menu)
-         e_object_del(E_OBJECT(file->menu));
-       free(file);
+       _e_fm_file_free(file);
      }
    evas_list_free(sd->files);
 
@@ -1196,6 +1126,7 @@
    sd->drag.file = NULL;
 
    _e_fm_selections_clear(sd);
+   e_icon_layout_reset(sd->layout);
 }
 
 static void
@@ -1351,7 +1282,6 @@
    ecore_file_mv(old_name, new_name);
 }
 
-// todo: check if the deletion was ok, if not, pop up dialog
 static void
 _e_fm_file_delete(E_Fileman_File *file)
 {
@@ -1377,7 +1307,10 @@
        e_dialog_text_set(dia, text);
 
        e_dialog_show(dia);
-     }
+     }  
+
+   file->sd->files = evas_list_remove(file->sd->files, file);   
+   _e_fm_file_free(file);
 }
 
 // TODO: overhaul
@@ -1627,12 +1560,13 @@
 _e_fm_file_delete_yes_cb(void *data, E_Dialog *dia)
 {
    E_Fileman_File *file;
-
+   E_Fileman_Smart_Data *sd;
+   
    file = data;
-
+   sd = file->sd;
    _e_fm_file_delete(file);
    e_object_del(E_OBJECT(dia));
-   _e_fm_redraw_new(file->sd); // no_new
+   _e_fm_redraw(sd); // no_new
 }
 
 static void
@@ -1711,12 +1645,50 @@
    
    hb = e_widget_list_add(e, 1, 1);
    
-   o = e_widget_framelist_add(e, "General", 0);
+   o = e_widget_frametable_add(e, "General", 0);
    
-   snprintf(text, 512, "Name:");
-   e_widget_framelist_object_append(o, e_widget_label_add(e, text));
+   snprintf(text, 512, "File:");
+   e_widget_frametable_object_append(o, e_widget_label_add(e, text),
+                                    0, 0, 1, 1,
+                                    1, 1, 1, 1);
    snprintf(text, 512, "%s", file->attr->name);
-   e_widget_framelist_object_append(o, e_widget_label_add(e, text));
+   e_widget_frametable_object_append(o, e_widget_label_add(e, text),
+                                   1, 0, 1, 1,
+                                   1, 1, 1, 1);
+   
+   snprintf(text, 512, "Size:");
+   e_widget_frametable_object_append(o, e_widget_label_add(e, text),
+                                    0, 1, 1, 1,
+                                    1, 1, 1, 1);
+   snprintf(text, 512, "%s Kb", size);
+   e_widget_frametable_object_append(o, e_widget_label_add(e, text),
+                                   1, 1, 1, 1,
+                                   1, 1, 1, 1);
+   
+   snprintf(text, 512, "Type:");
+   e_widget_frametable_object_append(o, e_widget_label_add(e, text),
+                                    0, 2, 1, 1,
+                                    1, 1, 1, 1);
+   snprintf(text, 512, "%s", "An Image");
+   e_widget_frametable_object_append(o, e_widget_label_add(e, text),
+                                   1, 2, 1, 1,
+                                   1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_check_add(e, "Protect this 
file", &dummy_val),
+                           0, 3, 2, 1,
+                           1, 1, 1, 1);
+   
+   rg = e_widget_radio_group_new(&dummy_val);
+   
+   e_widget_frametable_object_append(o, e_widget_radio_add(e, "Let others see 
this file", 0, rg),
+                                    0, 4, 2, 1,
+                                    1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_radio_add(e, "Let others 
modify this file", 0, rg),
+                                    0, 5, 2, 1,
+                                    1, 1, 1, 1);   
+   
+/* Use those in advanced dialog.
    
    snprintf(text, 512, "Owner:");
    e_widget_framelist_object_append(o, e_widget_label_add(e, text));
@@ -1756,9 +1728,13 @@
    e_widget_framelist_object_append(o, e_widget_label_add(e, text));
    snprintf(text, 512, "%s", lastmod);
    e_widget_framelist_object_append(o, e_widget_label_add(e, text));
-      
+  
+ */ 
+ 
    e_widget_list_object_append(hb, o, 0, 1, 0.0);
    
+/*   use those in the advanced dialog
+   
    o = e_widget_framelist_add(e, "Permissions", 0);
    
    e_widget_framelist_object_append(o, e_widget_label_add(e, "User:"));
@@ -1777,15 +1753,21 @@
    e_widget_framelist_object_append(o, e_widget_check_add(e, "Execute", 
&dummy_val));   
 
    e_widget_list_object_append(hb, o, 0, 0, 0.0);
-      
+  
+ */
+ 
    e_widget_list_object_append(ol, hb, 1, 0, 0.0);
    
+   o = e_widget_button_add(e, "Advanced", "enlightenment/configuration", NULL, 
NULL, NULL);
+   e_widget_list_object_append(ol, o, 0, 0, 1.0);
+   
+   
    e_widget_min_size_get(ol, &w, &h);
    
    e_dialog_content_set(dia, ol, w, h);
         
    e_dialog_button_add(dia, "OK", NULL, NULL, NULL);
-   e_dialog_button_add(dia, "Apply", "enlightenment/reset", NULL, NULL);
+   //e_dialog_button_add(dia, "Apply", "enlightenment/reset", NULL, NULL);
    e_dialog_button_add(dia, "Cancel", "enlightenment/exit", NULL, NULL);
    e_win_centered_set(dia->win, 1);
    e_dialog_show(dia);
@@ -1948,7 +1930,7 @@
 
    ev = event_info;
    sd = data;
-
+   
    switch (ev->button)
      {
       case 1:
@@ -2070,7 +2052,6 @@
 
 // TODO:
 // - send signals to edje for animations etc...
-// - look at case where we have // and no /
 static void
 _e_fm_file_icon_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
 {
@@ -2079,7 +2060,7 @@
 
    ev = event_info;
    file = data;
-
+   
    if (ev->button == 1)
     {
        if (_e_fm_file_type(file) == E_FILEMAN_FILETYPE_DIRECTORY && (ev->flags 
== EVAS_BUTTON_DOUBLE_CLICK))
@@ -2268,13 +2249,13 @@
       case E_FILEMAN_CANVAS_ARRANGE_NAME:
         sd->files = evas_list_sort(sd->files, evas_list_count(sd->files), 
_e_fm_dir_files_sort_name_cb);
         sd->arrange = E_FILEMAN_CANVAS_ARRANGE_NAME;
-        _e_fm_redraw_new(sd); // no_new
+        _e_fm_redraw(sd); // no_new
         break;
 
       case E_FILEMAN_CANVAS_ARRANGE_MODTIME:
         sd->files = evas_list_sort(sd->files, evas_list_count(sd->files), 
_e_fm_dir_files_sort_modtime_cb);
         sd->arrange = E_FILEMAN_CANVAS_ARRANGE_MODTIME;
-        _e_fm_redraw_new(sd); // no new
+        _e_fm_redraw(sd); // no new
         break;
      }
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman_smart.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_fileman_smart.h   10 Oct 2005 19:27:22 -0000      1.2
+++ e_fileman_smart.h   14 Oct 2005 11:55:49 -0000      1.3
@@ -3,10 +3,17 @@
  */
 #ifdef E_TYPEDEFS
 
+typedef struct _E_Fm_Event_Reconfigure E_Fm_Event_Reconfigure;
+
 #else
 #ifndef E_FM_SMART_H
 #define E_FM_SMART_H
 
+struct _E_Fm_Event_Reconfigure
+{
+   Evas_Coord w, h;   
+};
+
 EAPI Evas_Object          *e_fm_add(Evas *evas);
 EAPI void                  e_fm_dir_set(Evas_Object *object, const char *dir);
 EAPI char                 *e_fm_dir_get(Evas_Object *object);
@@ -16,6 +23,8 @@
 EAPI E_Menu               *e_fm_menu_get(Evas_Object *object);
 EAPI void                  e_fm_scroll_horizontal(Evas_Object *object, double 
percent);
 EAPI void                  e_fm_scroll_vertical(Evas_Object *object, double 
percent);
-
+EAPI void                  e_fm_geometry_virtual_get(Evas_Object *object, 
Evas_Coord *w, Evas_Coord *h);
+EAPI void                  e_fm_reconfigure_callback_add(Evas_Object *object, 
void (*func)(void *data, Evas_Object *obj, E_Fm_Event_Reconfigure *ev), void 
*data);
+    
 #endif
 #endif




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to