From 520f7af8b4bd4d73a2ac968d7c6d22f96c907e42 Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Wed, 31 Jul 2024 08:23:00 +0200 Subject: [PATCH] feat: charging icons if device is charging --- src/ui/battery_status.rs | 36 ++++++++++++++++---------- src/ui/factories/device_row_factory.rs | 2 +- src/xr_devices.rs | 8 +++++- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/ui/battery_status.rs b/src/ui/battery_status.rs index 444a7c1..e6ff861 100644 --- a/src/ui/battery_status.rs +++ b/src/ui/battery_status.rs @@ -22,19 +22,27 @@ impl From for EnvisionBatteryStatus { } impl EnvisionBatteryStatus { - pub fn icon(&self) -> &str { - match self.battery_status.charge { - n if n >= 1.0 => "battery-level-100-symbolic", - n if n >= 0.9 => "battery-level-90-symbolic", - n if n >= 0.8 => "battery-level-80-symbolic", - n if n >= 0.7 => "battery-level-70-symbolic", - n if n >= 0.6 => "battery-level-60-symbolic", - n if n >= 0.5 => "battery-level-50-symbolic", - n if n >= 0.4 => "battery-level-40-symbolic", - n if n >= 0.3 => "battery-level-30-symbolic", - n if n >= 0.2 => "battery-level-20-symbolic", - n if n >= 0.1 => "battery-level-10-symbolic", - _ => "battery-level-0-symbolic", - } + pub fn icon(&self) -> String { + format!( + "{}{}-symbolic", + match self.battery_status.charge { + n if n >= 1.0 => "battery-level-100", + n if n >= 0.9 => "battery-level-90", + n if n >= 0.8 => "battery-level-80", + n if n >= 0.7 => "battery-level-70", + n if n >= 0.6 => "battery-level-60", + n if n >= 0.5 => "battery-level-50", + n if n >= 0.4 => "battery-level-40", + n if n >= 0.3 => "battery-level-30", + n if n >= 0.2 => "battery-level-20", + n if n >= 0.1 => "battery-level-10", + _ => "battery-level-0", + }, + if self.battery_status.charging { + "-charging" + } else { + "" + } + ) } } diff --git a/src/ui/factories/device_row_factory.rs b/src/ui/factories/device_row_factory.rs index 5a07d52..c34852e 100644 --- a/src/ui/factories/device_row_factory.rs +++ b/src/ui/factories/device_row_factory.rs @@ -95,7 +95,7 @@ impl AsyncFactoryComponent for DeviceRowModel { gtk::Image { set_icon_name: self.battery_status .as_ref() - .map(|bs| bs.icon()), + .map(|bs| bs.icon()).as_deref(), }, gtk::Label { set_text: &self.battery_status diff --git a/src/xr_devices.rs b/src/xr_devices.rs index 1830ecb..91fbc50 100644 --- a/src/xr_devices.rs +++ b/src/xr_devices.rs @@ -319,7 +319,13 @@ impl XRDevice { res.push(Self { index: dev.id.to_string(), serial: dev.serial().ok(), - battery: dev.battery_status().ok(), + battery: dev.battery_status().ok().and_then(|bs| { + if bs.present { + Some(bs) + } else { + None + } + }), name: dev.name, dev_type: xrd, })