1#[cfg(feature = "xdg-portal")]
5use std::os::fd::AsFd;
6
7use iced::window;
8
9pub fn drag<M>(id: window::Id) -> iced::Task<crate::Action<M>> {
11 iced_runtime::window::drag(id)
12}
13
14pub fn maximize<M>(id: window::Id, maximized: bool) -> iced::Task<crate::Action<M>> {
16 iced_runtime::window::maximize(id, maximized)
17}
18
19pub fn minimize<M>(id: window::Id) -> iced::Task<crate::Action<M>> {
21 iced_runtime::window::minimize(id, true)
22}
23
24#[allow(unused_variables, clippy::needless_pass_by_value)]
26pub fn set_title<M>(id: window::Id, title: String) -> iced::Task<crate::Action<M>> {
27 iced::Task::none()
28}
29
30#[cfg(feature = "winit")]
31pub fn set_scaling_factor<M: Send + 'static>(factor: f32) -> iced::Task<crate::Action<M>> {
32 iced::Task::done(crate::app::Action::ScaleFactor(factor)).map(crate::Action::Cosmic)
33}
34
35#[cfg(feature = "winit")]
36pub fn set_theme<M: Send + 'static>(theme: crate::Theme) -> iced::Task<crate::Action<M>> {
37 iced::Task::done(crate::app::Action::AppThemeChange(theme)).map(crate::Action::Cosmic)
38}
39
40pub fn set_windowed<M>(id: window::Id) -> iced::Task<crate::Action<M>> {
42 iced_runtime::window::set_mode(id, window::Mode::Windowed)
43}
44
45pub fn toggle_maximize<M>(id: window::Id) -> iced::Task<crate::Action<M>> {
47 iced_runtime::window::toggle_maximize(id)
48}
49
50#[cfg(feature = "xdg-portal")]
51pub fn file_transfer_send(
52 writeable: bool,
53 auto_stop: bool,
54 files: Vec<impl AsFd + Send + Sync + 'static>,
55) -> iced::Task<ashpd::Result<String>> {
56 iced::Task::future(async move {
57 let file_transfer = ashpd::documents::FileTransfer::new().await?;
58 let key = file_transfer.start_transfer(writeable, auto_stop).await?;
59 file_transfer.add_files(&key, &files).await?;
60 Ok(key)
61 })
62}
63
64#[cfg(feature = "xdg-portal")]
67pub fn file_transfer_receive(key: String) -> iced::Task<ashpd::Result<Vec<String>>> {
68 dbg!(&key);
69 iced::Task::future(async move {
70 let file_transfer = ashpd::documents::FileTransfer::new().await?;
71 file_transfer.retrieve_files(&key).await
72 })
73}