From: Matthias Clasen Date: Fri, 25 Jan 2008 04:16:48 +0000 (+0000) Subject: More trash info X-Git-Tag: GLIB_2_15_4~32 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c3d7de68597595911d43e1337e810466db296bb0;p=platform%2Fupstream%2Fglib.git More trash info svn path=/trunk/; revision=6369 --- diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index c33f7f226..c830fef10 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,7 @@ +2008-01-24 Matthias Clasen + + * gio/migration.xml: Some more + 2008-01-23 Matthias Clasen * gio/migration.xml: Add something on trash handling diff --git a/docs/reference/gio/migrating.xml b/docs/reference/gio/migrating.xml index 8b1b2549c..c4c29214f 100644 --- a/docs/reference/gio/migrating.xml +++ b/docs/reference/gio/migrating.xml @@ -59,20 +59,60 @@ The handling of trashed files has been changed in GIO, compared to gnome-vfs. gnome-vfs has a home-grown trash implementation that predates the freedesktop.org Desktop Trash Can specification - that is implemented in GIO. - - - Both systems support a the trash:// scheme to - access a merged view of all trashed files, but the location for - storing trashed files has changed from $HOME/.Trash - to $HOME/.local/share/Trash (or more correctly - $XDG_DATA_HOME/Trash), which means that + that is implemented in GIO. The location for storing trashed files + has changed from $HOME/.Trash to + $HOME/.local/share/Trash (or more correctly + $XDG_DATA_HOME/Trash), which means that there is a need for migrating files that have been trashed by gnome-vfs to the new location. + + In gnome-vfs, the trash:// scheme offering a + merged view of all trash directories was implemented in nautilus, + and trash-handling applications had to find and monitor all trash + directories themselves. With GIO, the trash:// + implementation has been moved to gvfs and applications can simply + monitor that location: + + +static void +file_changed (GFileMonitor *file_monitor, + GFile *child, + GFile *other_file, + GFileMonitorEvent event_type, + gpointer user_data) +{ + switch (event_type) + { + case G_FILE_MONITOR_EVENT_DELETED: + g_print ("'%s' removed from trash\n", g_file_get_basename (child)); + break; + case G_FILE_MONITOR_EVENT_CREATED: + g_print ("'%s' added to trash\n", g_file_get_basename (child)); + break; + default: ; + } +} + +static void +start_monitoring_trash (void) +{ + GFile *file; + GFileMonitor *monitor; + + file = g_file_new_for_uri ("trash://"); + monitor = g_file_monitor_directory (file, 0, NULL, NULL); + g_object_unref (file); + + g_signal_connect (monitor, "changed", G_CALLBACK (file_changed), NULL); + + /* ... */ + +} + GIO exposes some useful metadata about trashed files. There are - trash::orig-path and tash::deletion-date attributes. The + trash::orig-path and trash::deletion-date attributes. The standard::icon attribute of the trash:// itself provides a suitable icon for displaying the trash can on the desktop. If you are using this icon, make sure to monitor @@ -97,7 +137,8 @@ GIO offers a much simpler I/O scheduler functionality instead, that - lets you schedule a function to be called in a separate thread. + lets you schedule a function to be called in a separate thread, or + if threads are not available, as an idle in the mainloop. See g_io_scheduler_push_job().