Ephoto: Put some file monitoring in place to keep the single image view updated. More to come for thumbnail view/file selector.
This commit is contained in:
parent
f89b553bd0
commit
f0369df28b
|
@ -38,12 +38,14 @@ struct _Ephoto_Single_Browser
|
||||||
|
|
||||||
struct _Ephoto_Viewer
|
struct _Ephoto_Viewer
|
||||||
{
|
{
|
||||||
|
Ecore_File_Monitor *monitor;
|
||||||
Evas_Object *scroller;
|
Evas_Object *scroller;
|
||||||
Evas_Object *table;
|
Evas_Object *table;
|
||||||
Evas_Object *image;
|
Evas_Object *image;
|
||||||
double zoom;
|
double zoom;
|
||||||
Eina_Bool fit:1;
|
Eina_Bool fit:1;
|
||||||
Eina_Bool zoom_first:1;
|
Eina_Bool zoom_first:1;
|
||||||
|
Eina_Bool modified:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void _zoom_set(Ephoto_Single_Browser *sb, double zoom);
|
static void _zoom_set(Ephoto_Single_Browser *sb, double zoom);
|
||||||
|
@ -58,10 +60,29 @@ _viewer_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Viewer *v = data;
|
Ephoto_Viewer *v = data;
|
||||||
|
if (v->monitor)
|
||||||
|
ecore_file_monitor_del(v->monitor);
|
||||||
free(v);
|
free(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_viewer_monitor(void *data, Ecore_File_Monitor *em EINA_UNUSED,
|
||||||
|
Ecore_File_Event event, const char *path)
|
||||||
|
{
|
||||||
|
Ephoto_Single_Browser *sb = data;
|
||||||
|
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
|
||||||
|
|
||||||
|
if (!ecore_file_exists(path))
|
||||||
|
ephoto_entry_free(sb->ephoto, sb->entry);
|
||||||
|
else if (event == ECORE_FILE_EVENT_MODIFIED)
|
||||||
|
v->modified = EINA_TRUE;
|
||||||
|
else if (event == ECORE_FILE_EVENT_CLOSED && v->modified == EINA_TRUE)
|
||||||
|
{
|
||||||
|
ephoto_single_browser_entry_set(sb->main, sb->entry);
|
||||||
|
v->modified = EINA_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
_image_create_icon(void *data, Evas_Object *parent, Evas_Coord *xoff,
|
_image_create_icon(void *data, Evas_Object *parent, Evas_Coord *xoff,
|
||||||
Evas_Coord *yoff)
|
Evas_Coord *yoff)
|
||||||
|
@ -210,6 +231,9 @@ _viewer_add(Evas_Object *parent, const char *path, Ephoto_Single_Browser *sb)
|
||||||
elm_image_animated_play_set(v->image, EINA_TRUE);
|
elm_image_animated_play_set(v->image, EINA_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
v->monitor = ecore_file_monitor_add(path, _viewer_monitor, sb);
|
||||||
|
|
||||||
return v->scroller;
|
return v->scroller;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -1803,7 +1827,6 @@ _delete_apply(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
elm_object_focus_set(sb->event, EINA_TRUE);
|
elm_object_focus_set(sb->event, EINA_TRUE);
|
||||||
evas_object_freeze_events_set(sb->event, EINA_FALSE);
|
evas_object_freeze_events_set(sb->event, EINA_FALSE);
|
||||||
}
|
}
|
||||||
ephoto_entry_free(sb->ephoto, sb->entry);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue