summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2018-04-19 03:25:03 +0200
committerBastien Nocera <hadess@hadess.net>2018-04-19 03:27:12 +0200
commite7de44f0d53bd509e7d5fcc84512d5398afe64aa (patch)
treebe67921562e8431bda81b86050f5e58b6fcf3570
parent33e9039eb058401ad7815a83eaf144459b1ecc32 (diff)
daemon: Add battery-level specific icons
Rather than relying on the percentage equivalence, which just doesn't work for "Unknown" battery levels. https://bugs.freedesktop.org/show_bug.cgi?id=97484
-rw-r--r--src/up-device.c46
1 files changed, 35 insertions, 11 deletions
diff --git a/src/up-device.c b/src/up-device.c
index 336bd0e..cab93f9 100644
--- a/src/up-device.c
+++ b/src/up-device.c
@@ -91,16 +91,36 @@ update_warning_level (UpDevice *device)
}
static const gchar *
-get_device_charge_icon (gdouble percentage,
- gboolean charging)
+get_device_charge_icon (gdouble percentage,
+ UpDeviceLevel battery_level,
+ gboolean charging)
{
- if (percentage < 10)
- return charging ? "battery-caution-charging-symbolic" : "battery-caution-symbolic";
- else if (percentage < 30)
- return charging ? "battery-low-charging-symbolic" : "battery-low-symbolic";
- else if (percentage < 60)
- return charging ? "battery-good-charging-symbolic" : "battery-good-symbolic";
- return charging ? "battery-full-charging-symbolic" : "battery-full-symbolic";
+ if (battery_level == UP_DEVICE_LEVEL_NONE) {
+ if (percentage < 10)
+ return charging ? "battery-caution-charging-symbolic" : "battery-caution-symbolic";
+ else if (percentage < 30)
+ return charging ? "battery-low-charging-symbolic" : "battery-low-symbolic";
+ else if (percentage < 60)
+ return charging ? "battery-good-charging-symbolic" : "battery-good-symbolic";
+ return charging ? "battery-full-charging-symbolic" : "battery-full-symbolic";
+ } else {
+ switch (battery_level) {
+ case UP_DEVICE_LEVEL_UNKNOWN:
+ /* The lack of symmetry is on purpose */
+ return charging ? "battery-good-charging-symbolic" : "battery-caution-symbolic";
+ case UP_DEVICE_LEVEL_LOW:
+ case UP_DEVICE_LEVEL_CRITICAL:
+ return charging ? "battery-caution-charging-symbolic" : "battery-caution-symbolic";
+ case UP_DEVICE_LEVEL_NORMAL:
+ return charging ? "battery-low-charging-symbolic" : "battery-low-symbolic";
+ case UP_DEVICE_LEVEL_HIGH:
+ return charging ? "battery-good-charging-symbolic" : "battery-good-symbolic";
+ case UP_DEVICE_LEVEL_FULL:
+ return charging ? "battery-full-charging-symbolic" : "battery-full-symbolic";
+ default:
+ g_assert_not_reached ();
+ }
+ }
}
/* This needs to be called when one of those properties changes:
@@ -133,11 +153,15 @@ update_icon_name (UpDevice *device)
break;
case UP_DEVICE_STATE_CHARGING:
case UP_DEVICE_STATE_PENDING_CHARGE:
- icon_name = get_device_charge_icon (up_exported_device_get_percentage (skeleton), TRUE);
+ icon_name = get_device_charge_icon (up_exported_device_get_percentage (skeleton),
+ up_exported_device_get_battery_level (skeleton),
+ TRUE);
break;
case UP_DEVICE_STATE_DISCHARGING:
case UP_DEVICE_STATE_PENDING_DISCHARGE:
- icon_name = get_device_charge_icon (up_exported_device_get_percentage (skeleton), FALSE);
+ icon_name = get_device_charge_icon (up_exported_device_get_percentage (skeleton),
+ up_exported_device_get_battery_level (skeleton),
+ FALSE);
break;
default:
icon_name = "battery-missing-symbolic";