efm work, dnd working, save/load working

SVN revision: 20351
This commit is contained in:
jlzapata 2006-02-08 23:06:12 +00:00 committed by jlzapata
parent 2f7cfd5fbc
commit b6aec4bc2b
3 changed files with 61 additions and 18 deletions

View File

@ -25,7 +25,7 @@
* - is the offset code working properly? i have a feeling we're displayin
* more icons that the visible space can take and they are being hidden.
*
* - allow for icon movement inside the canvas
* + allow for icon movement inside the canvas
*
* - double check dir monitoring. note: when we are in a dir that is constantly
* changing, we cant keep calling redraw_new as it will kill us.
@ -1419,6 +1419,14 @@ _e_fm_dir_set(E_Fm_Smart_Data *sd, const char *dir)
if (!(dir2 = opendir(dir))) return;
/* save the old meta */
if(sd->meta)
{
_e_fm_dir_meta_save(sd);
_e_fm_dir_meta_free(sd->meta);
sd->meta = NULL;
}
type = E_FM_FILE_TYPE_NORMAL;
list = NULL;
while((dp = readdir(dir2)))
@ -1445,16 +1453,12 @@ _e_fm_dir_set(E_Fm_Smart_Data *sd, const char *dir)
if (sd->dir) free (sd->dir);
sd->dir = strdup(dir);
if(sd->meta)
{
_e_fm_dir_meta_free(sd->meta);
sd->meta = NULL;
}
_e_fm_dir_meta_load(sd);
if(sd->meta)
{
/* FIXME whats the purpose of this */
Evas_List *l;
for(l = sd->meta->files; l; l = l->next)
@ -1501,6 +1505,7 @@ _e_fm_dir_set(E_Fm_Smart_Data *sd, const char *dir)
icon->sd = sd;
e_fm_icon_file_set(icon->icon_obj, icon->file);
sd->files = evas_list_prepend(sd->files, icon);
e_icon_canvas_pack(sd->layout, icon->icon_obj, e_fm_icon_create, e_fm_icon_destroy, icon);
evas_object_event_callback_add(icon->icon_obj, EVAS_CALLBACK_MOUSE_DOWN, _e_fm_icon_mouse_down_cb, icon);
evas_object_event_callback_add(icon->icon_obj, EVAS_CALLBACK_MOUSE_UP, _e_fm_icon_mouse_up_cb, icon);
@ -1528,6 +1533,7 @@ _e_fm_dir_files_get(void *data)
e_icon_canvas_freeze(sd->layout);
/* add two files per each timer call */
while (i < 2)
{
char *f;
@ -1604,8 +1610,6 @@ _e_fm_dir_files_get(void *data)
if(!sd->files_raw) {
sd->timer = NULL;
if(sd->meta)
_e_fm_dir_meta_save(sd);
return 0;
}
@ -2439,11 +2443,11 @@ _e_fm_icon_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
ecore_evas_geometry_get(sd->win->ecore_evas, &cx, &cy, NULL, NULL);
evas_object_geometry_get(icon->icon_obj, &x, &y, &w, &h);
sd->drag.dx = cx;
sd->drag.dy = cy;
sd->drag.dx = cx + 5;
sd->drag.dy = cy + 5;
if(!sd->drag.ecore_evas)
sd->drag.ecore_evas = ecore_evas_software_x11_new(NULL, 0, cx + x, cx + y, w, h);
sd->drag.ecore_evas = ecore_evas_software_x11_new(NULL, 0, cx + x, cy + y, w, h);
sd->drag.evas = ecore_evas_get(sd->drag.ecore_evas);
sd->drag.win = ecore_evas_software_x11_window_get(sd->drag.ecore_evas);
@ -3210,6 +3214,7 @@ _e_fm_xdnd_enter_cb(void *data, int type, void *event)
ev = event;
sd = data;
if (ev->win != sd->win->evas_win) return 1;
return 1;
@ -3267,11 +3272,39 @@ _e_fm_xdnd_drop_cb(void *data, int type, void *event)
{
Ecore_X_Event_Xdnd_Drop *ev;
E_Fm_Smart_Data *sd;
int ax, ay, x, y;
ev = event;
sd = data;
if (ev->win != sd->win->evas_win) return 1;
ecore_evas_geometry_get(sd->win->ecore_evas, &ax, &ay, NULL, NULL);
x = ev->position.x - ax - 5; /* 5 because we already shift 5 pixels creating the window */
y = ev->position.y - ay - 5;
e_icon_canvas_child_move(sd->drag.icon_obj->icon_obj,x,y);
/* update the metadata for the new coords */
if(sd->meta)
{
Evas_List *l;
for(l = sd->meta->files; l; l = l->next)
{
E_Fm_Icon_Metadata *m;
m = l->data;
if(!strcmp(m->name, sd->drag.icon_obj->file->name))
{
m->x = x;
m->y = y;
break;
}
}
}
ecore_x_selection_xdnd_request(sd->win->evas_win, "text/uri-list");
return 1;
@ -3414,11 +3447,6 @@ _e_fm_dir_meta_load(E_Fm_Smart_Data *sd)
char buf[PATH_MAX];
char *hash;
/*******
* DISABLE FOR NOW
*******/
return 0;
if (!sd->dir) return 0;
hash = _e_fm_dir_meta_dir_id(sd->dir);
@ -3436,6 +3464,7 @@ _e_fm_dir_meta_load(E_Fm_Smart_Data *sd)
E_Fm_Icon_Metadata *im;
im = l->data;
printf("Loading meta: %d %d for file %s\n", im->x, im->y, im->name);
m->files_hash = evas_hash_add(m->files_hash, im->name, im);
}
}
@ -3507,7 +3536,7 @@ _e_fm_dir_meta_save(E_Fm_Smart_Data *sd)
E_Fm_Icon_Metadata *m;
m = l->data;
//printf("Saving meta: %d %d\n", m->x, m->y);
printf("Saving meta: %d %d for file %s\n", m->x, m->y, m->name);
}
}

View File

@ -285,6 +285,19 @@ e_icon_canvas_child_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
_e_icon_canvas_move_resize_item(li);
}
EAPI void
e_icon_canvas_child_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
{
E_Icon_Canvas_Item *li;
li = evas_object_data_get(obj, "e_icon_canvas_data");
if(x < 0) x = 0;
if(y < 0) y = 0;
li->x = x;
li->y = y;
_e_icon_canvas_move_resize_item(li);
}
EAPI void
e_icon_canvas_unpack(Evas_Object *obj)
{

View File

@ -16,6 +16,7 @@ EAPI void e_icon_canvas_height_fix (Evas_Object *obj, Evas_Coord
EAPI void e_icon_canvas_pack (Evas_Object *obj, Evas_Object *child, Evas_Object *(*create)(void *data), void (*destroy)(Evas_Object *obj, void *data), void *data);
EAPI void e_icon_canvas_pack_at_location (Evas_Object *obj, Evas_Object *child, Evas_Object *(*create)(void *data), void (*destroy)(Evas_Object *obj, void *data), void *data, Evas_Coord x, Evas_Coord y);
EAPI void e_icon_canvas_child_resize (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
EAPI void e_icon_canvas_child_move (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
EAPI void e_icon_canvas_unpack (Evas_Object *obj);
EAPI void e_icon_canvas_spacing_set (Evas_Object *obj, Evas_Coord xs, Evas_Coord ys);
EAPI void e_icon_canvas_redraw_force (Evas_Object *obj);