aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2015-02-12 22:45:24 +0000
committerCI Train Bot <ci-train-bot@canonical.com>2015-02-12 22:45:24 +0000
commit8e3fb8cc79f08e51b182cefc1cd01d81ad45a6d9 (patch)
treefc3391c6d77c48f83fcf47ccc6394dbc6bc16aad
parent55104b7f2fb1056f7c11e60e7a0bd0b822937dc8 (diff)
parent92b25d847074f06bb877570cb8ca02e07b61d67a (diff)
downloadayatana-indicator-power-8e3fb8cc79f08e51b182cefc1cd01d81ad45a6d9.tar.gz
ayatana-indicator-power-8e3fb8cc79f08e51b182cefc1cd01d81ad45a6d9.tar.bz2
ayatana-indicator-power-8e3fb8cc79f08e51b182cefc1cd01d81ad45a6d9.zip
Use the new power level icons for a more accurate display of the battery level. Fixes: #1388235
Approved by: Ted Gould, PS Jenkins bot
-rw-r--r--src/device.c35
-rw-r--r--tests/manual9
-rw-r--r--tests/test-device.cc22
3 files changed, 60 insertions, 6 deletions
diff --git a/src/device.c b/src/device.c
index eff76d1..5597c37 100644
--- a/src/device.c
+++ b/src/device.c
@@ -319,7 +319,23 @@ get_device_icon_suffix (gdouble percentage)
}
static const gchar *
-get_device_icon_index (gdouble percentage)
+get_closest_10_percent_percentage (gdouble percentage)
+{
+ if (percentage >= 95) return "100";
+ if (percentage >= 85) return "090";
+ if (percentage >= 75) return "080";
+ if (percentage >= 65) return "070";
+ if (percentage >= 55) return "060";
+ if (percentage >= 45) return "050";
+ if (percentage >= 35) return "040";
+ if (percentage >= 21) return "030"; /* don't round down to 20: see bug #1388235 */
+ if (percentage >= 15) return "020";
+ if (percentage >= 5) return "010";
+ return "000";
+}
+
+static const gchar *
+get_fallback_device_icon_index (gdouble percentage)
{
if (percentage >= 90) return "100";
if (percentage >= 70) return "080";
@@ -364,6 +380,7 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
{
const gchar *suffix_str;
const gchar *index_str;
+ const gchar *index_str_2;
/* LCOV_EXCL_START */
g_return_val_if_fail (INDICATOR_IS_POWER_DEVICE(device), NULL);
@@ -406,9 +423,15 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
case UP_DEVICE_STATE_CHARGING:
suffix_str = get_device_icon_suffix (percentage);
- index_str = get_device_icon_index (percentage);
+ index_str = get_closest_10_percent_percentage (percentage);
g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging", kind_str, index_str));
g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s-charging", kind_str, index_str));
+ index_str_2 = get_fallback_device_icon_index (percentage);
+ if (g_strcmp0 (index_str, index_str_2))
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging", kind_str, index_str_2));
+ g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s-charging", kind_str, index_str_2));
+ }
g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging-symbolic", kind_str, suffix_str));
g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging", kind_str, suffix_str));
break;
@@ -417,9 +440,15 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
case UP_DEVICE_STATE_DISCHARGING:
case UP_DEVICE_STATE_PENDING_DISCHARGE:
suffix_str = get_device_icon_suffix (percentage);
- index_str = get_device_icon_index (percentage);
+ index_str = get_closest_10_percent_percentage (percentage);
g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, index_str));
g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s", kind_str, index_str));
+ index_str_2 = get_fallback_device_icon_index (percentage);
+ if (g_strcmp0 (index_str, index_str_2))
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, index_str_2));
+ g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s", kind_str, index_str_2));
+ }
g_ptr_array_add (names, g_strdup_printf ("%s-%s-symbolic", kind_str, suffix_str));
g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, suffix_str));
break;
diff --git a/tests/manual b/tests/manual
index 1e6febd..8a305ac 100644
--- a/tests/manual
+++ b/tests/manual
@@ -13,7 +13,6 @@ $ gdbus call --session --dest "com.canonical.indicator.power" \
--object-path /com/canonical/indicator/power/Testing \
--method org.freedesktop.DBus.Properties.GetAll \
com.canonical.indicator.power.Testing
-({'MockBatteryEnabled': <false>, 'MockBatteryLevel': <uint32 50>, 'MockBatteryState': <'discharging'>, 'MockBatteryMinutesLeft': <uint32 30>},)
Enable the mock battery:
@@ -88,6 +87,14 @@ Test-case indicator-power/low-power-notifications
<dd>ubuntu-system-settings should be launched to the Battery page </dd>
</dl>
+Test-case indicator-power/low-power-icon
+<dl>
+ <dt>Wait for the system's battery level to drop to 21% (or fake it, see 'Notes on Battery Testing' above)</dt>
+ <dd>The indicator's icon should use the non-critical coloring (eg, grey)</dd>
+ <dt>Wait for the system's battery level to drop to 20% (or fake it, see 'Notes on Battery Testing' above)</dt>
+ <dd>The indicator's icon should use the critical coloring (eg, red)</dd>
+</dl>
+
Test-case indicator-power/device-brightness-slider
<dl>
<dt>On a device, pull down the power indicator's menu</dt>
diff --git a/tests/test-device.cc b/tests/test-device.cc
index fbeb1c0..e929f89 100644
--- a/tests/test-device.cc
+++ b/tests/test-device.cc
@@ -297,7 +297,6 @@ TEST_F(DeviceTest, IconNames)
g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind,
INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_EMPTY,
NULL);
-
g_string_append_printf (expected, "%s-empty-symbolic;", kind_str);
g_string_append_printf (expected, "gpm-%s-empty;", kind_str);
g_string_append_printf (expected, "gpm-%s-000;", kind_str);
@@ -323,7 +322,6 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING,
INDICATOR_POWER_DEVICE_PERCENTAGE, 95.0,
NULL);
-
g_string_append_printf (expected, "%s-100-charging;", kind_str);
g_string_append_printf (expected, "gpm-%s-100-charging;", kind_str);
g_string_append_printf (expected, "%s-full-charging-symbolic;", kind_str);
@@ -336,6 +334,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING,
INDICATOR_POWER_DEVICE_PERCENTAGE, 85.0,
NULL);
+ g_string_append_printf (expected, "%s-090-charging;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-090-charging;", kind_str);
g_string_append_printf (expected, "%s-080-charging;", kind_str);
g_string_append_printf (expected, "gpm-%s-080-charging;", kind_str);
g_string_append_printf (expected, "%s-full-charging-symbolic;", kind_str);
@@ -348,6 +348,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING,
INDICATOR_POWER_DEVICE_PERCENTAGE, 50.0,
NULL);
+ g_string_append_printf (expected, "%s-050-charging;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-050-charging;", kind_str);
g_string_append_printf (expected, "%s-060-charging;", kind_str);
g_string_append_printf (expected, "gpm-%s-060-charging;", kind_str);
g_string_append_printf (expected, "%s-good-charging-symbolic;", kind_str);
@@ -360,6 +362,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING,
INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0,
NULL);
+ g_string_append_printf (expected, "%s-030-charging;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-030-charging;", kind_str);
g_string_append_printf (expected, "%s-020-charging;", kind_str);
g_string_append_printf (expected, "gpm-%s-020-charging;", kind_str);
g_string_append_printf (expected, "%s-low-charging-symbolic;", kind_str);
@@ -372,6 +376,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING,
INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0,
NULL);
+ g_string_append_printf (expected, "%s-010-charging;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-010-charging;", kind_str);
g_string_append_printf (expected, "%s-000-charging;", kind_str);
g_string_append_printf (expected, "gpm-%s-000-charging;", kind_str);
g_string_append_printf (expected, "%s-caution-charging-symbolic;", kind_str);
@@ -396,6 +402,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING,
INDICATOR_POWER_DEVICE_PERCENTAGE, 85.0,
NULL);
+ g_string_append_printf (expected, "%s-090;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-090;", kind_str);
g_string_append_printf (expected, "%s-080;", kind_str);
g_string_append_printf (expected, "gpm-%s-080;", kind_str);
g_string_append_printf (expected, "%s-full-symbolic;", kind_str);
@@ -409,6 +417,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_PERCENTAGE, 50.0,
INDICATOR_POWER_DEVICE_TIME, guint64(60*60),
NULL);
+ g_string_append_printf (expected, "%s-050;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-050;", kind_str);
g_string_append_printf (expected, "%s-060;", kind_str);
g_string_append_printf (expected, "gpm-%s-060;", kind_str);
g_string_append_printf (expected, "%s-good-symbolic;", kind_str);
@@ -422,6 +432,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0,
INDICATOR_POWER_DEVICE_TIME, guint64(60*60),
NULL);
+ g_string_append_printf (expected, "%s-030;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-030;", kind_str);
g_string_append_printf (expected, "%s-020;", kind_str);
g_string_append_printf (expected, "gpm-%s-020;", kind_str);
g_string_append_printf (expected, "%s-low-symbolic;", kind_str);
@@ -435,6 +447,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0,
INDICATOR_POWER_DEVICE_TIME, guint64(60*15),
NULL);
+ g_string_append_printf (expected, "%s-030;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-030;", kind_str);
g_string_append_printf (expected, "%s-020;", kind_str);
g_string_append_printf (expected, "gpm-%s-020;", kind_str);
g_string_append_printf (expected, "%s-low-symbolic;", kind_str);
@@ -448,6 +462,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0,
INDICATOR_POWER_DEVICE_TIME, guint64(60*60),
NULL);
+ g_string_append_printf (expected, "%s-010;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-010;", kind_str);
g_string_append_printf (expected, "%s-000;", kind_str);
g_string_append_printf (expected, "gpm-%s-000;", kind_str);
g_string_append_printf (expected, "%s-caution-symbolic;", kind_str);
@@ -461,6 +477,8 @@ TEST_F(DeviceTest, IconNames)
INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0,
INDICATOR_POWER_DEVICE_TIME, guint64(60*15),
NULL);
+ g_string_append_printf (expected, "%s-010;", kind_str);
+ g_string_append_printf (expected, "gpm-%s-010;", kind_str);
g_string_append_printf (expected, "%s-000;", kind_str);
g_string_append_printf (expected, "gpm-%s-000;", kind_str);
g_string_append_printf (expected, "%s-caution-symbolic;", kind_str);