// 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 Command = iced::Command>; /// Creates a command which yields a [`crate::app::Message`]. pub fn message(message: Message) -> Command { 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::Command { super::message(super::Message::App(message)) } /// Creates a command which yields a cosmic message. pub fn cosmic( message: crate::app::cosmic::Message, ) -> crate::app::Command { super::message(super::Message::Cosmic(message)) } } pub fn drag(id: Option) -> iced::Command> { crate::command::drag(id).map(Message::Cosmic) } pub fn maximize( id: Option, maximized: bool, ) -> iced::Command> { crate::command::maximize(id, maximized).map(Message::Cosmic) } pub fn minimize(id: Option) -> iced::Command> { crate::command::minimize(id).map(Message::Cosmic) } pub fn set_scaling_factor(factor: f32) -> iced::Command> { message::cosmic(super::cosmic::Message::ScaleFactor(factor)) } pub fn set_theme(theme: crate::Theme) -> iced::Command> { message::cosmic(super::cosmic::Message::AppThemeChange(theme)) } pub fn set_title( id: Option, title: String, ) -> iced::Command> { crate::command::set_title(id, title).map(Message::Cosmic) } pub fn set_windowed(id: Option) -> iced::Command> { crate::command::set_windowed(id).map(Message::Cosmic) } pub fn toggle_maximize(id: Option) -> iced::Command> { crate::command::toggle_maximize(id).map(Message::Cosmic) }