[gnome-control-center/wip/hadess/version-xml: 1/2] info-overview: Load GNOME version from gnome-shell




commit ad7072cc978ec6bca0c5204e4d2c4acf753fc3bc
Author: Bastien Nocera <hadess hadess net>
Date:   Wed May 4 09:54:34 2022 +0200

    info-overview: Load GNOME version from gnome-shell
    
    See https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5406

 panels/info-overview/cc-info-overview-panel.c | 46 +++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)
---
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index d2fc3cf0f..627006dc7 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -745,6 +745,41 @@ get_ram_size_dmi (void)
   return ram_total;
 }
 
+static void
+shell_proxy_ready (GObject             *source,
+                   GAsyncResult        *res,
+                   CcInfoOverviewPanel *self)
+{
+  g_autoptr(GDBusProxy) proxy = NULL;
+  g_autoptr(GError) error = NULL;
+  g_autoptr(GVariant) variant = NULL;
+  const char *gnome_version = NULL;
+
+  proxy = cc_object_storage_create_dbus_proxy_finish (res, &error);
+  if (!proxy)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+        g_warning ("Failed to contact gnome-shell: %s", error->message);
+        goto fail;
+      }
+      return;
+    }
+
+  variant = g_dbus_proxy_get_cached_property (proxy, "ShellVersion");
+  if (!variant)
+    goto fail;
+  gnome_version = g_variant_get_string (variant, NULL);
+  if (!gnome_version || *gnome_version == '\0')
+    goto fail;
+  cc_list_row_set_secondary_label (self->gnome_version_row, gnome_version);
+  return;
+
+fail:
+  /* translators: this is the placeholder string when the GNOME Shell
+   * version couldn't be loaded, eg. “GNOME Version: Not Available” */
+  cc_list_row_set_secondary_label (self->gnome_version_row, _("Not Available"));
+}
+
 static void
 info_overview_panel_setup_overview (CcInfoOverviewPanel *self)
 {
@@ -757,8 +792,15 @@ info_overview_panel_setup_overview (CcInfoOverviewPanel *self)
   g_autofree char *os_name_text = NULL;
   g_autofree gchar *graphics_hardware_string = NULL;
 
-  if (load_gnome_version (&gnome_version))
-    cc_list_row_set_secondary_label (self->gnome_version_row, gnome_version);
+  cc_object_storage_create_dbus_proxy (G_BUS_TYPE_SESSION,
+                                       G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS |
+                                       G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
+                                       "org.gnome.Shell",
+                                       "/org/gnome/Shell",
+                                       "org.gnome.Shell",
+                                       cc_panel_get_cancellable (CC_PANEL (self)),
+                                       (GAsyncReadyCallback) shell_proxy_ready,
+                                       self);
 
   cc_list_row_set_secondary_label (self->windowing_system_row, get_windowing_system ());
 


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