use iced::Element; use iced::Subscription; use iced::Task; use iced_layershell::to_layer_message; use crate::widgets::powerbutton::ShutdownEvents; pub trait PanelWidget { fn update(&mut self, message: &Message) -> Task; fn subscribe(&self) -> Subscription; fn view(&self, id: iced::window::Id) -> Element<'_, Message>; fn has_window(&self, _id: iced::window::Id) -> bool { false } } #[to_layer_message(multi)] #[derive(Debug, Clone)] pub enum Message { Battery(Option), Time, ShutdownEvent(ShutdownEvents), }