[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