1#[cfg(feature = "zbus")]
2use crate::error::AtspiError;
3#[cfg(feature = "zbus")]
4use crate::events::EventBody;
5#[cfg(feature = "zbus")]
6use crate::events::MessageConversion;
7use crate::events::{
8 DBusInterface, DBusMatchRule, DBusMember, EventBodyOwned, RegistryEventString,
9};
10use crate::object_ref::ObjectRefOwned;
11#[cfg(feature = "zbus")]
12use crate::{EventProperties, ObjectRef};
13use serde::Deserialize;
14use serde::Serialize;
15#[cfg(feature = "zbus")]
16use zbus::message::{Body as DbusBody, Header};
17
18#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
19pub struct PropertyChangeEvent {
20 pub item: ObjectRefOwned,
22 pub property: String,
23}
24
25impl_event_type_properties_for_event!(PropertyChangeEvent);
26
27#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
29pub struct MinimizeEvent {
30 pub item: ObjectRefOwned,
32}
33
34impl_event_type_properties_for_event!(MinimizeEvent);
35
36#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
38pub struct MaximizeEvent {
39 pub item: ObjectRefOwned,
41}
42
43impl_event_type_properties_for_event!(MaximizeEvent);
44
45#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
46pub struct RestoreEvent {
47 pub item: ObjectRefOwned,
49}
50
51impl_event_type_properties_for_event!(RestoreEvent);
52
53#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
55pub struct CloseEvent {
56 pub item: ObjectRefOwned,
58}
59
60impl_event_type_properties_for_event!(CloseEvent);
61
62#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
64pub struct CreateEvent {
65 pub item: ObjectRefOwned,
67}
68
69impl_event_type_properties_for_event!(CreateEvent);
70
71#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
72pub struct ReparentEvent {
73 pub item: ObjectRefOwned,
75}
76
77impl_event_type_properties_for_event!(ReparentEvent);
78
79#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
81pub struct DesktopCreateEvent {
82 pub item: ObjectRefOwned,
84}
85
86impl_event_type_properties_for_event!(DesktopCreateEvent);
87
88#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
90pub struct DesktopDestroyEvent {
91 pub item: ObjectRefOwned,
93}
94
95impl_event_type_properties_for_event!(DesktopDestroyEvent);
96
97#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
98pub struct DestroyEvent {
99 pub item: ObjectRefOwned,
101}
102impl_event_type_properties_for_event!(DestroyEvent);
103
104#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
105pub struct ActivateEvent {
106 pub item: ObjectRefOwned,
108}
109
110impl_event_type_properties_for_event!(ActivateEvent);
111
112#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
113pub struct DeactivateEvent {
114 pub item: ObjectRefOwned,
116}
117
118impl_event_type_properties_for_event!(DeactivateEvent);
119
120#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
121pub struct RaiseEvent {
122 pub item: ObjectRefOwned,
124}
125
126impl_event_type_properties_for_event!(RaiseEvent);
127
128#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
129pub struct LowerEvent {
130 pub item: ObjectRefOwned,
132}
133
134impl_event_type_properties_for_event!(LowerEvent);
135
136#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
137pub struct MoveEvent {
138 pub item: ObjectRefOwned,
140}
141
142impl_event_type_properties_for_event!(MoveEvent);
143
144#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
146pub struct ResizeEvent {
147 pub item: ObjectRefOwned,
149}
150
151impl_event_type_properties_for_event!(ResizeEvent);
152
153#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
154pub struct ShadeEvent {
155 pub item: ObjectRefOwned,
157}
158
159impl_event_type_properties_for_event!(ShadeEvent);
160
161#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
162pub struct UUshadeEvent {
163 pub item: ObjectRefOwned,
165}
166
167impl_event_type_properties_for_event!(UUshadeEvent);
168
169#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Hash, Default)]
170pub struct RestyleEvent {
171 pub item: ObjectRefOwned,
173}
174
175impl_event_type_properties_for_event!(RestyleEvent);
176
177impl_member_interface_registry_string_and_match_rule_for_event!(
178 PropertyChangeEvent,
179 "PropertyChange",
180 "org.a11y.atspi.Event.Window",
181 "window:property-change",
182 "type='signal',interface='org.a11y.atspi.Event.Window',member='PropertyChange'"
183);
184
185#[cfg(feature = "zbus")]
186impl MessageConversion<'_> for PropertyChangeEvent {
187 type Body<'a> = EventBody<'a>;
188
189 fn from_message_unchecked_parts(item: ObjectRef, body: DbusBody) -> Result<Self, AtspiError> {
190 let mut body = body.deserialize_unchecked::<Self::Body<'_>>()?;
191 Ok(Self { item: item.into(), property: body.take_kind() })
192 }
193
194 fn from_message_unchecked(msg: &zbus::Message, header: &Header) -> Result<Self, AtspiError> {
195 let item = header.try_into()?;
196 let body = msg.body();
197 Self::from_message_unchecked_parts(item, body)
198 }
199
200 fn body(&self) -> Self::Body<'_> {
201 EventBody::Owned(EventBodyOwned { kind: self.property.clone(), ..Default::default() })
202 }
203}
204
205impl_member_interface_registry_string_and_match_rule_for_event!(
206 MinimizeEvent,
207 "Minimize",
208 "org.a11y.atspi.Event.Window",
209 "window:minimize",
210 "type='signal',interface='org.a11y.atspi.Event.Window',member='Minimize'"
211);
212
213impl_member_interface_registry_string_and_match_rule_for_event!(
214 MaximizeEvent,
215 "Maximize",
216 "org.a11y.atspi.Event.Window",
217 "window:maximize",
218 "type='signal',interface='org.a11y.atspi.Event.Window',member='Maximize'"
219);
220
221impl_member_interface_registry_string_and_match_rule_for_event!(
222 RestoreEvent,
223 "Restore",
224 "org.a11y.atspi.Event.Window",
225 "window:restore",
226 "type='signal',interface='org.a11y.atspi.Event.Window',member='Restore'"
227);
228
229impl_member_interface_registry_string_and_match_rule_for_event!(
230 CloseEvent,
231 "Close",
232 "org.a11y.atspi.Event.Window",
233 "window:close",
234 "type='signal',interface='org.a11y.atspi.Event.Window',member='Close'"
235);
236
237impl_member_interface_registry_string_and_match_rule_for_event!(
238 CreateEvent,
239 "Create",
240 "org.a11y.atspi.Event.Window",
241 "window:create",
242 "type='signal',interface='org.a11y.atspi.Event.Window',member='Create'"
243);
244
245impl_member_interface_registry_string_and_match_rule_for_event!(
246 ReparentEvent,
247 "Reparent",
248 "org.a11y.atspi.Event.Window",
249 "window:reparent",
250 "type='signal',interface='org.a11y.atspi.Event.Window',member='Reparent'"
251);
252
253impl_member_interface_registry_string_and_match_rule_for_event!(
254 DesktopCreateEvent,
255 "DesktopCreate",
256 "org.a11y.atspi.Event.Window",
257 "window:desktop-create",
258 "type='signal',interface='org.a11y.atspi.Event.Window',member='DesktopCreate'"
259);
260
261impl_member_interface_registry_string_and_match_rule_for_event!(
262 DesktopDestroyEvent,
263 "DesktopDestroy",
264 "org.a11y.atspi.Event.Window",
265 "window:desktop-destroy",
266 "type='signal',interface='org.a11y.atspi.Event.Window',member='DesktopDestroy'"
267);
268
269impl_member_interface_registry_string_and_match_rule_for_event!(
270 DestroyEvent,
271 "Destroy",
272 "org.a11y.atspi.Event.Window",
273 "window:destroy",
274 "type='signal',interface='org.a11y.atspi.Event.Window',member='Destroy'"
275);
276
277impl_member_interface_registry_string_and_match_rule_for_event!(
278 ActivateEvent,
279 "Activate",
280 "org.a11y.atspi.Event.Window",
281 "window:activate",
282 "type='signal',interface='org.a11y.atspi.Event.Window',member='Activate'"
283);
284
285impl_member_interface_registry_string_and_match_rule_for_event!(
286 DeactivateEvent,
287 "Deactivate",
288 "org.a11y.atspi.Event.Window",
289 "window:deactivate",
290 "type='signal',interface='org.a11y.atspi.Event.Window',member='Deactivate'"
291);
292
293impl_member_interface_registry_string_and_match_rule_for_event!(
294 RaiseEvent,
295 "Raise",
296 "org.a11y.atspi.Event.Window",
297 "window:raise",
298 "type='signal',interface='org.a11y.atspi.Event.Window',member='Raise'"
299);
300
301impl_member_interface_registry_string_and_match_rule_for_event!(
302 LowerEvent,
303 "Lower",
304 "org.a11y.atspi.Event.Window",
305 "window:lower",
306 "type='signal',interface='org.a11y.atspi.Event.Window',member='Lower'"
307);
308
309impl_member_interface_registry_string_and_match_rule_for_event!(
310 MoveEvent,
311 "Move",
312 "org.a11y.atspi.Event.Window",
313 "window:move",
314 "type='signal',interface='org.a11y.atspi.Event.Window',member='Move'"
315);
316
317impl_member_interface_registry_string_and_match_rule_for_event!(
318 ResizeEvent,
319 "Resize",
320 "org.a11y.atspi.Event.Window",
321 "window:resize",
322 "type='signal',interface='org.a11y.atspi.Event.Window',member='Resize'"
323);
324
325impl_member_interface_registry_string_and_match_rule_for_event!(
326 ShadeEvent,
327 "Shade",
328 "org.a11y.atspi.Event.Window",
329 "window:shade",
330 "type='signal',interface='org.a11y.atspi.Event.Window',member='Shade'"
331);
332
333impl_member_interface_registry_string_and_match_rule_for_event!(
334 UUshadeEvent,
335 "uUshade",
336 "org.a11y.atspi.Event.Window",
337 "window:uushade",
338 "type='signal',interface='org.a11y.atspi.Event.Window',member='uUshade'"
339);
340
341impl_member_interface_registry_string_and_match_rule_for_event!(
342 RestyleEvent,
343 "Restyle",
344 "org.a11y.atspi.Event.Window",
345 "window:restyle",
346 "type='signal',interface='org.a11y.atspi.Event.Window',member='Restyle'"
347);
348
349event_test_cases!(PropertyChangeEvent);
350impl_to_dbus_message!(PropertyChangeEvent);
351impl_from_dbus_message!(PropertyChangeEvent);
352impl_event_properties!(PropertyChangeEvent);
353impl From<PropertyChangeEvent> for EventBodyOwned {
354 fn from(event: PropertyChangeEvent) -> Self {
355 EventBodyOwned { kind: event.property, ..Default::default() }
356 }
357}
358
359event_test_cases!(MinimizeEvent);
360impl_to_dbus_message!(MinimizeEvent);
361impl_from_dbus_message!(MinimizeEvent);
362impl_event_properties!(MinimizeEvent);
363impl_from_object_ref!(MinimizeEvent);
364
365event_test_cases!(MaximizeEvent);
366impl_to_dbus_message!(MaximizeEvent);
367impl_from_dbus_message!(MaximizeEvent);
368impl_event_properties!(MaximizeEvent);
369impl_from_object_ref!(MaximizeEvent);
370
371event_test_cases!(RestoreEvent);
372impl_to_dbus_message!(RestoreEvent);
373impl_from_dbus_message!(RestoreEvent);
374impl_event_properties!(RestoreEvent);
375impl_from_object_ref!(RestoreEvent);
376
377event_test_cases!(CloseEvent);
378impl_to_dbus_message!(CloseEvent);
379impl_from_dbus_message!(CloseEvent);
380impl_event_properties!(CloseEvent);
381impl_from_object_ref!(CloseEvent);
382
383event_test_cases!(CreateEvent);
384impl_to_dbus_message!(CreateEvent);
385impl_from_dbus_message!(CreateEvent);
386impl_event_properties!(CreateEvent);
387impl_from_object_ref!(CreateEvent);
388
389event_test_cases!(ReparentEvent);
390impl_to_dbus_message!(ReparentEvent);
391impl_from_dbus_message!(ReparentEvent);
392impl_event_properties!(ReparentEvent);
393impl_from_object_ref!(ReparentEvent);
394
395event_test_cases!(DesktopCreateEvent);
396impl_to_dbus_message!(DesktopCreateEvent);
397impl_from_dbus_message!(DesktopCreateEvent);
398impl_event_properties!(DesktopCreateEvent);
399impl_from_object_ref!(DesktopCreateEvent);
400
401event_test_cases!(DesktopDestroyEvent);
402impl_to_dbus_message!(DesktopDestroyEvent);
403impl_from_dbus_message!(DesktopDestroyEvent);
404impl_event_properties!(DesktopDestroyEvent);
405impl_from_object_ref!(DesktopDestroyEvent);
406
407event_test_cases!(DestroyEvent);
408impl_to_dbus_message!(DestroyEvent);
409impl_from_dbus_message!(DestroyEvent);
410impl_event_properties!(DestroyEvent);
411impl_from_object_ref!(DestroyEvent);
412
413event_test_cases!(ActivateEvent);
414impl_to_dbus_message!(ActivateEvent);
415impl_from_dbus_message!(ActivateEvent);
416impl_event_properties!(ActivateEvent);
417impl_from_object_ref!(ActivateEvent);
418
419event_test_cases!(DeactivateEvent);
420impl_to_dbus_message!(DeactivateEvent);
421impl_from_dbus_message!(DeactivateEvent);
422impl_event_properties!(DeactivateEvent);
423impl_from_object_ref!(DeactivateEvent);
424
425event_test_cases!(RaiseEvent);
426impl_to_dbus_message!(RaiseEvent);
427impl_from_dbus_message!(RaiseEvent);
428impl_event_properties!(RaiseEvent);
429impl_from_object_ref!(RaiseEvent);
430
431event_test_cases!(LowerEvent);
432impl_to_dbus_message!(LowerEvent);
433impl_from_dbus_message!(LowerEvent);
434impl_event_properties!(LowerEvent);
435impl_from_object_ref!(LowerEvent);
436
437event_test_cases!(MoveEvent);
438impl_to_dbus_message!(MoveEvent);
439impl_from_dbus_message!(MoveEvent);
440impl_event_properties!(MoveEvent);
441impl_from_object_ref!(MoveEvent);
442
443event_test_cases!(ResizeEvent);
444impl_to_dbus_message!(ResizeEvent);
445impl_from_dbus_message!(ResizeEvent);
446impl_event_properties!(ResizeEvent);
447impl_from_object_ref!(ResizeEvent);
448
449event_test_cases!(ShadeEvent);
450impl_to_dbus_message!(ShadeEvent);
451impl_from_dbus_message!(ShadeEvent);
452impl_event_properties!(ShadeEvent);
453impl_from_object_ref!(ShadeEvent);
454
455event_test_cases!(UUshadeEvent);
456impl_to_dbus_message!(UUshadeEvent);
457impl_from_dbus_message!(UUshadeEvent);
458impl_event_properties!(UUshadeEvent);
459impl_from_object_ref!(UUshadeEvent);
460
461event_test_cases!(RestyleEvent);
462impl_to_dbus_message!(RestyleEvent);
463impl_from_dbus_message!(RestyleEvent);
464impl_event_properties!(RestyleEvent);
465impl_from_object_ref!(RestyleEvent);
466
467impl_msg_conversion_ext_for_target_type!(PropertyChangeEvent);
468impl_msg_conversion_ext_for_target_type!(MinimizeEvent);
469impl_msg_conversion_ext_for_target_type!(MaximizeEvent);
470impl_msg_conversion_ext_for_target_type!(RestoreEvent);
471impl_msg_conversion_ext_for_target_type!(CloseEvent);
472impl_msg_conversion_ext_for_target_type!(CreateEvent);
473impl_msg_conversion_ext_for_target_type!(ReparentEvent);
474impl_msg_conversion_ext_for_target_type!(DesktopCreateEvent);
475impl_msg_conversion_ext_for_target_type!(DesktopDestroyEvent);
476impl_msg_conversion_ext_for_target_type!(DestroyEvent);
477impl_msg_conversion_ext_for_target_type!(ActivateEvent);
478impl_msg_conversion_ext_for_target_type!(DeactivateEvent);
479impl_msg_conversion_ext_for_target_type!(RaiseEvent);
480impl_msg_conversion_ext_for_target_type!(LowerEvent);
481impl_msg_conversion_ext_for_target_type!(MoveEvent);
482impl_msg_conversion_ext_for_target_type!(ResizeEvent);
483impl_msg_conversion_ext_for_target_type!(ShadeEvent);
484impl_msg_conversion_ext_for_target_type!(UUshadeEvent);
485impl_msg_conversion_ext_for_target_type!(RestyleEvent);
486
487impl_msg_conversion_for_types_built_from_object_ref!(MinimizeEvent);
488impl_msg_conversion_for_types_built_from_object_ref!(MaximizeEvent);
489impl_msg_conversion_for_types_built_from_object_ref!(RestoreEvent);
490impl_msg_conversion_for_types_built_from_object_ref!(CloseEvent);
491impl_msg_conversion_for_types_built_from_object_ref!(CreateEvent);
492impl_msg_conversion_for_types_built_from_object_ref!(ReparentEvent);
493impl_msg_conversion_for_types_built_from_object_ref!(DesktopCreateEvent);
494impl_msg_conversion_for_types_built_from_object_ref!(DesktopDestroyEvent);
495impl_msg_conversion_for_types_built_from_object_ref!(DestroyEvent);
496impl_msg_conversion_for_types_built_from_object_ref!(ActivateEvent);
497impl_msg_conversion_for_types_built_from_object_ref!(DeactivateEvent);
498impl_msg_conversion_for_types_built_from_object_ref!(RaiseEvent);
499impl_msg_conversion_for_types_built_from_object_ref!(LowerEvent);
500impl_msg_conversion_for_types_built_from_object_ref!(MoveEvent);
501impl_msg_conversion_for_types_built_from_object_ref!(ResizeEvent);
502impl_msg_conversion_for_types_built_from_object_ref!(ShadeEvent);
503impl_msg_conversion_for_types_built_from_object_ref!(UUshadeEvent);
504impl_msg_conversion_for_types_built_from_object_ref!(RestyleEvent);