Add g_unix_mount_guess_should_display and use for unix volume monitor
authorAlexander Larsson <alexl@redhat.com>
Wed, 9 Jan 2008 15:45:56 +0000 (15:45 +0000)
committerAlexander Larsson <alexl@src.gnome.org>
Wed, 9 Jan 2008 15:45:56 +0000 (15:45 +0000)
2008-01-09  Alexander Larsson  <alexl@redhat.com>

        * 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
gio/gio.symbols
gio/gunixmount.c
gio/gunixmounts.c
gio/gunixmounts.h

index 48c8ac6..cb09c5c 100644 (file)
@@ -1,6 +1,17 @@
 2008-01-09  Alexander Larsson  <alexl@redhat.com>
 
         * 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  <alexl@redhat.com>
+
+        * gio.symbols:
         * gthemedicon.[ch]:
         Add g_themed_icon_new_with_default_fallbacks
        
index 5d93b52..efa5d60 100644 (file)
@@ -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 
index 11b6254..6051164 100644 (file)
@@ -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);
index 361c031..0943220 100644 (file)
@@ -1831,6 +1831,40 @@ g_unix_mount_guess_can_eject (GUnixMountEntry *mount_entry)
 }
 
 /**
+ * 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
  * 
index ced5dd1..6147f12 100644 (file)
@@ -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);