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
This commit is contained in:
Javier Fernández 2020-12-19 21:53:24 +01:00
parent cbb2d31a38
commit f39cd5a93b
2 changed files with 20 additions and 2 deletions

View file

@ -69,6 +69,7 @@ struct _CcInfoOverviewPanel
CcListRow *hostname_row; CcListRow *hostname_row;
CcListRow *memory_row; CcListRow *memory_row;
GtkListBox *os_box; GtkListBox *os_box;
GtkImage *os_logo;
CcListRow *os_name_row; CcListRow *os_name_row;
CcListRow *os_type_row; CcListRow *os_type_row;
CcListRow *processor_row; CcListRow *processor_row;
@ -865,6 +866,21 @@ cc_info_panel_row_activated_cb (CcInfoOverviewPanel *self,
open_software_update (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 static void
cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass) 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, hostname_row);
gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, memory_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_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_name_row);
gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, os_type_row); gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, os_type_row);
gtk_widget_class_bind_template_child (widget_class, CcInfoOverviewPanel, processor_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_overview (self);
info_overview_panel_setup_virt (self); info_overview_panel_setup_virt (self);
setup_os_logo (self);
} }
GtkWidget * GtkWidget *

View file

@ -25,10 +25,9 @@
<property name="spacing">30</property> <property name="spacing">30</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkImage"> <object class="GtkImage" id="os_logo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="resource">/org/gnome/control-center/info-overview/GnomeLogoVerticalMedium.svg</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>