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 48c8ac6a3d21a1ef8f4658199e22073fe0d7ea92..cb09c5c20aec1291f96e98cae6366ae014781167 100644 (file)
@@ -1,3 +1,14 @@
+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:
index 5d93b5264aad1861ad8de99961e045d0db7c24ec..efa5d607845c5578e90d3b073826aef46334b73e 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 11b6254a983ebc0f11f774e8eac584f430817b6a..60511640e64a5993e44d075f884c7ad5fa6fa3f8 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 361c0318b736a1c868c2d98637c2c585ad6de55f..0943220b2df85b079ba529b0e0ebdd5bc0bf59c6 100644 (file)
@@ -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
index ced5dd126c93380f8e2d76f7a87f6b1e4ebc2220..6147f122a2edc5053a714c75757334327aac88cc 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);