From 896ebed1a57623ec5e0b08ba2bec3e37c1c88d41 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 9 Jan 2008 15:45:56 +0000 Subject: [PATCH] Add g_unix_mount_guess_should_display and use for unix volume monitor 2008-01-09 Alexander Larsson * gio.symbols: * gunixmount.c: * gunixmounts.[ch]: Add g_unix_mount_guess_should_display and use for unix volume monitor backend. This means we more or less show what the gnome-vfs backend did. Based on patch from Padraig O'Briain svn path=/trunk/; revision=6285 --- gio/ChangeLog | 11 +++++++++++ gio/gio.symbols | 1 + gio/gunixmount.c | 2 +- gio/gunixmounts.c | 34 ++++++++++++++++++++++++++++++++++ gio/gunixmounts.h | 1 + 5 files changed, 48 insertions(+), 1 deletion(-) diff --git a/gio/ChangeLog b/gio/ChangeLog index 48c8ac6a..cb09c5c2 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,3 +1,14 @@ +2008-01-09 Alexander Larsson + + * gio.symbols: + * gunixmount.c: + * gunixmounts.[ch]: + Add g_unix_mount_guess_should_display and use + for unix volume monitor backend. + This means we more or less show what the + gnome-vfs backend did. + Based on patch from Padraig O'Briain + 2008-01-09 Alexander Larsson * gio.symbols: diff --git a/gio/gio.symbols b/gio/gio.symbols index 5d93b526..efa5d607 100644 --- a/gio/gio.symbols +++ b/gio/gio.symbols @@ -628,6 +628,7 @@ g_unix_mount_get_fs_type g_unix_mount_is_readonly g_unix_mount_is_system_internal g_unix_mount_guess_can_eject +g_unix_mount_guess_should_display g_unix_mount_guess_name g_unix_mount_guess_icon g_unix_mount_point_compare diff --git a/gio/gunixmount.c b/gio/gunixmount.c index 11b6254a..60511640 100644 --- a/gio/gunixmount.c +++ b/gio/gunixmount.c @@ -108,7 +108,7 @@ _g_unix_mount_new (GVolumeMonitor *volume_monitor, GUnixMount *mount; /* No volume for mount: Ignore internal things */ - if (volume == NULL && g_unix_mount_is_system_internal (mount_entry)) + if (volume == NULL && !g_unix_mount_guess_should_display (mount_entry)) return NULL; mount = g_object_new (G_TYPE_UNIX_MOUNT, NULL); diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c index 361c0318..0943220b 100644 --- a/gio/gunixmounts.c +++ b/gio/gunixmounts.c @@ -1830,6 +1830,40 @@ g_unix_mount_guess_can_eject (GUnixMountEntry *mount_entry) return FALSE; } +/** + * g_unix_mount_guess_should_display: + * @mount_entry: a #GUnixMountEntry + * + * Guesses whether a Unix mount should be displayed in the UI. + * + * Returns: %TRUE if @mount_entry is deemed to be displayable. + */ +gboolean +g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry) +{ + GUnixMountType guessed_type; + + /* Never display internal mountpoints */ + if (g_unix_mount_is_system_internal (mount_entry)) + return FALSE; + + /* Only display things that look "removable" or + things in /media (which are generally user mountable) */ + guessed_type = g_unix_mount_guess_type (mount_entry); + if (guessed_type == G_UNIX_MOUNT_TYPE_IPOD || + guessed_type == G_UNIX_MOUNT_TYPE_CDROM || + guessed_type == G_UNIX_MOUNT_TYPE_FLOPPY || + guessed_type == G_UNIX_MOUNT_TYPE_ZIP || + guessed_type == G_UNIX_MOUNT_TYPE_JAZ || + guessed_type == G_UNIX_MOUNT_TYPE_CAMERA || + guessed_type == G_UNIX_MOUNT_TYPE_MEMSTICK || + (mount_entry->mount_path != NULL && + g_str_has_prefix (mount_entry->mount_path, "/media"))) + return TRUE; + + return FALSE; +} + /** * g_unix_mount_point_guess_can_eject: * @mount_point: a #GUnixMountPoint diff --git a/gio/gunixmounts.h b/gio/gunixmounts.h index ced5dd12..6147f122 100644 --- a/gio/gunixmounts.h +++ b/gio/gunixmounts.h @@ -67,6 +67,7 @@ const char * g_unix_mount_get_fs_type (GUnixMountEntry *mount_e gboolean g_unix_mount_is_readonly (GUnixMountEntry *mount_entry); gboolean g_unix_mount_is_system_internal (GUnixMountEntry *mount_entry); gboolean g_unix_mount_guess_can_eject (GUnixMountEntry *mount_entry); +gboolean g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry); char * g_unix_mount_guess_name (GUnixMountEntry *mount_entry); GIcon * g_unix_mount_guess_icon (GUnixMountEntry *mount_entry); -- 2.34.1