[gnome-initial-setup: 1/2] language: Refactor the logo selection



commit a0c57a3948d418489ccb0c08104fad8542315739
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Thu Jul 25 08:54:25 2019 +0200

    language: Refactor the logo selection
    
    Use an array to map IDs to logo icons and loop through it, rather than
    having tons of conditions doing the same thing. This also makes adding
    new ID to logo icon mappings simpler.

 .../pages/language/gis-language-page.c             | 38 ++++++++++++----------
 1 file changed, 20 insertions(+), 18 deletions(-)
---
diff --git a/gnome-initial-setup/pages/language/gis-language-page.c 
b/gnome-initial-setup/pages/language/gis-language-page.c
index 386ee4e..5acd5f6 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.c
+++ b/gnome-initial-setup/pages/language/gis-language-page.c
@@ -218,6 +218,20 @@ update_distro_logo (GisLanguagePage *page)
   GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page);
   char *buffer;
   char *id;
+  gsize i;
+
+  static const struct {
+    const char *id;
+    const char *logo;
+  } id_to_logo[] = {
+    { "debian",                         "emblem-debian" },
+    { "fedora",                         "fedora-logo-icon" },
+    { "ubuntu",                         "ubuntu-logo-icon" },
+    { "openSUSE Tumbleweed",            "opensuse-logo-icon" },
+    { "openSUSE Leap",                  "opensuse-logo-icon" },
+    { "SLED",                           "suse-logo-icon" },
+    { "SLES",                           "suse-logo-icon" },
+  };
 
   id = NULL;
 
@@ -227,25 +241,13 @@ update_distro_logo (GisLanguagePage *page)
       g_free (buffer);
     }
 
-  if (g_strcmp0 (id, "debian") == 0)
+  for (i = 0; i < G_N_ELEMENTS (id_to_logo); i++)
     {
-      g_object_set (priv->logo, "icon-name", "emblem-debian", NULL);
-    }
-  else if (g_strcmp0 (id, "fedora") == 0)
-    {
-      g_object_set (priv->logo, "icon-name", "fedora-logo-icon", NULL);
-    }
-  else if (g_strcmp0 (id, "ubuntu") == 0)
-    {
-      g_object_set (priv->logo, "icon-name", "ubuntu-logo-icon", NULL);
-    }
-  else if ((g_strcmp0 (id, "openSUSE Tumbleweed") == 0) || (g_strcmp0 (id, "openSUSE Leap") == 0))
-    {
-      g_object_set (priv->logo, "icon-name", "opensuse-logo-icon", NULL);
-    }
-  else if ((g_strcmp0 (id, "SLED") == 0) || (g_strcmp0 (id, "SLES") == 0))
-    {
-      g_object_set (priv->logo, "icon-name", "suse-logo-icon", NULL);
+      if (g_strcmp0 (id, id_to_logo[i].id) == 0)
+        {
+          g_object_set (priv->logo, "icon-name", id_to_logo[i].logo, NULL);
+          break;
+        }
     }
 
   g_free (id);


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