2 * Copyright(c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using System.ComponentModel;
20 using System.Runtime.InteropServices;
21 using Tizen.NUI.Components;
24 namespace Tizen.NUI.BaseComponents
26 [EditorBrowsable(EditorBrowsableState.Never)]
27 [StructLayout(LayoutKind.Sequential)]
28 public struct GestureInfoType : IEquatable<GestureInfoType>
30 [EditorBrowsable(EditorBrowsableState.Never)]
31 public AccessibilityGesture type { get; set; }
33 [EditorBrowsable(EditorBrowsableState.Never)]
34 public int xBeg { get; set; }
36 [EditorBrowsable(EditorBrowsableState.Never)]
37 public int xEnd { get; set; }
39 [EditorBrowsable(EditorBrowsableState.Never)]
40 public int yBeg { get; set; }
42 [EditorBrowsable(EditorBrowsableState.Never)]
43 public int yEnd { get; set; }
45 [EditorBrowsable(EditorBrowsableState.Never)]
46 public AccessibilityGestureState state { get; set; }
48 [EditorBrowsable(EditorBrowsableState.Never)]
49 public uint eventTime { get; set; }
51 [EditorBrowsable(EditorBrowsableState.Never)]
52 public override bool Equals(System.Object obj)
54 if (obj is GestureInfoType)
56 return this.Equals((GestureInfoType)obj);
61 public bool Equals(GestureInfoType other)
63 if ((other == null) || !this.GetType().Equals(other.GetType()))
66 GestureInfoType sec = (GestureInfoType)other;
74 eventTime == sec.eventTime;
77 [EditorBrowsable(EditorBrowsableState.Never)]
78 public static bool operator ==(GestureInfoType arg1, GestureInfoType arg2)
80 return arg1.Equals(arg2);
86 [EditorBrowsable(EditorBrowsableState.Never)]
87 public static bool operator !=(GestureInfoType arg1, GestureInfoType arg2)
89 return !arg1.Equals(arg2);
92 [EditorBrowsable(EditorBrowsableState.Never)]
93 public override int GetHashCode()
95 return Tuple.Create((int)type, xBeg, xEnd, yBeg, yEnd, (int)state, eventTime).GetHashCode();
99 [EditorBrowsable(EditorBrowsableState.Never)]
100 public class GestureInfoEventArgs : EventArgs
102 public GestureInfoType GestureInfo { get; internal set; }
103 public int Consumed { get; set; }
106 [EditorBrowsable(EditorBrowsableState.Never)]
107 public class GetDescriptionEventArgs : EventArgs
109 public string Description { get; internal set; }
112 [EditorBrowsable(EditorBrowsableState.Never)]
113 public class GetNameEventArgs : EventArgs
115 public string Description { get; internal set; }
119 /// View is the base class for all views.
121 /// <since_tizen> 3 </since_tizen>
122 public partial class View
124 internal class ControlHandle : SafeHandle
126 public ControlHandle() : base(IntPtr.Zero, true) { }
128 public ControlHandle(IntPtr ptr) : base(ptr, true) { }
130 public override bool IsInvalid
134 return this.handle == IntPtr.Zero;
138 protected override bool ReleaseHandle()
140 Interop.View.DeleteControlHandleView(handle);
141 this.SetHandle(IntPtr.Zero);
146 [EditorBrowsable(EditorBrowsableState.Never)]
147 ControlHandle GetControl()
149 var ret = new ControlHandle(Interop.View.DownCast(SwigCPtr));
150 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
154 ///////////////////////////////////////////////////////////////////
155 // ***************** AccessiblityDoGestureSignal ****************//
156 ///////////////////////////////////////////////////////////////////
158 private delegate void GestureInfoHandlerType(IntPtr data);
159 private GestureInfoHandlerType gestureInfoCallback;
160 private EventHandler<GestureInfoEventArgs> gestureInfoHandler;
161 private AccessibilityDoGestureSignal gestureInfoSignal;
163 private void OnAccessibilityGestureInfoEvent(IntPtr data)
165 if (data == IntPtr.Zero)
168 if (Marshal.SizeOf<GestureInfoType>() != AccessibilityDoGestureSignal.GetSizeOfGestureInfo())
170 throw new global::System.ApplicationException("ABI mismatch SizeOf(C# GestureInfo) != SizeOf(c++ GestureInfo)");
173 var arg = new GestureInfoEventArgs();
175 arg.Consumed = AccessibilityDoGestureSignal.GetResult(data);
176 arg.GestureInfo = (GestureInfoType)Marshal.PtrToStructure(data, typeof(GestureInfoType));
178 gestureInfoHandler?.Invoke(this, arg);
180 AccessibilityDoGestureSignal.SetResult(data, Convert.ToInt32(arg.Consumed));
183 // This uses DoGestureInfo signal from C++ API.
184 [EditorBrowsable(EditorBrowsableState.Never)]
185 public event EventHandler<GestureInfoEventArgs> AccessibilityGestureInfoReceived
189 if (gestureInfoHandler == null)
191 gestureInfoCallback = OnAccessibilityGestureInfoEvent;
192 gestureInfoSignal = this.AccessibilityGestureInfoSignal();
193 gestureInfoSignal?.Connect(gestureInfoCallback);
195 gestureInfoHandler += value;
199 gestureInfoHandler -= value;
200 if (gestureInfoHandler == null && gestureInfoCallback != null)
202 gestureInfoSignal?.Disconnect(gestureInfoCallback);
203 gestureInfoSignal?.Dispose();
204 gestureInfoSignal = null;
209 internal AccessibilityDoGestureSignal AccessibilityGestureInfoSignal()
211 var handle = GetControl();
212 AccessibilityDoGestureSignal ret = new AccessibilityDoGestureSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityDoGestureSignal(handle), false);
213 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
217 ///////////////////////////////////////////////////////////////////
218 // ************** AccessiblityGetDescriptionSignal ************* //
219 ///////////////////////////////////////////////////////////////////
221 private delegate void GetDescriptionHandlerType(IntPtr data);
222 private GetDescriptionHandlerType getDescriptionCallback;
223 private EventHandler<GetDescriptionEventArgs> getDescriptionHandler;
224 private StringToVoidSignal getDescriptionSignal;
226 private void OnGetAccessibilityDescriptionEvent(IntPtr data)
228 if (data == IntPtr.Zero)
231 var arg = new GetDescriptionEventArgs();
232 arg.Description = StringToVoidSignal.ConvertParam1(data);
234 getDescriptionHandler?.Invoke(this, arg);
237 // This uses GetDescription signal from C++ API.
238 [EditorBrowsable(EditorBrowsableState.Never)]
239 public event EventHandler<GetDescriptionEventArgs> AccessibilityDescriptionRequested
243 if (getDescriptionHandler == null)
245 getDescriptionCallback = OnGetAccessibilityDescriptionEvent;
246 getDescriptionSignal = this.GetAccessibilityDescriptionSignal();
247 getDescriptionSignal?.Connect(getDescriptionCallback);
249 getDescriptionHandler += value;
253 getDescriptionHandler -= value;
254 if (getDescriptionHandler == null && getDescriptionCallback != null)
256 getDescriptionSignal?.Disconnect(getDescriptionCallback);
257 getDescriptionSignal?.Dispose();
258 getDescriptionSignal = null;
263 internal StringToVoidSignal GetAccessibilityDescriptionSignal()
265 var handle = GetControl();
266 StringToVoidSignal ret = new StringToVoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityGetDescriptionSignal(handle), false);
267 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
271 ///////////////////////////////////////////////////////////////////
272 // ***************** AccessiblityGetNameSignal ***************** //
273 ///////////////////////////////////////////////////////////////////
275 private delegate void GetNameHandlerType(IntPtr data);
276 private GetNameHandlerType getNameCallback;
277 private EventHandler<GetNameEventArgs> getNameHandler;
278 private StringToVoidSignal getNameSignal;
280 private void OnGetAccessibilityNameEvent(IntPtr data)
282 if (data == IntPtr.Zero)
285 var arg = new GetNameEventArgs();
286 arg.Description = StringToVoidSignal.ConvertParam1(data);
288 getNameHandler?.Invoke(this, arg);
291 // This uses GetName signal from C++ API.
292 [EditorBrowsable(EditorBrowsableState.Never)]
293 public event EventHandler<GetNameEventArgs> AccessibilityNameRequested
297 if (getNameHandler == null)
299 getNameCallback = OnGetAccessibilityNameEvent;
300 getNameSignal = this.GetAccessibilityNameSignal();
301 getNameSignal?.Connect(getNameCallback);
303 getNameHandler += value;
307 getNameHandler -= value;
308 if (getNameHandler == null && getNameCallback != null)
310 getNameSignal?.Disconnect(getNameCallback);
311 getNameSignal?.Dispose();
312 getNameSignal = null;
317 internal StringToVoidSignal GetAccessibilityNameSignal()
319 var handle = GetControl();
320 StringToVoidSignal ret = new StringToVoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityGetNameSignal(handle), false);
321 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
325 ///////////////////////////////////////////////////////////////////
326 // **************** AccessibilityActivatedSignal **************** //
327 ///////////////////////////////////////////////////////////////////
329 private delegate void VoidHandlerType();
330 private VoidHandlerType activateCallback;
331 private EventHandler activateHandler;
332 internal VoidSignal ActivateSignal;
334 private void OnAccessibilityActivatedEvent()
336 activateHandler?.Invoke(this, null);
339 [EditorBrowsable(EditorBrowsableState.Never)]
340 public event EventHandler AccessibilityActivated
344 if (activateHandler == null)
346 activateCallback = OnAccessibilityActivatedEvent;
347 ActivateSignal = this.AccessibilityActivatedSignal();
348 ActivateSignal?.Connect(activateCallback);
350 activateHandler += value;
354 activateHandler -= value;
355 if (activateHandler == null && activateCallback != null)
357 ActivateSignal?.Disconnect(activateCallback);
358 ActivateSignal?.Dispose();
359 ActivateSignal = null;
364 internal VoidSignal AccessibilityActivatedSignal()
366 var handle = GetControl();
367 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityActivateSignal(handle), false);
368 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
372 ///////////////////////////////////////////////////////////////////
373 // ************ AccessibilityReadingSkippedSignal ************** //
374 ///////////////////////////////////////////////////////////////////
376 private VoidHandlerType readingSkippedCallback;
377 private EventHandler readingSkippedHandler;
378 internal VoidSignal ReadingSkippedSignal;
380 private void OnAccessibilityReadingSkippedEvent()
382 readingSkippedHandler?.Invoke(this, null);
385 [EditorBrowsable(EditorBrowsableState.Never)]
386 public event EventHandler AccessibilityReadingSkipped
390 if (readingSkippedHandler == null)
392 readingSkippedCallback = OnAccessibilityReadingSkippedEvent;
393 ReadingSkippedSignal = this.AccessibilityReadingSkippedSignal();
394 ReadingSkippedSignal?.Connect(readingSkippedCallback);
396 readingSkippedHandler += value;
400 readingSkippedHandler -= value;
401 if (readingSkippedHandler == null && readingSkippedCallback != null)
403 ReadingSkippedSignal?.Disconnect(readingSkippedCallback);
404 ReadingSkippedSignal?.Dispose();
405 ReadingSkippedSignal = null;
410 internal VoidSignal AccessibilityReadingSkippedSignal()
412 var handle = GetControl();
413 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingSkippedSignal(handle), false);
414 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
418 ///////////////////////////////////////////////////////////////////
419 // ************* AccessibilityReadingPausedSignal ************** //
420 ///////////////////////////////////////////////////////////////////
422 private VoidHandlerType readingPausedCallback;
423 private EventHandler readingPausedHandler;
424 internal VoidSignal ReadingPausedSignal;
426 private void OnAccessibilityReadingPausedEvent()
428 readingPausedHandler?.Invoke(this, null);
431 [EditorBrowsable(EditorBrowsableState.Never)]
432 public event EventHandler AccessibilityReadingPaused
436 if (readingPausedHandler == null)
438 readingPausedCallback = OnAccessibilityReadingPausedEvent;
439 ReadingPausedSignal = this.AccessibilityReadingPausedSignal();
440 ReadingPausedSignal?.Connect(readingPausedCallback);
442 readingPausedHandler += value;
446 readingPausedHandler -= value;
447 if (readingPausedHandler == null && readingPausedCallback != null)
449 ReadingPausedSignal?.Disconnect(readingPausedCallback);
450 ReadingPausedSignal?.Dispose();
451 ReadingPausedSignal = null;
456 internal VoidSignal AccessibilityReadingPausedSignal()
458 var handle = GetControl();
459 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingPausedSignal(handle), false);
460 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
464 ///////////////////////////////////////////////////////////////////
465 // ************* AccessibilityReadingResumedSignal ************* //
466 ///////////////////////////////////////////////////////////////////
468 private VoidHandlerType readingResumedCallback;
469 private EventHandler readingResumedHandler;
470 internal VoidSignal ReadingResumedSignal;
472 private void OnAccessibilityReadingResumedEvent()
474 readingResumedHandler?.Invoke(this, null);
477 [EditorBrowsable(EditorBrowsableState.Never)]
478 public event EventHandler AccessibilityReadingResumed
482 if (readingResumedHandler == null)
484 readingResumedCallback = OnAccessibilityReadingResumedEvent;
485 ReadingResumedSignal = this.AccessibilityReadingResumedSignal();
486 ReadingResumedSignal?.Connect(readingResumedCallback);
488 readingResumedHandler += value;
492 readingResumedHandler -= value;
493 if (readingResumedHandler == null && readingResumedCallback != null)
495 ReadingResumedSignal?.Disconnect(readingResumedCallback);
496 ReadingResumedSignal?.Dispose();
497 ReadingResumedSignal = null;
502 internal VoidSignal AccessibilityReadingResumedSignal()
504 var handle = GetControl();
505 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingResumedSignal(handle), false);
506 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
510 ///////////////////////////////////////////////////////////////////
511 // ************ AccessibilityReadingCancelledSignal ************ //
512 ///////////////////////////////////////////////////////////////////
514 private VoidHandlerType readingCancelledCallback;
515 private EventHandler readingCancelledHandler;
516 internal VoidSignal ReadingCancelledSignal;
518 private void OnAccessibilityReadingCancelledEvent()
520 readingCancelledHandler?.Invoke(this, null);
523 [EditorBrowsable(EditorBrowsableState.Never)]
524 public event EventHandler AccessibilityReadingCancelled
528 if (readingCancelledHandler == null)
530 readingCancelledCallback = OnAccessibilityReadingCancelledEvent;
531 ReadingCancelledSignal = this.AccessibilityReadingCancelledSignal();
532 ReadingCancelledSignal?.Connect(readingCancelledCallback);
534 readingCancelledHandler += value;
538 readingCancelledHandler -= value;
539 if (readingCancelledHandler == null && readingCancelledCallback != null)
541 ReadingCancelledSignal?.Disconnect(readingCancelledCallback);
542 ReadingCancelledSignal?.Dispose();
543 ReadingCancelledSignal = null;
548 internal VoidSignal AccessibilityReadingCancelledSignal()
550 var handle = GetControl();
551 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingCancelledSignal(handle), false);
552 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
556 ///////////////////////////////////////////////////////////////////
557 // ************* AccessibilityReadingStoppedSignal ************* //
558 ///////////////////////////////////////////////////////////////////
560 private VoidHandlerType readingStoppedCallback;
561 private EventHandler readingStoppedHandler;
562 internal VoidSignal ReadingStoppedSignal;
564 private void OnAccessibilityReadingStoppedEvent()
566 readingStoppedHandler?.Invoke(this, null);
569 [EditorBrowsable(EditorBrowsableState.Never)]
570 public event EventHandler AccessibilityReadingStopped
574 if (readingStoppedHandler == null)
576 readingStoppedCallback = OnAccessibilityReadingStoppedEvent;
577 ReadingStoppedSignal = this.AccessibilityReadingStoppedSignal();
578 ReadingStoppedSignal?.Connect(readingStoppedCallback);
580 readingStoppedHandler += value;
584 readingStoppedHandler -= value;
585 if (readingStoppedHandler == null && readingStoppedCallback != null)
587 ReadingStoppedSignal?.Disconnect(readingStoppedCallback);
588 ReadingStoppedSignal?.Dispose();
589 ReadingStoppedSignal = null;
594 internal VoidSignal AccessibilityReadingStoppedSignal()
596 var handle = GetControl();
597 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingStoppedSignal(handle), false);
598 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();