feat: charging icons if device is charging

This commit is contained in:
Gabriele Musco 2024-07-31 08:23:00 +02:00
commit 520f7af8b4
3 changed files with 30 additions and 16 deletions

View file

@ -22,19 +22,27 @@ impl From<BatteryStatus> for EnvisionBatteryStatus {
} }
impl EnvisionBatteryStatus { impl EnvisionBatteryStatus {
pub fn icon(&self) -> &str { pub fn icon(&self) -> String {
match self.battery_status.charge { format!(
n if n >= 1.0 => "battery-level-100-symbolic", "{}{}-symbolic",
n if n >= 0.9 => "battery-level-90-symbolic", match self.battery_status.charge {
n if n >= 0.8 => "battery-level-80-symbolic", n if n >= 1.0 => "battery-level-100",
n if n >= 0.7 => "battery-level-70-symbolic", n if n >= 0.9 => "battery-level-90",
n if n >= 0.6 => "battery-level-60-symbolic", n if n >= 0.8 => "battery-level-80",
n if n >= 0.5 => "battery-level-50-symbolic", n if n >= 0.7 => "battery-level-70",
n if n >= 0.4 => "battery-level-40-symbolic", n if n >= 0.6 => "battery-level-60",
n if n >= 0.3 => "battery-level-30-symbolic", n if n >= 0.5 => "battery-level-50",
n if n >= 0.2 => "battery-level-20-symbolic", n if n >= 0.4 => "battery-level-40",
n if n >= 0.1 => "battery-level-10-symbolic", n if n >= 0.3 => "battery-level-30",
_ => "battery-level-0-symbolic", 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 {
""
}
)
} }
} }

View file

@ -95,7 +95,7 @@ impl AsyncFactoryComponent for DeviceRowModel {
gtk::Image { gtk::Image {
set_icon_name: self.battery_status set_icon_name: self.battery_status
.as_ref() .as_ref()
.map(|bs| bs.icon()), .map(|bs| bs.icon()).as_deref(),
}, },
gtk::Label { gtk::Label {
set_text: &self.battery_status set_text: &self.battery_status

View file

@ -319,7 +319,13 @@ impl XRDevice {
res.push(Self { res.push(Self {
index: dev.id.to_string(), index: dev.id.to_string(),
serial: dev.serial().ok(), 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, name: dev.name,
dev_type: xrd, dev_type: xrd,
}) })