use crate::{
cache::{CacheItem, LegacyCacheItem},
events::{BusProperties, ObjectRef},
EventProperties,
};
#[cfg(feature = "zbus")]
use crate::{
error::AtspiError,
events::{MessageConversion, MessageConversionExt},
};
use serde::{Deserialize, Serialize};
use zbus_names::UniqueName;
use zvariant::ObjectPath;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq, Hash)]
pub struct LegacyAddAccessibleEvent {
pub item: ObjectRef,
pub node_added: LegacyCacheItem,
}
event_test_cases!(LegacyAddAccessibleEvent, Explicit);
impl_from_dbus_message!(LegacyAddAccessibleEvent, Explicit);
impl_event_properties!(LegacyAddAccessibleEvent);
impl_to_dbus_message!(LegacyAddAccessibleEvent);
impl BusProperties for LegacyAddAccessibleEvent {
const REGISTRY_EVENT_STRING: &'static str = "Cache:Add";
const MATCH_RULE_STRING: &'static str =
"type='signal',interface='org.a11y.atspi.Cache',member='AddAccessible'";
const DBUS_MEMBER: &'static str = "AddAccessible";
const DBUS_INTERFACE: &'static str = "org.a11y.atspi.Cache";
}
#[cfg(feature = "zbus")]
impl MessageConversion for LegacyAddAccessibleEvent {
type Body = LegacyCacheItem;
fn from_message_unchecked_parts(item: ObjectRef, body: Self::Body) -> Result<Self, AtspiError> {
Ok(Self { item, node_added: body })
}
fn from_message_unchecked(msg: &zbus::Message) -> Result<Self, AtspiError> {
let item = msg.try_into()?;
let body = msg.body().deserialize()?;
Self::from_message_unchecked_parts(item, body)
}
fn body(&self) -> Self::Body {
self.node_added.clone()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq, Hash)]
pub struct AddAccessibleEvent {
pub item: ObjectRef,
pub node_added: CacheItem,
}
event_test_cases!(AddAccessibleEvent, Explicit);
impl BusProperties for AddAccessibleEvent {
const REGISTRY_EVENT_STRING: &'static str = "Cache:Add";
const MATCH_RULE_STRING: &'static str =
"type='signal',interface='org.a11y.atspi.Cache',member='AddAccessible'";
const DBUS_MEMBER: &'static str = "AddAccessible";
const DBUS_INTERFACE: &'static str = "org.a11y.atspi.Cache";
}
#[cfg(feature = "zbus")]
impl MessageConversion for AddAccessibleEvent {
type Body = CacheItem;
fn from_message_unchecked_parts(item: ObjectRef, body: Self::Body) -> Result<Self, AtspiError> {
Ok(Self { item, node_added: body })
}
fn from_message_unchecked(msg: &zbus::Message) -> Result<Self, AtspiError> {
let item = msg.try_into()?;
let body = msg.body().deserialize()?;
Self::from_message_unchecked_parts(item, body)
}
fn body(&self) -> Self::Body {
self.node_added.clone()
}
}
impl_from_dbus_message!(AddAccessibleEvent, Explicit);
impl_event_properties!(AddAccessibleEvent);
impl_to_dbus_message!(AddAccessibleEvent);
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq, Hash)]
pub struct RemoveAccessibleEvent {
pub item: ObjectRef,
pub node_removed: ObjectRef,
}
event_test_cases!(RemoveAccessibleEvent, Explicit);
impl BusProperties for RemoveAccessibleEvent {
const REGISTRY_EVENT_STRING: &'static str = "Cache:Remove";
const MATCH_RULE_STRING: &'static str =
"type='signal',interface='org.a11y.atspi.Cache',member='RemoveAccessible'";
const DBUS_MEMBER: &'static str = "RemoveAccessible";
const DBUS_INTERFACE: &'static str = "org.a11y.atspi.Cache";
}
#[cfg(feature = "zbus")]
impl MessageConversion for RemoveAccessibleEvent {
type Body = ObjectRef;
fn from_message_unchecked_parts(item: ObjectRef, body: Self::Body) -> Result<Self, AtspiError> {
Ok(Self { item, node_removed: body })
}
fn from_message_unchecked(msg: &zbus::Message) -> Result<Self, AtspiError> {
let item = msg.try_into()?;
let body = msg.body().deserialize()?;
Self::from_message_unchecked_parts(item, body)
}
fn body(&self) -> Self::Body {
self.node_removed.clone()
}
}
impl_from_dbus_message!(RemoveAccessibleEvent, Explicit);
impl_event_properties!(RemoveAccessibleEvent);
impl_to_dbus_message!(RemoveAccessibleEvent);