feat(notifications): add icon to show less button
This commit is contained in:
parent
7073d8fc22
commit
c77265eaed
3 changed files with 251 additions and 187 deletions
402
Cargo.lock
generated
402
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -26,3 +26,4 @@ i18n-embed = { version = "0.13.4", features = ["fluent-system", "desktop-request
|
||||||
i18n-embed-fl = "0.6.4"
|
i18n-embed-fl = "0.6.4"
|
||||||
rust-embed = "6.3.0"
|
rust-embed = "6.3.0"
|
||||||
rust-embed-utils = "7.5.0"
|
rust-embed-utils = "7.5.0"
|
||||||
|
url = "2.4.0"
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ use cosmic::iced::{
|
||||||
};
|
};
|
||||||
use cosmic::iced_core::alignment::Horizontal;
|
use cosmic::iced_core::alignment::Horizontal;
|
||||||
use cosmic::iced_core::image;
|
use cosmic::iced_core::image;
|
||||||
|
use cosmic::iced_widget::image::Handle;
|
||||||
use cosmic_applet::{applet_button_theme, CosmicAppletHelper};
|
use cosmic_applet::{applet_button_theme, CosmicAppletHelper};
|
||||||
|
|
||||||
use cosmic::iced_style::application::{self, Appearance};
|
use cosmic::iced_style::application::{self, Appearance};
|
||||||
|
|
@ -20,10 +21,11 @@ use cosmic::widget::{container, icon};
|
||||||
use cosmic::Renderer;
|
use cosmic::Renderer;
|
||||||
use cosmic::{Element, Theme};
|
use cosmic::{Element, Theme};
|
||||||
use cosmic_notifications_config::NotificationsConfig;
|
use cosmic_notifications_config::NotificationsConfig;
|
||||||
use cosmic_notifications_util::Notification;
|
use cosmic_notifications_util::{Image, Notification};
|
||||||
use cosmic_time::{anim, chain, id, once_cell::sync::Lazy, Instant, Timeline};
|
use cosmic_time::{anim, chain, id, once_cell::sync::Lazy, Instant, Timeline};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
use std::process;
|
use std::process;
|
||||||
use tokio::sync::mpsc::Sender;
|
use tokio::sync::mpsc::Sender;
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
|
@ -217,7 +219,6 @@ impl Application for Notifications {
|
||||||
Command::none()
|
Command::none()
|
||||||
}
|
}
|
||||||
Message::NotificationEvent(n) => {
|
Message::NotificationEvent(n) => {
|
||||||
info!("{}", &n.app_name);
|
|
||||||
if let Some(c) = self
|
if let Some(c) = self
|
||||||
.cards
|
.cards
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
|
|
@ -441,6 +442,34 @@ impl Application for Notifications {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
let show_more_icon = c.1.last().and_then(|n| {
|
||||||
|
info!("app_icon: {:?}", &n.app_icon);
|
||||||
|
if n.app_icon.is_empty() {
|
||||||
|
match n.image().cloned() {
|
||||||
|
Some(Image::File(p)) => Some(cosmic::widget::IconSource::Path(
|
||||||
|
Cow::Owned(PathBuf::from(p)),
|
||||||
|
)),
|
||||||
|
Some(Image::Name(name)) => {
|
||||||
|
Some(cosmic::widget::IconSource::Name(Cow::Owned(name)))
|
||||||
|
}
|
||||||
|
Some(Image::Data {
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
data,
|
||||||
|
}) => Some(cosmic::widget::IconSource::Handle(
|
||||||
|
icon::Handle::Image(Handle::from_pixels(width, height, data)),
|
||||||
|
)),
|
||||||
|
None => None,
|
||||||
|
}
|
||||||
|
} else if let Some(path) = url::Url::parse(&n.app_icon)
|
||||||
|
.ok()
|
||||||
|
.and_then(|u| u.to_file_path().ok())
|
||||||
|
{
|
||||||
|
Some(cosmic::widget::IconSource::Path(Cow::Owned(path)))
|
||||||
|
} else {
|
||||||
|
Some(cosmic::widget::IconSource::Name(Cow::Borrowed(&n.app_icon)))
|
||||||
|
}
|
||||||
|
});
|
||||||
let card_list = anim!(
|
let card_list = anim!(
|
||||||
//cards
|
//cards
|
||||||
c.0.clone(),
|
c.0.clone(),
|
||||||
|
|
@ -452,7 +481,7 @@ impl Application for Notifications {
|
||||||
"Show Less",
|
"Show Less",
|
||||||
// &format!("Show {} More", c.1.len().saturating_sub(1)),
|
// &format!("Show {} More", c.1.len().saturating_sub(1)),
|
||||||
"Clear All",
|
"Clear All",
|
||||||
None,
|
show_more_icon,
|
||||||
c.2,
|
c.2,
|
||||||
);
|
);
|
||||||
notifs.push(card_list.into());
|
notifs.push(card_list.into());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue