Update libcosmic/iced
This commit is contained in:
parent
d29baf1a8f
commit
390673c70f
10 changed files with 1056 additions and 1083 deletions
|
|
@ -1,6 +1,6 @@
|
|||
use cosmic::{
|
||||
iced::{futures::SinkExt, subscription},
|
||||
widget, Command,
|
||||
iced::{futures::SinkExt, stream, Subscription},
|
||||
widget, Task,
|
||||
};
|
||||
use gio::{glib, prelude::*};
|
||||
use std::{any::TypeId, cell::Cell, future::pending, path::PathBuf, sync::Arc};
|
||||
|
|
@ -460,9 +460,9 @@ impl Mounter for Gvfs {
|
|||
items_rx.blocking_recv()
|
||||
}
|
||||
|
||||
fn mount(&self, item: MounterItem) -> Command<()> {
|
||||
fn mount(&self, item: MounterItem) -> Task<()> {
|
||||
let command_tx = self.command_tx.clone();
|
||||
Command::perform(
|
||||
Task::perform(
|
||||
async move {
|
||||
command_tx.send(Cmd::Mount(item)).unwrap();
|
||||
()
|
||||
|
|
@ -471,9 +471,9 @@ impl Mounter for Gvfs {
|
|||
)
|
||||
}
|
||||
|
||||
fn network_drive(&self, uri: String) -> Command<()> {
|
||||
fn network_drive(&self, uri: String) -> Task<()> {
|
||||
let command_tx = self.command_tx.clone();
|
||||
Command::perform(
|
||||
Task::perform(
|
||||
async move {
|
||||
command_tx.send(Cmd::NetworkDrive(uri)).unwrap();
|
||||
()
|
||||
|
|
@ -490,9 +490,9 @@ impl Mounter for Gvfs {
|
|||
items_rx.blocking_recv()
|
||||
}
|
||||
|
||||
fn unmount(&self, item: MounterItem) -> Command<()> {
|
||||
fn unmount(&self, item: MounterItem) -> Task<()> {
|
||||
let command_tx = self.command_tx.clone();
|
||||
Command::perform(
|
||||
Task::perform(
|
||||
async move {
|
||||
command_tx.send(Cmd::Unmount(item)).unwrap();
|
||||
()
|
||||
|
|
@ -501,30 +501,35 @@ impl Mounter for Gvfs {
|
|||
)
|
||||
}
|
||||
|
||||
fn subscription(&self) -> subscription::Subscription<MounterMessage> {
|
||||
fn subscription(&self) -> Subscription<MounterMessage> {
|
||||
let command_tx = self.command_tx.clone();
|
||||
let event_rx = self.event_rx.clone();
|
||||
subscription::channel(TypeId::of::<Self>(), 1, |mut output| async move {
|
||||
command_tx.send(Cmd::Rescan).unwrap();
|
||||
while let Some(event) = event_rx.lock().await.recv().await {
|
||||
match event {
|
||||
Event::Changed => command_tx.send(Cmd::Rescan).unwrap(),
|
||||
Event::Items(items) => output.send(MounterMessage::Items(items)).await.unwrap(),
|
||||
Event::MountResult(item, res) => output
|
||||
.send(MounterMessage::MountResult(item, res))
|
||||
.await
|
||||
.unwrap(),
|
||||
Event::NetworkAuth(uri, auth, auth_tx) => output
|
||||
.send(MounterMessage::NetworkAuth(uri, auth, auth_tx))
|
||||
.await
|
||||
.unwrap(),
|
||||
Event::NetworkResult(uri, res) => output
|
||||
.send(MounterMessage::NetworkResult(uri, res))
|
||||
.await
|
||||
.unwrap(),
|
||||
Subscription::run_with_id(
|
||||
TypeId::of::<Self>(),
|
||||
stream::channel(1, |mut output| async move {
|
||||
command_tx.send(Cmd::Rescan).unwrap();
|
||||
while let Some(event) = event_rx.lock().await.recv().await {
|
||||
match event {
|
||||
Event::Changed => command_tx.send(Cmd::Rescan).unwrap(),
|
||||
Event::Items(items) => {
|
||||
output.send(MounterMessage::Items(items)).await.unwrap()
|
||||
}
|
||||
Event::MountResult(item, res) => output
|
||||
.send(MounterMessage::MountResult(item, res))
|
||||
.await
|
||||
.unwrap(),
|
||||
Event::NetworkAuth(uri, auth, auth_tx) => output
|
||||
.send(MounterMessage::NetworkAuth(uri, auth, auth_tx))
|
||||
.await
|
||||
.unwrap(),
|
||||
Event::NetworkResult(uri, res) => output
|
||||
.send(MounterMessage::NetworkResult(uri, res))
|
||||
.await
|
||||
.unwrap(),
|
||||
}
|
||||
}
|
||||
}
|
||||
pending().await
|
||||
})
|
||||
pending().await
|
||||
}),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use cosmic::{iced::subscription, widget, Command};
|
||||
use cosmic::{iced::Subscription, widget, Task};
|
||||
use once_cell::sync::Lazy;
|
||||
use std::{collections::BTreeMap, fmt, path::PathBuf, sync::Arc};
|
||||
use tokio::sync::mpsc;
|
||||
|
|
@ -93,11 +93,11 @@ pub enum MounterMessage {
|
|||
pub trait Mounter: Send + Sync {
|
||||
fn items(&self, sizes: IconSizes) -> Option<MounterItems>;
|
||||
//TODO: send result
|
||||
fn mount(&self, item: MounterItem) -> Command<()>;
|
||||
fn network_drive(&self, uri: String) -> Command<()>;
|
||||
fn mount(&self, item: MounterItem) -> Task<()>;
|
||||
fn network_drive(&self, uri: String) -> Task<()>;
|
||||
fn network_scan(&self, uri: &str, sizes: IconSizes) -> Option<Result<Vec<tab::Item>, String>>;
|
||||
fn unmount(&self, item: MounterItem) -> Command<()>;
|
||||
fn subscription(&self) -> subscription::Subscription<MounterMessage>;
|
||||
fn unmount(&self, item: MounterItem) -> Task<()>;
|
||||
fn subscription(&self) -> Subscription<MounterMessage>;
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue