diff options
author | Alexander Larsson <alexl@redhat.com> | 2008-01-08 14:27:49 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2008-01-08 14:27:49 +0000 |
commit | 0059140ae5f41fcd33d86027027ee875000c1b28 (patch) | |
tree | 3f4ad15c09436c824e2eeece9ff7f1eb9b6342d1 /libnautilus-private/nautilus-desktop-icon-file.c | |
parent | f0e19cc3172a9779967cd2bf22bdcd4a1a61acda (diff) | |
download | nautilus-0059140ae5f41fcd33d86027027ee875000c1b28.tar.gz |
Implement some missing mount/unmount functionallity. Patch from Tomas
2008-01-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-desktop-icon-file.c:
* libnautilus-private/nautilus-file-operations.c:
* libnautilus-private/nautilus-vfs-file.c:
Implement some missing mount/unmount functionallity.
Patch from Tomas Bzatek <tbzatek@redhat.com>
svn path=/trunk/; revision=13571
Diffstat (limited to 'libnautilus-private/nautilus-desktop-icon-file.c')
-rw-r--r-- | libnautilus-private/nautilus-desktop-icon-file.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/libnautilus-private/nautilus-desktop-icon-file.c b/libnautilus-private/nautilus-desktop-icon-file.c index a988d74ab..b96763b78 100644 --- a/libnautilus-private/nautilus-desktop-icon-file.c +++ b/libnautilus-private/nautilus-desktop-icon-file.c @@ -31,6 +31,7 @@ #include "nautilus-file-attributes.h" #include "nautilus-file-private.h" #include "nautilus-file-utilities.h" +#include "nautilus-file-operations.h" #include <eel/eel-glib-extensions.h> #include "nautilus-desktop-directory.h" #include <glib/gi18n.h> @@ -301,6 +302,43 @@ nautilus_desktop_icon_file_get_link (NautilusDesktopIconFile *icon_file) } static void +nautilus_desktop_icon_file_unmount (NautilusFile *file, + NautilusFileOperationCallback callback, + gpointer callback_data) +{ + NautilusDesktopIconFile *desktop_file; + GMount *mount; + + desktop_file = NAUTILUS_DESKTOP_ICON_FILE (file); + if (desktop_file) { + mount = nautilus_desktop_link_get_mount (desktop_file->details->link); + if (mount != NULL) { + nautilus_file_operations_unmount_mount (NULL, mount, FALSE); + } + } + +} + +static void +nautilus_desktop_icon_file_eject (NautilusFile *file, + NautilusFileOperationCallback callback, + gpointer callback_data) +{ + NautilusDesktopIconFile *desktop_file; + GMount *mount; + + desktop_file = NAUTILUS_DESKTOP_ICON_FILE (file); + if (desktop_file) { + mount = nautilus_desktop_link_get_mount (desktop_file->details->link); + if (mount != NULL) { + nautilus_file_operations_unmount_mount (NULL, mount, TRUE); + } + } +} + + + +static void nautilus_desktop_icon_file_class_init (NautilusDesktopIconFileClass *klass) { GObjectClass *object_class; @@ -320,6 +358,8 @@ nautilus_desktop_icon_file_class_init (NautilusDesktopIconFileClass *klass) file_class->get_deep_counts = desktop_icon_file_get_deep_counts; file_class->get_date = desktop_icon_file_get_date; file_class->get_where_string = desktop_icon_file_get_where_string; + file_class->unmount = nautilus_desktop_icon_file_unmount; + file_class->eject = nautilus_desktop_icon_file_eject; g_type_class_add_private (object_class, sizeof(NautilusDesktopIconFileDetails)); } |