[Goodies-commits] r4660 - xfburn/trunk/xfburn

David Mohr squisher at xfce.org
Wed Apr 23 02:24:44 CEST 2008


Author: squisher
Date: 2008-04-23 00:24:44 +0000 (Wed, 23 Apr 2008)
New Revision: 4660

Modified:
   xfburn/trunk/xfburn/xfburn-device-box.c
   xfburn/trunk/xfburn/xfburn-device-list.c
Log:
Querying thunar for volume changes in device box

Modified: xfburn/trunk/xfburn/xfburn-device-box.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-box.c	2008-04-22 21:54:31 UTC (rev 4659)
+++ xfburn/trunk/xfburn/xfburn-device-box.c	2008-04-23 00:24:44 UTC (rev 4660)
@@ -24,6 +24,10 @@
 #include <gtk/gtk.h>
 #include <libxfce4util/libxfce4util.h>
 
+#ifdef HAVE_THUNAR_VFS
+#include <thunar-vfs/thunar-vfs.h>
+#endif
+
 #include "xfburn-device-list.h"
 #include "xfburn-device-box.h"
 
@@ -81,11 +85,16 @@
 
   GtkWidget *hbox_mode_selection;
   GtkWidget *combo_mode;
+
+#ifdef HAVE_THUNAR_VFS
+  ThunarVfsVolumeManager *thunar_volman;
+#endif
 } XfburnDeviceBoxPrivate;
 
 /* prototypes */
 static void xfburn_device_box_class_init (XfburnDeviceBoxClass *);
 static void xfburn_device_box_init (XfburnDeviceBox *);
+static void xfburn_device_box_finalize (GObject * object);
 static void xfburn_device_box_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
 static void xfburn_device_box_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
 
@@ -93,6 +102,9 @@
 static void cb_speed_refresh_clicked (GtkButton *button, XfburnDeviceBox *box);
 static gboolean check_disc_validity (XfburnDeviceBoxPrivate *priv);
 static void cb_combo_device_changed (GtkComboBox *combo, XfburnDeviceBox *box);
+#ifdef HAVE_THUNAR_VFS
+static void cb_volumes_changed (ThunarVfsVolumeManager *volman, gpointer volumes, XfburnDeviceBox *box);
+#endif
 
 /* globals */
 static GtkVBoxClass *parent_class = NULL;
@@ -136,6 +148,7 @@
 
   parent_class = g_type_class_peek_parent (klass);
   
+  object_class->finalize = xfburn_device_box_finalize;
   object_class->set_property = xfburn_device_box_set_property;
   object_class->get_property = xfburn_device_box_get_property;
   
@@ -262,9 +275,31 @@
 
   g_signal_connect (G_OBJECT (priv->combo_device), "changed", G_CALLBACK (cb_combo_device_changed), box);
   gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_device), 0);
+
+#ifdef HAVE_THUNAR_VFS
+  priv->thunar_volman = thunar_vfs_volume_manager_get_default ();
+  if (priv->thunar_volman != NULL) {
+    g_signal_connect (G_OBJECT (priv->thunar_volman), "volumes-added", G_CALLBACK (cb_volumes_changed), box);
+    g_signal_connect (G_OBJECT (priv->thunar_volman), "volumes-removed", G_CALLBACK (cb_volumes_changed), box);
+  } else {
+    g_warning ("Error trying to access the thunar-vfs-volume-manager!");
+  }
+#endif
 }
 
 static void
+xfburn_device_box_finalize (GObject * object)
+{
+  XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (object);
+
+#ifdef HAVE_THUNAR_VFS
+  g_object_unref (priv->thunar_volman);
+#endif
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
 xfburn_device_box_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
 {
   XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (object);
@@ -492,6 +527,16 @@
   g_signal_emit (G_OBJECT (box), signals[DEVICE_CHANGED], 0, device);
 }
 
+#ifdef HAVE_THUNAR_VFS
+static void
+cb_volumes_changed (ThunarVfsVolumeManager *volman, gpointer volumes, XfburnDeviceBox *box)
+{
+  DBG ("Volume change!");
+  usleep (1000001);
+  cb_speed_refresh_clicked (NULL, box);
+}
+#endif
+
 /******************/
 /* public methods */
 /******************/

Modified: xfburn/trunk/xfburn/xfburn-device-list.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-list.c	2008-04-22 21:54:31 UTC (rev 4659)
+++ xfburn/trunk/xfburn/xfburn-device-list.c	2008-04-23 00:24:44 UTC (rev 4660)
@@ -279,7 +279,7 @@
   }
 
   for (i=0; i<max_checks; i++) {
-    ret = burn_drive_scan_and_grab (drive_info, drive_addr, 1);
+    ret = burn_drive_scan_and_grab (drive_info, drive_addr, 0);
     if (ret > 0)
       break;
     else if  (i < (max_checks-1))




More information about the Goodies-commits mailing list