gnome: add about dialog

Refs #69343

Change-Id: I3ef4e4af22c503d5fb92ab544afca43a8b195a32
diff --git a/src/dialogs.c b/src/dialogs.c
index 4a64e2d..d4f4f06 100644
--- a/src/dialogs.c
+++ b/src/dialogs.c
@@ -31,6 +31,8 @@
 #include "dialogs.h"
 
 #include <gtk/gtk.h>
+#include <glib/gprintf.h>
+#include "config.h"
 
 GtkWidget *
 ring_dialog_working(GtkWidget *parent, const gchar *msg)
@@ -70,4 +72,54 @@
     gtk_widget_show_all(content_area);
 
     return dialog;
-}
\ No newline at end of file
+}
+
+void
+ring_about_dialog(GtkWidget *parent)
+{
+    /* get parent window */
+    if (parent && GTK_IS_WIDGET(parent))
+        parent = gtk_widget_get_toplevel(GTK_WIDGET(parent));
+
+    /* get logo */
+    GError *error = NULL;
+    GdkPixbuf* logo = gdk_pixbuf_new_from_resource("/cx/ring/RingGnome/ring-logo-blue", &error);
+    if (logo == NULL) {
+        g_debug("Could not load logo: %s", error->message);
+        g_error_free(error);
+    }
+
+    gchar *version = g_strdup_printf("%d.%d.%d", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);
+
+    const gchar *authors[] = {
+        [0] = "Stepan Salenikovich",
+        [1] = "Éloi Bail",
+        [2] = "Guillaume Roguez",
+        [3] = "Emmanuel Lepage",
+        [4] = "Alexandre Lision",
+        [5] = "Thibault Cohen",
+        [6] = NULL,
+    };
+
+    const gchar *artists[] = {
+        [0] = "Marianne Forget",
+        [1] = NULL,
+    };
+
+    gtk_show_about_dialog(
+        GTK_WINDOW(parent),
+        "program-name", "Gnome Ring",
+        "copyright", "© 2015 Savoir-faire Linux",
+        "license-type", GTK_LICENSE_GPL_3_0,
+        "logo", logo,
+        "version", version,
+        "comments", "The GNOME client for Ring.\nRing is a Voice-over-IP software phone.",
+        "authors", authors,
+        "website", "http://www.ring.cx/",
+        "website-label", "www.ring.cx",
+        "artists", artists,
+        NULL
+    );
+
+    g_free(version);
+}