From 858adbac9dce63da52764b2d2157bc7782b304a5 Mon Sep 17 00:00:00 2001 From: Ayan George Date: Thu, 23 Jun 2011 13:27:06 -0400 Subject: [PATCH] =?utf8?q?Bug=2038535=20=E2=80=93=20A=20DeviceAutoMountHin?= =?utf8?q?t=20attribute=20should=20be=20added=20to=20udisks?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit With minor changes by David Zeuthen, see the bug for details. https://bugs.freedesktop.org/show_bug.cgi?id=38535 Signed-off-by: David Zeuthen --- data/org.freedesktop.UDisks.Device.xml | 20 ++++++++++++++++++++ src/device-private.c | 12 ++++++++++++ src/device-private.h | 2 ++ src/device.c | 20 ++++++++++++++++++++ 4 files changed, 54 insertions(+) diff --git a/data/org.freedesktop.UDisks.Device.xml b/data/org.freedesktop.UDisks.Device.xml index 991976d..cdf6176 100644 --- a/data/org.freedesktop.UDisks.Device.xml +++ b/data/org.freedesktop.UDisks.Device.xml @@ -1691,6 +1691,26 @@ + + + A hint to the desktop that indicates if a device should be automounted. + Possible values are: + + + always + Device should always be auto-mounted. + + + never + Device should never be auto-mounted. + + + An empty string is interpreted to mean that there is no + hint - the desktop auto-mounter should make its own + decision of whether to auto-mount the device. + + + The job properties specify if a job initiated via the diff --git a/src/device-private.c b/src/device-private.c index 22a0d35..53196f3 100644 --- a/src/device-private.c +++ b/src/device-private.c @@ -109,6 +109,18 @@ ptr_str_array_from_strv (GStrv s) } void +device_set_device_auto_mount_hint (Device *device, + const gchar *value) +{ + if (G_UNLIKELY (g_strcmp0 (device->priv->device_auto_mount_hint, value) != 0)) + { + g_free (device->priv->device_auto_mount_hint); + device->priv->device_auto_mount_hint = g_strdup (value); + emit_changed (device, "device_auto_mount_hint"); + } +} + +void device_set_device_detection_time (Device *device, guint64 value) { diff --git a/src/device-private.h b/src/device-private.h index e519083..f331ddc 100644 --- a/src/device-private.h +++ b/src/device-private.h @@ -133,6 +133,7 @@ struct DevicePrivate gboolean device_presentation_nopolicy; char *device_presentation_name; char *device_presentation_icon_name; + char *device_auto_mount_hint; char *id_usage; char *id_type; @@ -253,6 +254,7 @@ void device_set_job_initiated_by_uid (Device *device, guint value); void device_set_job_is_cancellable (Device *device, gboolean value); void device_set_job_percentage (Device *device, gdouble value); +void device_set_device_auto_mount_hint (Device *device, const gchar *value); void device_set_device_detection_time (Device *device, guint64 value); void device_set_device_media_detection_time (Device *device, guint64 value); void device_set_device_file (Device *device, const gchar *value); diff --git a/src/device.c b/src/device.c index c4b4ab3..e39208d 100644 --- a/src/device.c +++ b/src/device.c @@ -177,6 +177,7 @@ enum PROP_0, PROP_NATIVE_PATH, + PROP_DEVICE_AUTOMOUNT_HINT, PROP_DEVICE_DETECTION_TIME, PROP_DEVICE_MEDIA_DETECTION_TIME, PROP_DEVICE_MAJOR, @@ -381,6 +382,9 @@ get_property (GObject *object, case PROP_DEVICE_FILE: g_value_set_string (value, device->priv->device_file); break; + case PROP_DEVICE_AUTOMOUNT_HINT: + g_value_set_string (value, device->priv->device_auto_mount_hint); + break; case PROP_DEVICE_FILE_PRESENTATION: if (device->priv->device_file_presentation != NULL) g_value_set_string (value, device->priv->device_file_presentation); @@ -864,6 +868,15 @@ device_class_init (DeviceClass *klass) NULL, NULL, G_PARAM_READABLE)); + + g_object_class_install_property (object_class, + PROP_DEVICE_AUTOMOUNT_HINT, + g_param_spec_string ("device-auto-mount-hint", + NULL, + NULL, + NULL, + G_PARAM_READABLE)); + g_object_class_install_property (object_class, PROP_DEVICE_DETECTION_TIME, g_param_spec_uint64 ("device-detection-time", @@ -2278,6 +2291,7 @@ update_info_presentation (Device *device) { gboolean hide; gboolean nopolicy; + const gchar *auto_mount_hint; hide = FALSE; if (g_udev_device_has_property (device->priv->d, "UDISKS_PRESENTATION_HIDE")) @@ -2294,6 +2308,12 @@ update_info_presentation (Device *device) device_set_device_presentation_icon_name (device, g_udev_device_get_property (device->priv->d, "UDISKS_PRESENTATION_ICON_NAME")); + auto_mount_hint = ""; + if (g_udev_device_has_property (device->priv->d, "UDISKS_AUTOMOUNT_HINT")) + auto_mount_hint = g_udev_device_get_property (device->priv->d, "UDISKS_AUTOMOUNT_HINT"); + + device_set_device_auto_mount_hint (device, auto_mount_hint); + return TRUE; } -- 2.7.4