atspi_common/events/
cache.rs1#[cfg(feature = "zbus")]
2use crate::error::AtspiError;
3use crate::events::{DBusInterface, DBusMatchRule, DBusMember, RegistryEventString};
4#[cfg(feature = "zbus")]
5use crate::EventProperties;
6use crate::{
7 cache::{CacheItem, LegacyCacheItem},
8 events::ObjectRef,
9};
10use serde::{Deserialize, Serialize};
11#[cfg(feature = "zbus")]
12use zbus::message::{Body as DbusBody, Header};
13
14#[cfg(feature = "zbus")]
15use super::{MessageConversion, MessageConversionExt};
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq, Hash)]
20pub struct LegacyAddAccessibleEvent {
21 pub item: ObjectRef,
23 pub node_added: LegacyCacheItem,
25}
26
27impl_event_type_properties_for_event!(LegacyAddAccessibleEvent);
28
29event_test_cases!(LegacyAddAccessibleEvent, Explicit);
30impl_from_dbus_message!(LegacyAddAccessibleEvent, Explicit);
31impl_event_properties!(LegacyAddAccessibleEvent);
32impl_to_dbus_message!(LegacyAddAccessibleEvent);
33
34impl_member_interface_registry_string_and_match_rule_for_event!(
35 LegacyAddAccessibleEvent,
36 "AddAccessible",
37 "org.a11y.atspi.Cache",
38 "cache:add",
39 "type='signal',interface='org.a11y.atspi.Cache',member='AddAccessible'"
40);
41
42#[cfg(feature = "zbus")]
43impl MessageConversion<'_> for LegacyAddAccessibleEvent {
44 type Body<'msg> = LegacyCacheItem;
45
46 fn from_message_unchecked_parts(item: ObjectRef, body: DbusBody) -> Result<Self, AtspiError> {
47 Ok(Self { item, node_added: body.deserialize_unchecked::<Self::Body<'_>>()? })
48 }
49
50 fn from_message_unchecked(msg: &zbus::Message, header: &Header) -> Result<Self, AtspiError> {
51 let item = header.try_into()?;
52 let body = msg.body();
53 Self::from_message_unchecked_parts(item, body)
54 }
55
56 fn body(&self) -> Self::Body<'_> {
57 self.node_added.clone()
58 }
59}
60
61#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq, Hash)]
64pub struct AddAccessibleEvent {
65 pub item: ObjectRef,
67 pub node_added: CacheItem,
69}
70
71impl_event_type_properties_for_event!(AddAccessibleEvent);
72
73event_test_cases!(AddAccessibleEvent, Explicit);
74
75impl_member_interface_registry_string_and_match_rule_for_event!(
76 AddAccessibleEvent,
77 "AddAccessible",
78 "org.a11y.atspi.Cache",
79 "cache:add",
80 "type='signal',interface='org.a11y.atspi.Cache',member='AddAccessible'"
81);
82
83#[cfg(feature = "zbus")]
84impl MessageConversion<'_> for AddAccessibleEvent {
85 type Body<'msg> = CacheItem;
86
87 fn from_message_unchecked_parts(item: ObjectRef, body: DbusBody) -> Result<Self, AtspiError> {
88 Ok(Self { item, node_added: body.deserialize_unchecked::<Self::Body<'_>>()? })
89 }
90
91 fn from_message_unchecked(msg: &zbus::Message, header: &Header) -> Result<Self, AtspiError> {
92 let item = header.try_into()?;
93 let body = msg.body();
94 Self::from_message_unchecked_parts(item, body)
95 }
96
97 fn body(&self) -> Self::Body<'_> {
98 self.node_added.clone()
99 }
100}
101
102impl_msg_conversion_ext_for_target_type_with_specified_body_type!(target: AddAccessibleEvent, body: CacheItem);
103impl_from_dbus_message!(AddAccessibleEvent, Explicit);
104impl_event_properties!(AddAccessibleEvent);
105impl_to_dbus_message!(AddAccessibleEvent);
106
107#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq, Hash)]
109pub struct RemoveAccessibleEvent {
110 pub item: ObjectRef,
113 pub node_removed: ObjectRef,
115}
116
117impl_event_type_properties_for_event!(RemoveAccessibleEvent);
118
119event_test_cases!(RemoveAccessibleEvent, Explicit);
120
121impl_member_interface_registry_string_and_match_rule_for_event!(
122 RemoveAccessibleEvent,
123 "RemoveAccessible",
124 "org.a11y.atspi.Cache",
125 "cache:remove",
126 "type='signal',interface='org.a11y.atspi.Cache',member='RemoveAccessible'"
127);
128
129#[cfg(feature = "zbus")]
130impl MessageConversion<'_> for RemoveAccessibleEvent {
131 type Body<'msg> = ObjectRef;
132
133 fn from_message_unchecked_parts(item: ObjectRef, body: DbusBody) -> Result<Self, AtspiError> {
134 Ok(Self { item, node_removed: body.deserialize_unchecked::<Self::Body<'_>>()? })
135 }
136
137 fn from_message_unchecked(msg: &zbus::Message, header: &Header) -> Result<Self, AtspiError> {
138 let item = header.try_into()?;
139 let body = msg.body();
140 Self::from_message_unchecked_parts(item, body)
141 }
142
143 fn body(&self) -> Self::Body<'_> {
144 self.node_removed.clone()
145 }
146}
147
148#[cfg(feature = "zbus")]
149impl MessageConversionExt<'_, LegacyCacheItem> for LegacyAddAccessibleEvent {
150 fn try_from_message(msg: &zbus::Message, hdr: &Header) -> Result<Self, AtspiError> {
151 <LegacyAddAccessibleEvent as MessageConversionExt<crate::LegacyCacheItem>>::validate_interface(hdr)?;
152 <LegacyAddAccessibleEvent as MessageConversionExt<crate::LegacyCacheItem>>::validate_member(hdr)?;
153 <LegacyAddAccessibleEvent as MessageConversionExt<crate::LegacyCacheItem>>::validate_body(
154 msg,
155 )?;
156 <LegacyAddAccessibleEvent as MessageConversion>::from_message_unchecked(msg, hdr)
157 }
158}
159
160impl_msg_conversion_ext_for_target_type_with_specified_body_type!(target: RemoveAccessibleEvent, body: ObjectRef);
161impl_from_dbus_message!(RemoveAccessibleEvent, Explicit);
162impl_event_properties!(RemoveAccessibleEvent);
163impl_to_dbus_message!(RemoveAccessibleEvent);