summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-desktop-icon-file.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2008-01-08 14:27:49 +0000
committerAlexander Larsson <alexl@src.gnome.org>2008-01-08 14:27:49 +0000
commit0059140ae5f41fcd33d86027027ee875000c1b28 (patch)
tree3f4ad15c09436c824e2eeece9ff7f1eb9b6342d1 /libnautilus-private/nautilus-desktop-icon-file.c
parentf0e19cc3172a9779967cd2bf22bdcd4a1a61acda (diff)
downloadnautilus-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.c40
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));
}