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
This commit is contained in:
Bastien Nocera 2018-04-19 03:25:03 +02:00
parent 33e9039eb0
commit e7de44f0d5

View file

@ -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";