diff options
Diffstat (limited to 'src/up-device.c')
-rw-r--r-- | src/up-device.c | 46 |
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"; |