From d989c88526f6640c8c336ecc1472314987412e54 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 12 Jan 2015 15:47:27 -0600 Subject: round power level to the nearest 10% to take advantage of higher-resolution power level icons --- src/device.c | 35 ++++++++++++++++++++++++++++++++--- tests/test-device.cc | 22 ++++++++++++++++++++-- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/src/device.c b/src/device.c index eff76d1..70c3cc0 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 >= 20) return "030"; /* 20 rather than 25: 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/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); -- cgit v1.2.3