gnome-power-manager r3155 - in trunk: . src



Author: rhughes
Date: Wed Jan 14 17:23:58 2009
New Revision: 3155
URL: http://svn.gnome.org/viewvc/gnome-power-manager?rev=3155&view=rev

Log:
2009-01-14  Richard Hughes  <richard hughsie com>

* src/gpm-engine.c: (gpm_engine_coldplug_idle_cb),
(gpm_engine_device_added_cb), (phone_device_added_cb),
(phone_device_removed_cb), (phone_device_refresh_cb),
(gpm_engine_init), (gpm_engine_finalize):
Use gnome-phone-manager and show cell phone batteries.

* src/gpm-phone.c: (gpm_phone_battery_state_changed),
(gpm_phone_num_batteries_changed):
Whitespace cleanup.

* src/gpm-tray-icon.c: (gpm_tray_icon_show_info_cb):
Don't exit silently when we want more details on a device that has no
more details.

* src/gpm-warnings.c: (gpm_warnings_get_state_time),
(gpm_warnings_get_state_percentage):
Be less verbose when a device has 0% percentage.


Modified:
   trunk/ChangeLog
   trunk/src/gpm-engine.c
   trunk/src/gpm-phone.c
   trunk/src/gpm-tray-icon.c
   trunk/src/gpm-warnings.c

Modified: trunk/src/gpm-engine.c
==============================================================================
--- trunk/src/gpm-engine.c	(original)
+++ trunk/src/gpm-engine.c	Wed Jan 14 17:23:58 2009
@@ -36,6 +36,7 @@
 #include "gpm-engine.h"
 #include "gpm-stock-icons.h"
 #include "gpm-prefs-server.h"
+#include "gpm-phone.h"
 
 static void     gpm_engine_class_init (GpmEngineClass *klass);
 static void     gpm_engine_init       (GpmEngine      *engine);
@@ -54,6 +55,7 @@
 	GConfClient		*conf;
 	DkpClient		*client;
 	GPtrArray		*array;
+	GpmPhone		*phone;
 	GpmIconPolicy		 icon_policy;
 	gchar			*previous_icon;
 	gchar			*previous_summary;
@@ -571,6 +573,9 @@
 		gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_UPS);
 	g_object_unref (prefs_server);
 
+	/* connected mobile phones */
+	gpm_phone_coldplug (engine->priv->phone);
+
 	gpm_engine_recalculate_state (engine);
 
 	/* add to database */
@@ -590,8 +595,7 @@
 gpm_engine_device_added_cb (DkpClient *client, DkpDevice *device, GpmEngine *engine)
 {
 	/* add to list */
-	g_object_ref (device);
-	g_ptr_array_add (engine->priv->array, device);
+	g_ptr_array_add (engine->priv->array, g_object_ref (device));
 
 	gpm_engine_recalculate_state (engine);
 }
@@ -688,6 +692,82 @@
 }
 
 /**
+ * phone_device_added_cb:
+ **/
+static void
+phone_device_added_cb (GpmPhone *phone, guint index, GpmEngine *engine)
+{
+	DkpObject *obj;
+	DkpDevice *device;
+	device = dkp_device_new ();
+
+	egg_debug ("phone added %i", index);
+	
+	obj = (DkpObject *) dkp_device_get_object (device);
+	obj->native_path = g_strdup_printf ("phone_%i", index);
+	obj->is_rechargeable = TRUE;
+	obj->type = DKP_DEVICE_TYPE_PHONE;
+
+	/* state changed */
+	gpm_engine_device_add (engine, device);
+	g_ptr_array_add (engine->priv->array, g_object_ref (device));
+	gpm_engine_recalculate_state (engine);
+}
+
+/**
+ * phone_device_removed_cb:
+ **/
+static void
+phone_device_removed_cb (GpmPhone *phone, guint index, GpmEngine *engine)
+{
+	guint i;
+	DkpDevice *device;
+	const DkpObject *obj;
+
+	egg_debug ("phone removed %i", index);
+
+	for (i=0; i<engine->priv->array->len; i++) {
+		device = g_ptr_array_index (engine->priv->array, i);
+		obj = dkp_device_get_object (device);
+		if (obj->type == DKP_DEVICE_TYPE_PHONE) {
+			g_ptr_array_remove_index (engine->priv->array, i);
+			g_object_unref (device);
+			break;
+		}
+	}
+
+	/* state changed */
+	gpm_engine_recalculate_state (engine);
+}
+
+/**
+ * phone_device_refresh_cb:
+ **/
+static void
+phone_device_refresh_cb (GpmPhone *phone, guint index, GpmEngine *engine)
+{
+	guint i;
+	DkpDevice *device;
+	DkpObject *obj;
+
+	egg_debug ("phone refresh %i", index);
+
+	for (i=0; i<engine->priv->array->len; i++) {
+		device = g_ptr_array_index (engine->priv->array, i);
+		obj = (DkpObject *) dkp_device_get_object (device);
+		if (obj->type == DKP_DEVICE_TYPE_PHONE) {
+			obj->is_present = gpm_phone_get_present (phone, index);
+			obj->state = gpm_phone_get_on_ac (phone, index) ? DKP_DEVICE_STATE_CHARGING : DKP_DEVICE_STATE_DISCHARGING;
+			obj->percentage = gpm_phone_get_percentage (phone, index);
+			break;
+		}
+	}
+
+	/* state changed */
+	gpm_engine_recalculate_state (engine);
+}
+
+/**
  * gpm_engine_init:
  * @engine: This class instance
  **/
