events.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //! Convert a serialized event to an event Trigger
  2. //!
  3. use std::rc::Rc;
  4. use dioxus_core::{
  5. events::{
  6. on::{MouseEvent, MouseEventInner},
  7. SyntheticEvent,
  8. },
  9. ElementId, EventPriority, ScopeId, UserEvent,
  10. };
  11. #[derive(serde::Serialize, serde::Deserialize)]
  12. struct ImEvent {
  13. event: String,
  14. mounted_dom_id: u64,
  15. scope: u64,
  16. }
  17. pub fn trigger_from_serialized(val: serde_json::Value) -> UserEvent {
  18. let mut data: Vec<ImEvent> = serde_json::from_value(val).unwrap();
  19. let data = data.drain(..).next().unwrap();
  20. let event = SyntheticEvent::MouseEvent(MouseEvent(Rc::new(WebviewMouseEvent)));
  21. let scope = ScopeId(data.scope as usize);
  22. let mounted_dom_id = Some(ElementId(data.mounted_dom_id as usize));
  23. UserEvent {
  24. name: todo!(),
  25. event,
  26. scope,
  27. mounted_dom_id,
  28. }
  29. }
  30. #[derive(Debug)]
  31. struct WebviewMouseEvent;
  32. impl MouseEventInner for WebviewMouseEvent {
  33. fn alt_key(&self) -> bool {
  34. todo!()
  35. }
  36. fn button(&self) -> i16 {
  37. todo!()
  38. }
  39. fn buttons(&self) -> u16 {
  40. todo!()
  41. }
  42. fn client_x(&self) -> i32 {
  43. todo!()
  44. }
  45. fn client_y(&self) -> i32 {
  46. todo!()
  47. }
  48. fn ctrl_key(&self) -> bool {
  49. todo!()
  50. }
  51. fn meta_key(&self) -> bool {
  52. todo!()
  53. }
  54. fn page_x(&self) -> i32 {
  55. todo!()
  56. }
  57. fn page_y(&self) -> i32 {
  58. todo!()
  59. }
  60. fn screen_x(&self) -> i32 {
  61. todo!()
  62. }
  63. fn screen_y(&self) -> i32 {
  64. todo!()
  65. }
  66. fn shift_key(&self) -> bool {
  67. todo!()
  68. }
  69. fn get_modifier_state(&self, key_code: &str) -> bool {
  70. todo!()
  71. }
  72. }