From e1abe6235723cbdbdfceb17de86075bf078f24e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Mon, 3 Oct 2011 17:31:35 +0100 Subject: Use battery-with-a-plug when the batttery is fully charged but still on AC Fixes https://bugs.launchpad.net/indicator-power/+bug/865342 --- src/indicator-power.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 64392cd..8185397 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -368,7 +368,7 @@ get_device_icon (UpDeviceKind kind, GIcon *gicon; if (kind == UP_DEVICE_KIND_BATTERY && - state == UP_DEVICE_STATE_CHARGING) + (state == UP_DEVICE_STATE_CHARGING || state == UP_DEVICE_STATE_FULLY_CHARGED)) { GString *filename; gchar **iconnames; @@ -376,9 +376,19 @@ get_device_icon (UpDeviceKind kind, kind_str = up_device_kind_to_string (kind); filename = g_string_new (NULL); - g_string_append_printf (filename, "battery-caution-charging-symbolic;"); - g_string_append_printf (filename, "gpm-%s-000-charging;", kind_str); - g_string_append_printf (filename, "battery-caution-charging;"); + + if (state == UP_DEVICE_STATE_CHARGING) + { + g_string_append_printf (filename, "battery-caution-charging-symbolic;"); + g_string_append_printf (filename, "gpm-%s-000-charging;", kind_str); + g_string_append_printf (filename, "battery-caution-charging;"); + } + else if (state == UP_DEVICE_STATE_FULLY_CHARGED) + { + g_string_append_printf (filename, "battery-full-charging-symbolic;"); + g_string_append_printf (filename, "gpm-%s-100-charging;", kind_str); + g_string_append_printf (filename, "battery-full-charging;"); + } iconnames = g_strsplit (filename->str, ";", -1); gicon = g_themed_icon_new_from_names (iconnames, -1); -- cgit v1.2.3 From 129c0c96f8b7d7ab6a75a037597ced0a7f1344c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Tue, 4 Oct 2011 18:51:45 +0100 Subject: Only show a red icon when we have less than 30 minutes of battery remainig Fixes https://bugs.launchpad.net/indicator-power/+bug/743823 --- src/indicator-power.c | 89 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 30 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 8185397..1afad70 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -361,44 +361,73 @@ set_accessible_desc (IndicatorPower *self, } static GIcon* -get_device_icon (UpDeviceKind kind, - UpDeviceState state, - gchar *device_icon) +build_battery_icon (UpDeviceState state, + gchar *suffix_str) { GIcon *gicon; - if (kind == UP_DEVICE_KIND_BATTERY && - (state == UP_DEVICE_STATE_CHARGING || state == UP_DEVICE_STATE_FULLY_CHARGED)) + GString *filename; + gchar **iconnames; + + filename = g_string_new (NULL); + + if (state == UP_DEVICE_STATE_FULLY_CHARGED) + { + g_string_append (filename, "battery-charged;"); + g_string_append (filename, "battery-full-charged-symbolic;"); + g_string_append (filename, "battery-full-charged;"); + } + else if (state == UP_DEVICE_STATE_CHARGING) + { + g_string_append (filename, "battery-000-charging;"); + g_string_append (filename, "battery-caution-charging-symbolic"); + g_string_append (filename, "battery-caution-charging"); + } + else if (state == UP_DEVICE_STATE_DISCHARGING) { - GString *filename; - gchar **iconnames; - const gchar *kind_str; + g_string_append_printf (filename, "battery-%s;", suffix_str); + g_string_append_printf (filename, "battery-%s-symbolic;", suffix_str); + } - kind_str = up_device_kind_to_string (kind); - filename = g_string_new (NULL); + iconnames = g_strsplit (filename->str, ";", -1); + gicon = g_themed_icon_new_from_names (iconnames, -1); - if (state == UP_DEVICE_STATE_CHARGING) + g_strfreev (iconnames); + g_string_free (filename, TRUE); + + return gicon; +} + +static GIcon* +get_device_icon (UpDeviceKind kind, + UpDeviceState state, + guint64 time_sec, + gchar *device_icon) +{ + GIcon *gicon; + + gicon = g_icon_new_for_string (device_icon, NULL); + + if (kind == UP_DEVICE_KIND_BATTERY && + (state == UP_DEVICE_STATE_FULLY_CHARGED || + state == UP_DEVICE_STATE_CHARGING || + state == UP_DEVICE_STATE_DISCHARGING)) + { + if (state == UP_DEVICE_STATE_FULLY_CHARGED || + state == UP_DEVICE_STATE_CHARGING) { - g_string_append_printf (filename, "battery-caution-charging-symbolic;"); - g_string_append_printf (filename, "gpm-%s-000-charging;", kind_str); - g_string_append_printf (filename, "battery-caution-charging;"); + gicon = build_battery_icon (state, NULL); } - else if (state == UP_DEVICE_STATE_FULLY_CHARGED) + else if (state == UP_DEVICE_STATE_DISCHARGING) { - g_string_append_printf (filename, "battery-full-charging-symbolic;"); - g_string_append_printf (filename, "gpm-%s-100-charging;", kind_str); - g_string_append_printf (filename, "battery-full-charging;"); + if ((time_sec > 60 * 30) && /* more than 30 minutes left */ + (g_strrstr (device_icon, "000") || + g_strrstr (device_icon, "020") || + g_strrstr (device_icon, "caution"))) /* the icon is red */ + { + gicon = build_battery_icon (state, "low"); + } } - - iconnames = g_strsplit (filename->str, ";", -1); - gicon = g_themed_icon_new_from_names (iconnames, -1); - - g_strfreev (iconnames); - g_string_free (filename, TRUE); - } - else - { - gicon = g_icon_new_for_string (device_icon, NULL); } return gicon; @@ -443,7 +472,7 @@ menu_add_device (GtkMenu *menu, return; /* Process the data */ - device_gicons = get_device_icon (kind, state, device_icon); + device_gicons = get_device_icon (kind, state, time, device_icon); icon = gtk_image_new_from_gicon (device_gicons, GTK_ICON_SIZE_SMALL_TOOLBAR); @@ -674,7 +703,7 @@ put_primary_device (IndicatorPower *self, g_debug ("%s: got data from object %s", G_STRFUNC, object_path); /* set icon */ - device_gicons = get_device_icon (kind, state, device_icon); + device_gicons = get_device_icon (kind, state, time, device_icon); gtk_image_set_from_gicon (priv->status_image, device_gicons, GTK_ICON_SIZE_LARGE_TOOLBAR); -- cgit v1.2.3 From 305a06925f925935dd3c1f5f96424c57f7add739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 13 Oct 2011 14:58:14 +0100 Subject: Fix icon creation for UP_DEVICE_STATE_CHARGING state --- src/indicator-power.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 1afad70..f95a75e 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -380,8 +380,8 @@ build_battery_icon (UpDeviceState state, else if (state == UP_DEVICE_STATE_CHARGING) { g_string_append (filename, "battery-000-charging;"); - g_string_append (filename, "battery-caution-charging-symbolic"); - g_string_append (filename, "battery-caution-charging"); + g_string_append (filename, "battery-caution-charging-symbolic;"); + g_string_append (filename, "battery-caution-charging;"); } else if (state == UP_DEVICE_STATE_DISCHARGING) { -- cgit v1.2.3 From 29f26133d5fbf3b67b9bbac487f2441cda1f3f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 13 Oct 2011 15:23:49 +0100 Subject: Add support for old name icons --- src/indicator-power.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/indicator-power.c b/src/indicator-power.c index f95a75e..1ef1b85 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -376,17 +376,22 @@ build_battery_icon (UpDeviceState state, g_string_append (filename, "battery-charged;"); g_string_append (filename, "battery-full-charged-symbolic;"); g_string_append (filename, "battery-full-charged;"); + g_string_append (filename, "gpm-battery-charged;"); + g_string_append (filename, "gpm-battery-100-charging;"); } else if (state == UP_DEVICE_STATE_CHARGING) { g_string_append (filename, "battery-000-charging;"); g_string_append (filename, "battery-caution-charging-symbolic;"); g_string_append (filename, "battery-caution-charging;"); + g_string_append (filename, "gpm-battery-000-charging;"); } else if (state == UP_DEVICE_STATE_DISCHARGING) { g_string_append_printf (filename, "battery-%s;", suffix_str); g_string_append_printf (filename, "battery-%s-symbolic;", suffix_str); + g_string_append (filename, "battery-040;"); + g_string_append (filename, "gpm-battery-040;"); } iconnames = g_strsplit (filename->str, ";", -1); -- cgit v1.2.3 From 15c23becda24c70c2d859eb7ddf4f72e63d38825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 13 Oct 2011 15:58:27 +0100 Subject: Do not hardcode icon percentage when discharging --- src/indicator-power.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 1ef1b85..cb684f5 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -360,6 +360,20 @@ set_accessible_desc (IndicatorPower *self, priv->accessible_desc = g_strdup (desc); } +static const gchar * +get_icon_percentage_for_status (const gchar *status) +{ + + if (g_strcmp0 (status, "caution") == 0) + return "000"; + else if (g_strcmp0 (status, "low") == 0) + return "040"; + else if (g_strcmp0 (status, "good") == 0) + return "080"; + else + return "100"; +} + static GIcon* build_battery_icon (UpDeviceState state, gchar *suffix_str) @@ -388,10 +402,11 @@ build_battery_icon (UpDeviceState state, } else if (state == UP_DEVICE_STATE_DISCHARGING) { + const gchar *percentage = get_icon_percentage_for_status (suffix_str); g_string_append_printf (filename, "battery-%s;", suffix_str); g_string_append_printf (filename, "battery-%s-symbolic;", suffix_str); - g_string_append (filename, "battery-040;"); - g_string_append (filename, "gpm-battery-040;"); + g_string_append_printf (filename, "battery-%s;", percentage); + g_string_append_printf (filename, "gpm-battery-%s;", percentage); } iconnames = g_strsplit (filename->str, ";", -1); -- cgit v1.2.3 From 31651dddeaa9dce1d51b0b78ccdcf98c118ca06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 13 Oct 2011 16:15:35 +0100 Subject: 0.10 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 4176d1f..2d42c3c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_INIT([indicator-power], - [0.9], + [0.10], [http://bugs.launchpad.net/indicator-power], [indicator-power], [http://launchpad.net/indicator-power]) -- cgit v1.2.3