[Xfce4-commits] [apps/xfburn] 01/02: storing revision information in XfburnDevice

noreply at xfce.org noreply at xfce.org
Mon Jan 27 21:36:34 CET 2020


This is an automated email from the git hooks/post-receive script.

k   a   t   a   n   a   s   t   e   e   l       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository apps/xfburn.

commit 8a0b79767b252e5fbdcbffe48b4a0f9fb33b37e6
Author: Rene Kjellerup <rk.katana.steel at gmail.com>
Date:   Sun Dec 29 21:59:28 2019 -0800

    storing revision information in XfburnDevice
    
    for implementing feature request from bug #14467
    
    using sysfs via gudev if available
    or from libburn otherwise
---
 xfburn/xfburn-device-list.c        |  9 +++++++--
 xfburn/xfburn-device.c             | 11 +++++++++++
 xfburn/xfburn-preferences-dialog.c | 17 +++++++++++------
 xfburn/xfburn-udev-manager.c       |  9 +++++++--
 4 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/xfburn/xfburn-device-list.c b/xfburn/xfburn-device-list.c
index 84b676d..f1995dc 100644
--- a/xfburn/xfburn-device-list.c
+++ b/xfburn/xfburn-device-list.c
@@ -276,9 +276,14 @@ get_libburn_device_list (XfburnDeviceList *devlist)
   for (i = 0; i < priv->num_drives; i++) {
     XfburnDevice *device = xfburn_device_new ();
     const gchar *name;
-    char addr[BURN_DRIVE_ADR_LEN];;
-    
+    char addr[BURN_DRIVE_ADR_LEN];
+    char rev[5];
+
     name = xfburn_device_set_name (device, drives[i].vendor, drives[i].product);
+    strncpy (rev, drives[i].revision, 5);
+    rev[5] = '\0';
+
+    g_object_set (device, "revision", rev, NULL);
 
     xfburn_device_fillin_libburn_info (device, &drives[i]);
 
diff --git a/xfburn/xfburn-device.c b/xfburn/xfburn-device.c
index 8d9b546..c40674d 100644
--- a/xfburn/xfburn-device.c
+++ b/xfburn/xfburn-device.c
@@ -33,6 +33,7 @@ enum {
   PROP_0,
   PROP_NAME,
   PROP_ADDRESS,
+  PROP_REVISION,
   PROP_ACCESSIBLE,
   PROP_SUPPORTED_SPEEDS,
   PROP_DISC_STATUS,
@@ -65,6 +66,7 @@ typedef struct _XfburnDevicePrivate XfburnDevicePrivate;
 struct _XfburnDevicePrivate {
   gchar *name;
   gchar *addr;
+  gchar *rev;
   gboolean details_known;
 
   gint buffer_size;
@@ -108,6 +110,9 @@ xfburn_device_get_property (GObject *object, guint property_id,
     case PROP_ADDRESS:
       g_value_set_string (value, priv->addr);
       break;
+    case PROP_REVISION:
+      g_value_set_string (value, priv->rev);
+      break;
     case PROP_SUPPORTED_SPEEDS:
       g_value_set_pointer (value, priv->supported_speeds);
       break;
@@ -171,6 +176,9 @@ xfburn_device_set_property (GObject *object, guint property_id,
     case PROP_ADDRESS:
       priv->addr = g_value_dup_string (value);
       break;
+    case PROP_REVISION:
+      priv->rev = g_value_dup_string (value);
+      break;
     case PROP_SUPPORTED_SPEEDS:
       priv->supported_speeds = g_value_get_pointer (value);
       break;
@@ -249,6 +257,9 @@ xfburn_device_class_init (XfburnDeviceClass *klass)
   g_object_class_install_property (object_class, PROP_ADDRESS, 
                                    g_param_spec_string ("address", _("Device address"),
                                                         _("Device address"), "", G_PARAM_READWRITE));
+  g_object_class_install_property (object_class, PROP_REVISION, 
+                                   g_param_spec_string ("revision", _("Device revision"),
+                                                        _("Device Revision"), "", G_PARAM_READWRITE));
   g_object_class_install_property (object_class, PROP_SUPPORTED_SPEEDS, 
                                    g_param_spec_pointer ("supported-speeds", _("Burn speeds supported by the device"),
                                                         _("Burn speeds supported by the device"), G_PARAM_READABLE));
diff --git a/xfburn/xfburn-preferences-dialog.c b/xfburn/xfburn-preferences-dialog.c
index 1d46b9c..d2720b2 100644
--- a/xfburn/xfburn-preferences-dialog.c
+++ b/xfburn/xfburn-preferences-dialog.c
@@ -67,6 +67,7 @@ enum
 {
   DEVICE_LIST_COLUMN_ICON,
   DEVICE_LIST_COLUMN_NAME,
+  DEVICE_LIST_COLUMN_REV,
   DEVICE_LIST_COLUMN_NODE,
   DEVICE_LIST_COLUMN_CDR,
   DEVICE_LIST_COLUMN_CDRW,
@@ -227,7 +228,7 @@ xfburn_preferences_dialog_init (XfburnPreferencesDialog * obj)
   gtk_widget_show (scrolled_window);
   gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window, TRUE, TRUE, BORDER);
 
-  store = gtk_list_store_new (DEVICE_LIST_N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,
+  store = gtk_list_store_new (DEVICE_LIST_N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
                               G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
                               G_TYPE_BOOLEAN);
   priv->treeview_devices = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
@@ -252,6 +253,8 @@ xfburn_preferences_dialog_init (XfburnPreferencesDialog * obj)
   gtk_tree_view_column_set_attributes (column_name, cell_name, "text", DEVICE_LIST_COLUMN_NAME, NULL);
 
   gtk_tree_view_append_column (GTK_TREE_VIEW (priv->treeview_devices), column_name);
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (priv->treeview_devices), -1, _("Revision"),
+                                               gtk_cell_renderer_text_new (), "text", DEVICE_LIST_COLUMN_REV, NULL);
   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (priv->treeview_devices), -1, _("Node"),
                                                gtk_cell_renderer_text_new (), "text", DEVICE_LIST_COLUMN_NODE, NULL);
   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (priv->treeview_devices), -1, _("Write CD-R"),
@@ -417,28 +420,30 @@ refresh_devices_list (XfburnPreferencesDialog * dialog)
   while (device) {
     GtkTreeIter iter;
     XfburnDevice *device_data;
-    gchar *name, *addr;
+    gchar *name, *addr, *rev;
     gboolean cdr, cdrw, dvdr, dvdram, bd;
 
     device_data = (XfburnDevice *) device->data;
 
     g_object_get (G_OBJECT (device_data), "name", &name, "address", &addr,
-                  "cdr", &cdr, "cdrw", &cdrw, "dvdr", &dvdr, "dvdram", &dvdram,
-                  "bd", &bd, NULL);
+                  "revision", &rev, "cdr", &cdr, "cdrw", &cdrw, "dvdr", &dvdr,
+                  "dvdram", &dvdram, "bd", &bd, NULL);
 
     gtk_list_store_append (GTK_LIST_STORE (model), &iter);
     gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                         DEVICE_LIST_COLUMN_NAME, name,
+                        DEVICE_LIST_COLUMN_REV, rev,
                         DEVICE_LIST_COLUMN_NODE, addr,
                         DEVICE_LIST_COLUMN_CDR, cdr,
                         DEVICE_LIST_COLUMN_CDRW, cdrw,
-                        DEVICE_LIST_COLUMN_DVDR, dvdr, 
-                        DEVICE_LIST_COLUMN_DVDRAM, dvdram, 
+                        DEVICE_LIST_COLUMN_DVDR, dvdr,
+                        DEVICE_LIST_COLUMN_DVDRAM, dvdram,
                         DEVICE_LIST_COLUMN_BD, bd,
                         -1);
 
     g_free (name);
     g_free (addr);
+    g_free (rev);
 
     device = g_list_next (device);
   }
diff --git a/xfburn/xfburn-udev-manager.c b/xfburn/xfburn-udev-manager.c
index 0d84b3e..2e65a32 100644
--- a/xfburn/xfburn-udev-manager.c
+++ b/xfburn/xfburn-udev-manager.c
@@ -232,7 +232,7 @@ xfburn_udev_manager_get_devices (XfburnUdevManager *udevman, gint *drives, gint
 
       if (cdr || dvdr || dvdram || bdr) {
         XfburnDevice *device;
-        const gchar *addr, *name, *str_model, *str_vendor; 
+        const gchar *addr, *name, *rev, *str_model, *str_vendor;
 
         device = xfburn_device_new ();
 
@@ -253,9 +253,14 @@ xfburn_udev_manager_get_devices (XfburnUdevManager *udevman, gint *drives, gint
           str_model = g_udev_device_get_property (l->data, "ID_MODEL");
         if (str_model == NULL)
           str_model = g_udev_device_get_sysfs_attr (l->data, "product");
-							
+
         name = xfburn_device_set_name (device, str_vendor, str_model);
 
+        /* revision */
+	rev = g_udev_device_get_sysfs_attr(l->data, "device/rev");
+        if (rev != NULL)
+            g_object_set (G_OBJECT (device), "revision", rev, NULL);
+
         addr = g_udev_device_get_device_file(l->data);
 #ifdef DEBUG_NULL_DEVICE
         g_object_set (G_OBJECT (device), "address", "stdio:/dev/null", NULL);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list