[gnome-power-manager/gnome-2-32] Backport support for new devices recognised in UPower



commit 746273c955c5a131c7d6e23dcc3b3edf479e471e
Author: Richard Hughes <richard hughsie com>
Date:   Fri Aug 6 15:54:19 2010 +0100

    Backport support for new devices recognised in UPower

 src/gpm-engine.c     |   23 +++++++++++++++++---
 src/gpm-manager.c    |   55 +++++++++++++++++++++++++++++++++++++++++++++++++-
 src/gpm-phone.c      |    2 -
 src/gpm-statistics.c |   44 +++++++--------------------------------
 src/gpm-tray-icon.c  |    7 +++++-
 src/gpm-upower.c     |   25 ++++++++++++++++++++++
 6 files changed, 112 insertions(+), 44 deletions(-)
---
diff --git a/src/gpm-engine.c b/src/gpm-engine.c
index 9ba8d44..c6cc1e2 100644
--- a/src/gpm-engine.c
+++ b/src/gpm-engine.c
@@ -196,6 +196,11 @@ gpm_engine_get_warning (GpmEngine *engine, UpDevice *device)
 		warning_type = gpm_engine_get_warning_csr (engine, device);
 
 	} else if (kind == UP_DEVICE_KIND_UPS ||
+#if UP_CHECK_VERSION(0,9,5)
+		   kind == UP_DEVICE_KIND_MEDIA_PLAYER ||
+		   kind == UP_DEVICE_KIND_TABLET ||
+		   kind == UP_DEVICE_KIND_COMPUTER ||
+#endif
 		   kind == UP_DEVICE_KIND_PDA) {
 
 		warning_type = gpm_engine_get_warning_percentage (engine, device);
@@ -235,8 +240,10 @@ gpm_engine_get_summary (GpmEngine *engine)
 	guint i;
 	GPtrArray *array;
 	UpDevice *device;
+	UpDeviceState state;
 	GString *tooltip = NULL;
 	gchar *part;
+	gboolean is_present;
 
 	g_return_val_if_fail (GPM_IS_ENGINE (engine), NULL);
 
@@ -247,6 +254,14 @@ gpm_engine_get_summary (GpmEngine *engine)
 	array = engine->priv->array;
 	for (i=0;i<array->len;i++) {
 		device = g_ptr_array_index (engine->priv->array, i);
+		g_object_get (device,
+			      "is-present", &is_present,
+			      "state", &state,
+			      NULL);
+		if (!is_present)
+			continue;
+		if (state == UP_DEVICE_STATE_EMPTY)
+			continue;
 		part = gpm_upower_get_device_summary (device);
 		if (part != NULL)
 			g_string_append_printf (tooltip, "%s\n", part);
@@ -606,10 +621,10 @@ static UpDevice *
 gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device)
 {
 	guint i;
-	gdouble percentage;
-	gdouble energy;
-	gdouble energy_full;
-	gdouble energy_rate;
+	gdouble percentage = 0.0;
+	gdouble energy = 0.0;
+	gdouble energy_full = 0.0;
+	gdouble energy_rate = 0.0;
 	gdouble energy_total = 0.0;
 	gdouble energy_full_total = 0.0;
 	gdouble energy_rate_total = 0.0;
diff --git a/src/gpm-manager.c b/src/gpm-manager.c
index 4c4c547..dfb28dc 100644
--- a/src/gpm-manager.c
+++ b/src/gpm-manager.c
@@ -1524,7 +1524,30 @@ gpm_manager_engine_charge_low_cb (GpmEngine *engine, UpDevice *device, GpmManage
 		title = _("Cell phone battery low");
 
 		/* TRANSLATORS: tell user more details */
-		message = g_strdup_printf (_("The cell phone attached to this computer is low in power (%.1f%%)"), percentage);
+		message = g_strdup_printf (_("Cell phone is low in power (%.0f%%)"), percentage);
+
+#if UP_CHECK_VERSION(0,9,5)
+	} else if (kind == UP_DEVICE_KIND_MEDIA_PLAYER) {
+		/* TRANSLATORS: media player, e.g. mp3 is getting a little low */
+		title = _("Media player battery low");
+
+		/* TRANSLATORS: tell user more details */
+		message = g_strdup_printf (_("Media player is low in power (%.0f%%)"), percentage);
+
+	} else if (kind == UP_DEVICE_KIND_TABLET) {
+		/* TRANSLATORS: graphics tablet, e.g. wacom is getting a little low */
+		title = _("Tablet battery low");
+
+		/* TRANSLATORS: tell user more details */
+		message = g_strdup_printf (_("Tablet is low in power (%.0f%%)"), percentage);
+
+	} else if (kind == UP_DEVICE_KIND_COMPUTER) {
+		/* TRANSLATORS: computer, e.g. ipad is getting a little low */
+		title = _("Attached computer battery low");
+
+		/* TRANSLATORS: tell user more details */
+		message = g_strdup_printf (_("Attached computer is low in power (%.0f%%)"), percentage);
+#endif
 	}
 
 	/* get correct icon */
@@ -1649,6 +1672,36 @@ gpm_manager_engine_charge_critical_cb (GpmEngine *engine, UpDevice *device, GpmM
 		message = g_strdup_printf (_("Cell phone is very low in power (%.0f%%). "
 					     "This device will soon stop functioning if not charged."),
 					   percentage);
+
+#if UP_CHECK_VERSION(0,9,5)
+	} else if (kind == UP_DEVICE_KIND_MEDIA_PLAYER) {
+
+		/* TRANSLATORS: the cell battery is very low */
+		title = _("Cell phone battery low");
+
+		/* TRANSLATORS: the device is just going to stop working */
+		message = g_strdup_printf (_("Media player is very low in power (%.0f%%). "
+					     "This device will soon stop functioning if not charged."),
+					   percentage);
+	} else if (kind == UP_DEVICE_KIND_TABLET) {
+
+		/* TRANSLATORS: the cell battery is very low */
+		title = _("Tablet battery low");
+
+		/* TRANSLATORS: the device is just going to stop working */
+		message = g_strdup_printf (_("Tablet is very low in power (%.0f%%). "
+					     "This device will soon stop functioning if not charged."),
+					   percentage);
+	} else if (kind == UP_DEVICE_KIND_COMPUTER) {
+
+		/* TRANSLATORS: the cell battery is very low */
+		title = _("Attached computer battery low");
+
+		/* TRANSLATORS: the device is just going to stop working */
+		message = g_strdup_printf (_("Attached computer is very low in power (%.0f%%). "
+					     "The device will soon shutdown if not charged."),
+					   percentage);
+#endif
 	}
 
 	/* get correct icon */
diff --git a/src/gpm-phone.c b/src/gpm-phone.c
index bbe8583..bdd9a8b 100644
--- a/src/gpm-phone.c
+++ b/src/gpm-phone.c
@@ -143,7 +143,6 @@ gpm_phone_get_num_batteries (GpmPhone *phone)
 static void
 gpm_phone_battery_state_changed (DBusGProxy *proxy, guint idx, guint percentage, gboolean on_ac, GpmPhone *phone)
 {
-	g_return_if_fail (phone != NULL);
 	g_return_if_fail (GPM_IS_PHONE (phone));
 
 	egg_debug ("got BatteryStateChanged %i = %i (%i)", idx, percentage, on_ac);
@@ -159,7 +158,6 @@ gpm_phone_battery_state_changed (DBusGProxy *proxy, guint idx, guint percentage,
 static void
 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));
 
 	egg_debug ("got NumberBatteriesChanged %i", number);
diff --git a/src/gpm-statistics.c b/src/gpm-statistics.c
index 6da3723..81d9a95 100644
--- a/src/gpm-statistics.c
+++ b/src/gpm-statistics.c
@@ -1532,7 +1532,7 @@ main (int argc, char *argv[])
 	GPtrArray *devices;
 	UpDevice *device;
 	UpDeviceKind kind;
-	guint i;
+	guint i, j;
 	gint page;
 	gboolean checked;
 	gchar *last_device = NULL;
@@ -1764,41 +1764,13 @@ main (int argc, char *argv[])
 	devices = up_client_get_devices (client);
 
 	/* add devices in visually pleasing order */
-	for (i=0; i < devices->len; i++) {
-		device = g_ptr_array_index (devices, i);
-		g_object_get (device, "kind", &kind, NULL);
-		if (kind == UP_DEVICE_KIND_LINE_POWER)
-			gpm_stats_add_device (device);
-	}
-	for (i=0; i < devices->len; i++) {
-		device = g_ptr_array_index (devices, i);
-		g_object_get (device, "kind", &kind, NULL);
-		if (kind == UP_DEVICE_KIND_BATTERY)
-			gpm_stats_add_device (device);
-	}
-	for (i=0; i < devices->len; i++) {
-		device = g_ptr_array_index (devices, i);
-		g_object_get (device, "kind", &kind, NULL);
-		if (kind == UP_DEVICE_KIND_UPS)
-			gpm_stats_add_device (device);
-	}
-	for (i=0; i < devices->len; i++) {
-		device = g_ptr_array_index (devices, i);
-		g_object_get (device, "kind", &kind, NULL);
-		if (kind == UP_DEVICE_KIND_MONITOR)
-			gpm_stats_add_device (device);
-	}
-	for (i=0; i < devices->len; i++) {
-		device = g_ptr_array_index (devices, i);
-		g_object_get (device, "kind", &kind, NULL);
-		if (kind == UP_DEVICE_KIND_MOUSE)
-			gpm_stats_add_device (device);
-	}
-	for (i=0; i < devices->len; i++) {
-		device = g_ptr_array_index (devices, i);
-		g_object_get (device, "kind", &kind, NULL);
-		if (kind == UP_DEVICE_KIND_KEYBOARD)
-			gpm_stats_add_device (device);
+	for (j=0; j<UP_DEVICE_KIND_LAST; j++) {
+		for (i=0; i < devices->len; i++) {
+			device = g_ptr_array_index (devices, i);
+			g_object_get (device, "kind", &kind, NULL);
+			if (kind == j)
+				gpm_stats_add_device (device);
+		}
 	}
 
 	/* set current device */
diff --git a/src/gpm-tray-icon.c b/src/gpm-tray-icon.c
index 4b9623d..b537a15 100644
--- a/src/gpm-tray-icon.c
+++ b/src/gpm-tray-icon.c
@@ -86,7 +86,7 @@ gpm_tray_icon_show (GpmTrayIcon *icon, gboolean enabled)
 
 /**
  * gpm_tray_icon_set_tooltip:
- * @tooltip: The tooltip text, e.g. "Batteries fully charged"
+ * @tooltip: The tooltip text, e.g. "Batteries charged"
  **/
 gboolean
 gpm_tray_icon_set_tooltip (GpmTrayIcon *icon, const gchar *tooltip)
@@ -276,6 +276,11 @@ gpm_tray_icon_create_menu (GpmTrayIcon *icon, guint32 timestamp)
 	dev_cnt += gpm_tray_icon_add_device (icon, menu, array, UP_DEVICE_KIND_KEYBOARD);
 	dev_cnt += gpm_tray_icon_add_device (icon, menu, array, UP_DEVICE_KIND_PDA);
 	dev_cnt += gpm_tray_icon_add_device (icon, menu, array, UP_DEVICE_KIND_PHONE);
+#if UP_CHECK_VERSION(0,9,5)
+	dev_cnt += gpm_tray_icon_add_device (icon, menu, array, UP_DEVICE_KIND_MEDIA_PLAYER);
+	dev_cnt += gpm_tray_icon_add_device (icon, menu, array, UP_DEVICE_KIND_TABLET);
+	dev_cnt += gpm_tray_icon_add_device (icon, menu, array, UP_DEVICE_KIND_COMPUTER);
+#endif
 	g_ptr_array_unref (array);
 
 	/* skip for things like live-cd's and GDM */
diff --git a/src/gpm-upower.c b/src/gpm-upower.c
index 4fe47ea..f659c51 100644
--- a/src/gpm-upower.c
+++ b/src/gpm-upower.c
@@ -505,6 +505,20 @@ gpm_device_kind_to_localised_text (UpDeviceKind kind, guint number)
 		/* TRANSLATORS: cell phone (mobile...) */
 		text = ngettext ("Cell phone", "Cell phones", number);
 		break;
+#if UP_CHECK_VERSION(0,9,5)
+	case UP_DEVICE_KIND_MEDIA_PLAYER:
+		/* TRANSLATORS: media player, mp3 etc */
+		text = ngettext ("Media player", "Media players", number);
+		break;
+	case UP_DEVICE_KIND_TABLET:
+		/* TRANSLATORS: tablet device */
+		text = ngettext ("Tablet", "Tablets", number);
+		break;
+	case UP_DEVICE_KIND_COMPUTER:
+		/* TRANSLATORS: tablet device */
+		text = ngettext ("Computer", "Computers", number);
+		break;
+#endif
 	default:
 		egg_warning ("enum unrecognised: %i", kind);
 		text = up_device_kind_to_string (kind);
@@ -544,6 +558,17 @@ gpm_device_kind_to_icon (UpDeviceKind kind)
 	case UP_DEVICE_KIND_PHONE:
 		icon = "phone";
 		break;
+#if UP_CHECK_VERSION(0,9,5)
+	case UP_DEVICE_KIND_MEDIA_PLAYER:
+		icon = "multimedia-player";
+		break;
+	case UP_DEVICE_KIND_TABLET:
+		icon = "input-tablet";
+		break;
+	case UP_DEVICE_KIND_COMPUTER:
+		icon = "computer-apple-ipad";
+		break;
+#endif
 	default:
 		egg_warning ("enum unrecognised: %i", kind);
 		icon = "gtk-help";



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