[gnome-control-center/info-show-hardware-name] info-overview: Add hardware name (product_family)



commit 1fe06d89a4e27083812502968da4d42978335c21
Author: Felipe Borges <felipeborges gnome org>
Date:   Wed Mar 11 11:31:21 2020 +0100

    info-overview: Add hardware name (product_family)
    
    Showing the product_family helps hardware vendors debug user problems.
    
    See https://teams.fedoraproject.org/project/silverblue/us/127

 panels/info-overview/cc-info-overview-panel.c  | 21 +++++++++++++++++++++
 panels/info-overview/cc-info-overview-panel.ui |  9 +++++++++
 2 files changed, 30 insertions(+)
---
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index af04dc660..e1906ef7e 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -62,6 +62,7 @@ struct _CcInfoOverviewPanel
   CcListRow       *disk_row;
   CcListRow       *gnome_version_row;
   CcListRow       *graphics_row;
+  CcListRow       *hardware_name_row;
   GtkListBox      *hardware_box;
   GtkDialog       *hostname_editor;
   CcHostnameEntry *hostname_entry;
@@ -408,6 +409,21 @@ get_graphics_hardware_string (void)
   return g_strdup (renderer);
 }
 
+static gchar *
+get_hardware_name_string (void)
+{
+  gchar *product_family = NULL;
+  g_autoptr(GError) error = NULL;
+
+  if (!g_file_get_contents ("/sys/devices/virtual/dmi/id/product_family", &product_family, NULL, &error))
+    {
+      if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
+        return NULL;
+    }
+
+  return g_strchomp (product_family);
+}
+
 static char *
 get_os_name (void)
 {
@@ -683,6 +699,7 @@ info_overview_panel_setup_overview (CcInfoOverviewPanel *self)
   g_autofree char *os_type_text = NULL;
   g_autofree char *os_name_text = NULL;
   g_autofree gchar *graphics_hardware_string = NULL;
+  g_autofree gchar *hardware_name_string = NULL;
 
   if (load_gnome_version (&gnome_version, NULL, NULL))
     cc_list_row_set_secondary_label (self->gnome_version_row, gnome_version);
@@ -708,6 +725,9 @@ info_overview_panel_setup_overview (CcInfoOverviewPanel *self)
 
   graphics_hardware_string = get_graphics_hardware_string ();
   cc_list_row_set_secondary_markup (self->graphics_row, graphics_hardware_string);
+
+  hardware_name_string = get_hardware_name_string ();
+  cc_list_row_set_secondary_markup (self->hardware_name_row, hardware_name_string);
 }
 
 static gboolean
@@ -811,6 +831,7 @@ cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, gnome_version_row);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, graphics_row);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, hardware_box);
+  gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, hardware_name_row);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, hostname_editor);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, hostname_entry);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, hostname_row);
diff --git a/panels/info-overview/cc-info-overview-panel.ui b/panels/info-overview/cc-info-overview-panel.ui
index de377bb69..7a68a5653 100644
--- a/panels/info-overview/cc-info-overview-panel.ui
+++ b/panels/info-overview/cc-info-overview-panel.ui
@@ -68,6 +68,15 @@
                       <class name="frame" />
                     </style>
 
+                    <!-- Hardware name -->
+                    <child>
+                      <object class="CcListRow" id="hardware_name_row">
+                        <property name="visible">True</property>
+                        <property name="activatable">False</property>
+                        <property name="title" translatable="yes">Hardware name</property>
+                      </object>
+                    </child>
+
                     <!-- Memory -->
                     <child>
                       <object class="CcListRow" id="memory_row">


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]