[gnome-control-center] info-overview: Implements usage of os-release to search for the OS logo



commit f39cd5a93b0dcddda9911586820ed55bbbe2eb3d
Author: Javier Fernández <jfernandz1290 gmail com>
Date:   Sat Dec 19 21:53:24 2020 +0100

    info-overview: Implements usage of os-release to search for the OS logo
    
    By default info-overview panel shows the Gnome logo from a static
    resource, currently every distro patches this component to show their logos
    
    info-overview panel could use `/etc/os-release` file to fetch the OS logo
    instead this static resource

 panels/info-overview/cc-info-overview-panel.c  | 19 +++++++++++++++++++
 panels/info-overview/cc-info-overview-panel.ui |  3 +--
 2 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index f0e554114..bd0e07762 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -69,6 +69,7 @@ struct _CcInfoOverviewPanel
   CcListRow       *hostname_row;
   CcListRow       *memory_row;
   GtkListBox      *os_box;
+  GtkImage        *os_logo;
   CcListRow       *os_name_row;
   CcListRow       *os_type_row;
   CcListRow       *processor_row;
@@ -865,6 +866,21 @@ cc_info_panel_row_activated_cb (CcInfoOverviewPanel *self,
     open_software_update (self);
 }
 
+static void
+setup_os_logo (CcInfoOverviewPanel *panel)
+{
+  g_autofree char *logo_name = g_get_os_info ("LOGO");
+  if (logo_name != NULL)
+    {
+      gtk_image_set_from_icon_name (panel->os_logo, logo_name, GTK_ICON_SIZE_INVALID);
+      gtk_image_set_pixel_size (panel->os_logo, 256);
+    }
+  else
+    {
+      gtk_image_set_from_resource (panel->os_logo, 
"/org/gnome/control-center/info-overview/GnomeLogoVerticalMedium.svg");
+    }
+}
+
 static void
 cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
 {
@@ -883,6 +899,7 @@ cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, hostname_row);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, memory_row);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, os_box);
+  gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, os_logo);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, os_name_row);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, os_type_row);
   gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, processor_row);
@@ -912,6 +929,8 @@ cc_info_overview_panel_init (CcInfoOverviewPanel *self)
 
   info_overview_panel_setup_overview (self);
   info_overview_panel_setup_virt (self);
+
+  setup_os_logo (self);
 }
 
 GtkWidget *
diff --git a/panels/info-overview/cc-info-overview-panel.ui b/panels/info-overview/cc-info-overview-panel.ui
index 24e419fa4..2f5d3cf8b 100644
--- a/panels/info-overview/cc-info-overview-panel.ui
+++ b/panels/info-overview/cc-info-overview-panel.ui
@@ -25,10 +25,9 @@
                 <property name="spacing">30</property>
                 <property name="orientation">vertical</property>
                 <child>
-                  <object class="GtkImage">
+                  <object class="GtkImage" id="os_logo">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property 
name="resource">/org/gnome/control-center/info-overview/GnomeLogoVerticalMedium.svg</property>
                   </object>
                   <packing>
                     <property name="expand">False</property>


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