@@ -712,6 +792,14 @@
 				 (GConfClientNotifyFunc) gpm_engine_conf_key_changed_cb,
 				 engine, NULL, NULL);
 
+	engine->priv->phone = gpm_phone_new ();
+	g_signal_connect (engine->priv->phone, "device-added",
+			  G_CALLBACK (phone_device_added_cb), engine);
+	g_signal_connect (engine->priv->phone, "device-removed",
+			  G_CALLBACK (phone_device_removed_cb), engine);
+	g_signal_connect (engine->priv->phone, "device-refresh",
+			  G_CALLBACK (phone_device_refresh_cb), engine);
+
 	engine->priv->previous_icon = NULL;
 	engine->priv->previous_summary = NULL;
 
@@ -836,6 +924,7 @@
 	g_ptr_array_free (engine->priv->array, TRUE);
 
 	g_object_unref (engine->priv->client);
+	g_object_unref (engine->priv->phone);
 
 	g_free (engine->priv->previous_icon);
 	g_free (engine->priv->previous_summary);

Modified: trunk/src/gpm-phone.c
==============================================================================
--- trunk/src/gpm-phone.c	(original)
+++ trunk/src/gpm-phone.c	Wed Jan 14 17:23:58 2009
@@ -143,11 +143,7 @@
 /** Invoked when we get the BatteryStateChanged
  */
 static void
-gpm_phone_battery_state_changed (DBusGProxy     *proxy,
-				 guint           index,
-				 guint           percentage,
-				 gboolean        on_ac,
-				 GpmPhone	*phone)
+gpm_phone_battery_state_changed (DBusGProxy *proxy, guint index, guint percentage, gboolean on_ac, GpmPhone *phone)
 {
 	g_return_if_fail (phone != NULL);
 	g_return_if_fail (GPM_IS_PHONE (phone));
@@ -163,9 +159,7 @@
 /** Invoked when we get NumberBatteriesChanged
  */
 static void
-gpm_phone_num_batteries_changed (DBusGProxy     *proxy,
-			         guint           number,
-			         GpmPhone	*phone)
+gpm_phone_num_batteries_changed (DBusGProxy *proxy, guint number, GpmPhone *phone)
 {
 	g_return_if_fail (phone != NULL);
 	g_return_if_fail (GPM_IS_PHONE (phone));

Modified: trunk/src/gpm-tray-icon.c
==============================================================================
--- trunk/src/gpm-tray-icon.c	(original)
+++ trunk/src/gpm-tray-icon.c	Wed Jan 14 17:23:58 2009
@@ -236,8 +236,16 @@
 #else
 	object_path = g_object_get_data (G_OBJECT (item), "object-path");
 	egg_debug ("object_path=%s", object_path);
-	if (object_path == NULL)
+	if (object_path == NULL) {
+		dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
+						 GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s",
+						 _("Device information"));
+		gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog),
+							    "%s", _("There is no detailed information for this device"));
+		gtk_dialog_run (GTK_DIALOG (dialog));
+		gtk_widget_destroy (GTK_WIDGET (dialog));
 		goto out;
+	}
 
 	device = dkp_device_new ();
 	ret = dkp_device_set_object_path (device, object_path);

Modified: trunk/src/gpm-warnings.c
==============================================================================
--- trunk/src/gpm-warnings.c	(original)
+++ trunk/src/gpm-warnings.c	Wed Jan 14 17:23:58 2009
@@ -96,7 +96,7 @@
 {
 	if (unit->time_discharge == 0) {
 		/* this is probably an error condition */
-		egg_warning ("time zero, something's gone wrong");
+		egg_debug ("time zero, something's gone wrong");
 		return GPM_WARNINGS_NONE;
 	}
 	if (unit->time_discharge <= warnings->priv->action_time) {
@@ -114,7 +114,7 @@
 {
 	if (unit->percentage == 0) {
 		/* this is probably an error condition */
-		egg_warning ("percentage zero, something's gone wrong");
+		egg_debug ("percentage zero, something's gone wrong");
 		return GPM_WARNINGS_NONE;
 	}
 	if (unit->percentage <= warnings->priv->action_percentage) {



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