chore(notifications): improve icon fetching

This commit is contained in:
Vukašin Vojinović 2025-09-10 01:05:31 +02:00 committed by Michael Murphy
parent 93735b1ab2
commit 4224929098
3 changed files with 147 additions and 139 deletions

View file

@ -457,7 +457,7 @@ impl cosmic::Application for Notifications {
.iter()
.rev()
.map(|n| {
let app_name = text(if n.app_name.len() > 24 {
let app_name = text::caption(if n.app_name.len() > 24 {
Cow::from(format!(
"{:.26}...",
n.app_name.lines().next().unwrap_or_default()
@ -465,7 +465,6 @@ impl cosmic::Application for Notifications {
} else {
Cow::from(&n.app_name)
})
.size(12)
.width(Length::Fill);
let duration_since = text::caption(duration_ago_msg(n));
@ -481,59 +480,20 @@ impl cosmic::Application for Notifications {
n.id,
Element::from(
column!(
match n.image() {
Some(cosmic_notifications_util::Image::File(path)) => {
row![
icon::from_path(PathBuf::from(path))
.icon()
.size(16),
app_name,
duration_since,
close_notif
]
if let Some(icon) = n.notification_icon() {
row![icon.size(16), app_name, duration_since, close_notif]
.spacing(8)
.align_y(Alignment::Center)
}
Some(cosmic_notifications_util::Image::Name(name)) => {
row![
icon::from_name(name.as_str()).size(16),
app_name,
duration_since,
close_notif
]
} else {
row![app_name, duration_since, close_notif]
.spacing(8)
.align_y(Alignment::Center)
}
Some(cosmic_notifications_util::Image::Data {
width,
height,
data,
}) => {
row![
icon::from_raster_pixels(
*width,
*height,
data.clone()
)
.icon()
.size(16),
app_name,
duration_since,
close_notif
]
.spacing(8)
.align_y(Alignment::Center)
}
None => row![app_name, duration_since, close_notif]
.spacing(8)
.align_y(Alignment::Center),
},
column![
text::body(n.summary.lines().next().unwrap_or_default())
.width(Length::Fill),
text(n.body.lines().next().unwrap_or_default())
text::caption(n.body.lines().next().unwrap_or_default())
.width(Length::Fill)
.size(12)
]
)
.width(Length::Fill),
@ -564,7 +524,7 @@ impl cosmic::Application for Notifications {
{
Some(cosmic::widget::icon::from_path(path))
} else {
Some(cosmic::widget::icon::from_name(n.app_icon.clone()).handle())
Some(cosmic::widget::icon::from_name(n.app_icon.as_str()).handle())
}
});
let card_list = anim!(