[gnome-initial-setup/shell/4765: 67/362] endless-eula: wire up the metrics state to the metrics daemon
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup/shell/4765: 67/362] endless-eula: wire up the metrics state to the metrics daemon
- Date: Thu, 19 Mar 2015 01:26:41 +0000 (UTC)
commit 486e5b7512cd06c55724a8c60038057a43ad87f8
Author: Cosimo Cecchi <cosimo endlessm com>
Date: Tue Jun 24 18:37:37 2014 -0700
endless-eula: wire up the metrics state to the metrics daemon
[endlessm/eos-shell#2728]
.../pages/endless-eula/gis-endless-eula-page.c | 53 +++++++++++++++++++-
1 files changed, 51 insertions(+), 2 deletions(-)
---
diff --git a/gnome-initial-setup/pages/endless-eula/gis-endless-eula-page.c
b/gnome-initial-setup/pages/endless-eula/gis-endless-eula-page.c
index 329f641..6d67604 100644
--- a/gnome-initial-setup/pages/endless-eula/gis-endless-eula-page.c
+++ b/gnome-initial-setup/pages/endless-eula/gis-endless-eula-page.c
@@ -33,7 +33,11 @@
#include <glib/gi18n.h>
#include <gio/gio.h>
-G_DEFINE_TYPE (GisEndlessEulaPage, gis_endless_eula_page, GIS_TYPE_PAGE);
+typedef struct {
+ GDBusProxy *metrics_proxy;
+} GisEndlessEulaPagePrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (GisEndlessEulaPage, gis_endless_eula_page, GIS_TYPE_PAGE);
#define OBJ(type,name) ((type)gtk_builder_get_object(GIS_PAGE(page)->builder,(name)))
#define WID(name) OBJ(GtkWidget*,name)
@@ -55,13 +59,28 @@ sync_page_complete (GisEndlessEulaPage *page)
static void
sync_metrics_active_state (GisEndlessEulaPage *page)
{
+ GisEndlessEulaPagePrivate *priv = gis_endless_eula_page_get_instance_private (page);
+ GError *error = NULL;
GtkWidget *widget;
gboolean metrics_active;
widget = WID ("metrics-checkbutton");
metrics_active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- /* TODO: forward the active state to the metrics daemon */
+ if (!priv->metrics_proxy)
+ return;
+
+ g_dbus_proxy_call_sync (priv->metrics_proxy,
+ "SetEnabled",
+ g_variant_new ("(b)", metrics_active),
+ G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL, &error);
+
+ if (error != NULL)
+ {
+ g_critical ("Unable to set the enabled state of metrics daemon: %s\n", error->message);
+ g_error_free (error);
+ }
}
static GtkWidget *
@@ -128,13 +147,40 @@ metrics_privacy_label_link_cb (GtkLabel *label,
}
static void
+gis_endless_eula_page_finalize (GObject *object)
+{
+ GisEndlessEulaPage *page = GIS_ENDLESS_EULA_PAGE (object);
+ GisEndlessEulaPagePrivate *priv = gis_endless_eula_page_get_instance_private (page);
+
+ g_clear_object (&priv->metrics_proxy);
+
+ G_OBJECT_CLASS (gis_endless_eula_page_parent_class)->finalize (object);
+}
+
+static void
gis_endless_eula_page_constructed (GObject *object)
{
GisEndlessEulaPage *page = GIS_ENDLESS_EULA_PAGE (object);
+ GisEndlessEulaPagePrivate *priv = gis_endless_eula_page_get_instance_private (page);
+ GError *error = NULL;
GtkWidget *widget;
G_OBJECT_CLASS (gis_endless_eula_page_parent_class)->constructed (object);
+ priv->metrics_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL,
+ "com.endlessm.Metrics",
+ "/com/endlessm/Metrics",
+ "com.endlessm.Metrics.EventRecorderServer",
+ NULL, &error);
+
+ if (error != NULL)
+ {
+ g_critical ("Unable to create a DBus proxy for the metrics daemon: %s", error->message);
+ g_error_free (error);
+ }
+
gtk_container_add (GTK_CONTAINER (page), WID ("endless-eula-page"));
gtk_widget_show (GTK_WIDGET (page));
@@ -149,6 +195,8 @@ gis_endless_eula_page_constructed (GObject *object)
widget = WID ("metrics-privacy-label");
g_signal_connect (widget, "activate-link",
G_CALLBACK (metrics_privacy_label_link_cb), page);
+
+ sync_metrics_active_state (page);
}
static void
@@ -166,6 +214,7 @@ gis_endless_eula_page_class_init (GisEndlessEulaPageClass *klass)
page_class->page_id = PAGE_ID;
page_class->locale_changed = gis_endless_eula_page_locale_changed;
object_class->constructed = gis_endless_eula_page_constructed;
+ object_class->finalize = gis_endless_eula_page_finalize;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]