wl_usr: add additional interfaces
This commit is contained in:
parent
56290d5547
commit
ce30901093
16 changed files with 1062 additions and 23 deletions
58
src/wl_usr/usr_ifs/usr_wl_data_offer.rs
Normal file
58
src/wl_usr/usr_ifs/usr_wl_data_offer.rs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
use {
|
||||
crate::{
|
||||
object::Version,
|
||||
wire::{WlDataOfferId, wl_data_offer::*},
|
||||
wl_usr::{UsrCon, usr_object::UsrObject},
|
||||
},
|
||||
ahash::AHashSet,
|
||||
std::{cell::RefCell, convert::Infallible, rc::Rc},
|
||||
uapi::OwnedFd,
|
||||
};
|
||||
|
||||
pub struct UsrWlDataOffer {
|
||||
pub id: WlDataOfferId,
|
||||
pub con: Rc<UsrCon>,
|
||||
pub version: Version,
|
||||
pub mime_types: RefCell<AHashSet<String>>,
|
||||
}
|
||||
|
||||
impl UsrWlDataOffer {
|
||||
#[expect(dead_code)]
|
||||
pub fn receive(&self, mime_type: &str, fd: &Rc<OwnedFd>) {
|
||||
self.con.request(Receive {
|
||||
self_id: self.id,
|
||||
mime_type,
|
||||
fd: fd.clone(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
impl WlDataOfferEventHandler for UsrWlDataOffer {
|
||||
type Error = Infallible;
|
||||
|
||||
fn offer(&self, ev: Offer<'_>, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
self.mime_types
|
||||
.borrow_mut()
|
||||
.insert(ev.mime_type.to_string());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn source_actions(&self, _ev: SourceActions, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn action(&self, _ev: Action, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
usr_object_base! {
|
||||
self = UsrWlDataOffer = WlDataOffer;
|
||||
version = self.version;
|
||||
}
|
||||
|
||||
impl UsrObject for UsrWlDataOffer {
|
||||
fn destroy(&self) {
|
||||
self.con.request(Destroy { self_id: self.id });
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue