// Copyright 2023 System76 // SPDX-License-Identifier: MPL-2.0 use iced::window; /// Asynchronous actions for COSMIC applications. use super::Message; /// Commands for COSMIC applications. pub type Task = iced::Task>; /// Creates a command which yields a [`crate::app::Message`]. pub fn message(message: Message) -> Task { crate::command::message(message) } /// Convenience methods for building message-based commands. pub mod message { /// Creates a command which yields an application message. pub fn app(message: M) -> crate::app::Task { super::message(super::Message::App(message)) } /// Creates a command which yields a cosmic message. pub fn cosmic(message: crate::app::cosmic::Message) -> crate::app::Task { super::message(super::Message::Cosmic(message)) } } impl crate::app::Core { pub fn drag(&self, id: Option) -> iced::Task> { let Some(id) = id.or(self.main_window) else { return iced::Task::none(); }; crate::command::drag(id).map(Message::Cosmic) } pub fn maximize( &self, id: Option, maximized: bool, ) -> iced::Task> { let Some(id) = id.or(self.main_window) else { return iced::Task::none(); }; crate::command::maximize(id, maximized).map(Message::Cosmic) } pub fn minimize(&self, id: Option) -> iced::Task> { let Some(id) = id.or(self.main_window) else { return iced::Task::none(); }; crate::command::minimize(id).map(Message::Cosmic) } pub fn set_scaling_factor(&self, factor: f32) -> iced::Task> { message::cosmic(super::cosmic::Message::ScaleFactor(factor)) } pub fn set_title( &self, id: Option, title: String, ) -> iced::Task> { let Some(id) = id.or(self.main_window) else { return iced::Task::none(); }; crate::command::set_title(id, title).map(Message::Cosmic) } pub fn set_windowed( &self, id: Option, ) -> iced::Task> { let Some(id) = id.or(self.main_window) else { return iced::Task::none(); }; crate::command::set_windowed(id).map(Message::Cosmic) } pub fn toggle_maximize( &self, id: Option, ) -> iced::Task> { let Some(id) = id.or(self.main_window) else { return iced::Task::none(); }; crate::command::toggle_maximize(id).map(Message::Cosmic) } } pub fn set_theme(theme: crate::Theme) -> iced::Task> { message::cosmic(super::cosmic::Message::AppThemeChange(theme)) }