[gnome-power-manager] Add support for recall data provided by DeviceKit-power



commit e9dff4e2289965e61a45d9ecb3350333b37b7af7
Author: Richard Hughes <richard hughsie com>
Date:   Fri Jul 3 14:15:35 2009 +0100

    Add support for recall data provided by DeviceKit-power

 src/gpm-engine.c |   44 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 40 insertions(+), 4 deletions(-)
---
diff --git a/src/gpm-engine.c b/src/gpm-engine.c
index 4bc090b..d650525 100644
--- a/src/gpm-engine.c
+++ b/src/gpm-engine.c
@@ -44,10 +44,6 @@ static void     gpm_engine_finalize   (GObject	  *object);
 #define GPM_ENGINE_WARN_ACCURACY	20
 #define GPM_USE_COMPOSITE		0
 
-/* Left to convert:
- * 1. Recall data
- */
-
 struct GpmEnginePrivate
 {
 	GConfClient		*conf;
@@ -695,6 +691,44 @@ gpm_engine_device_add (GpmEngine *engine, DkpDevice *device)
 }
 
 /**
+ * gpm_engine_check_recall:
+ **/
+static gboolean
+gpm_engine_check_recall (GpmEngine *engine, DkpDevice *device)
+{
+	DkpDeviceType type;
+	gboolean recall_notice = FALSE;
+	gchar *recall_vendor = NULL;
+	gchar *recall_url = NULL;
+
+	/* get device properties */
+	g_object_get (device,
+		      "type", &type,
+#if DKP_CHECK_VERSION(0x009)
+		      "recall-notice", &recall_notice,
+		      "recall-vendor", &recall_vendor,
+		      "recall-url", &recall_url,
+#endif
+		      NULL);
+
+	/* not battery */
+	if (type != DKP_DEVICE_TYPE_BATTERY)
+		goto out;
+
+	/* no recall data */
+	if (!recall_notice)
+		goto out;
+
+	/* emit signal for manager */
+	egg_debug ("** EMIT: perhaps-recall");
+	g_signal_emit (engine, signals [PERHAPS_RECALL], 0, device, recall_vendor, recall_url);
+out:
+	g_free (recall_vendor);
+	g_free (recall_url);
+	return recall_notice;
+}
+
+/**
  * gpm_engine_coldplug_idle_cb:
  **/
 static gboolean
@@ -747,6 +781,7 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine)
 	for (i=0;i<array->len;i++) {
 		device = g_ptr_array_index (engine->priv->array, i);
 		gpm_engine_device_add (engine, device);
+		gpm_engine_check_recall (engine, device);
 	}
 
 	/* never repeat */
@@ -761,6 +796,7 @@ gpm_engine_device_added_cb (DkpClient *client, DkpDevice *device, GpmEngine *eng
 {
 	/* add to list */
 	g_ptr_array_add (engine->priv->array, g_object_ref (device));
+	gpm_engine_check_recall (engine, device);
 
 	gpm_engine_recalculate_state (engine);
 }



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