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 {
29 [EditorBrowsable(EditorBrowsableState.Never)]
30 public AccessibilityGesture type { get; set; }
32 [EditorBrowsable(EditorBrowsableState.Never)]
33 public int xBeg { get; set; }
35 [EditorBrowsable(EditorBrowsableState.Never)]
36 public int xEnd { get; set; }
38 [EditorBrowsable(EditorBrowsableState.Never)]
39 public int yBeg { get; set; }
41 [EditorBrowsable(EditorBrowsableState.Never)]
42 public int yEnd { get; set; }
44 [EditorBrowsable(EditorBrowsableState.Never)]
45 public AccessibilityGestureState state { get; set; }
47 [EditorBrowsable(EditorBrowsableState.Never)]
48 public uint eventTime { get; set; }
50 [EditorBrowsable(EditorBrowsableState.Never)]
51 public override bool Equals(System.Object obj)
53 if ((obj == null) || !this.GetType().Equals(obj.GetType()))
56 GestureInfoType sec = (GestureInfoType)obj;
64 eventTime == sec.eventTime;
67 [EditorBrowsable(EditorBrowsableState.Never)]
68 public override int GetHashCode()
70 return Tuple.Create((int)type, xBeg, xEnd, yBeg, yEnd, (int)state, eventTime).GetHashCode();
75 /// View is the base class for all views.
77 /// <since_tizen> 3 </since_tizen>
78 public partial class View
80 internal class ControlHandle : SafeHandle {
81 public ControlHandle() : base (IntPtr.Zero, true) {}
83 public ControlHandle(IntPtr ptr) : base(ptr, true) {}
85 public override bool IsInvalid {
87 return this.handle == IntPtr.Zero;
91 protected override bool ReleaseHandle() {
92 Interop.View.DeleteControlHandleView(handle);
93 this.SetHandle(IntPtr.Zero);
98 [EditorBrowsable(EditorBrowsableState.Never)]
99 ControlHandle GetControl() {
100 var ret = new ControlHandle(Interop.View.DownCast(SwigCPtr));
101 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
105 ///////////////////////////////////////////////////////////////////
106 // ***************** AccessiblityDoGestureSignal ****************//
107 ///////////////////////////////////////////////////////////////////
109 private delegate void GestureInfoHandlerType(IntPtr data);
110 private GestureInfoHandlerType gestureInfoCallback;
111 private EventHandler<GestureInfoEventArgs> gestureInfoHandler;
113 [EditorBrowsable(EditorBrowsableState.Never)]
114 public class GestureInfoEventArgs : EventArgs
116 public GestureInfoType gestureInfo { get; internal set; }
117 public int boolValue { get; set; }
120 private void OnGestureInfoEvent(IntPtr data) {
121 if (data == IntPtr.Zero)
124 if (Marshal.SizeOf<GestureInfoType>() != AccessibilityDoGestureSignal.GetSizeOfGestureInfo()) {
125 throw new global::System.ApplicationException("ABI mismatch SizeOf(C# GestureInfo) != SizeOf(c++ GestureInfo)");
128 var arg = new GestureInfoEventArgs();
130 arg.boolValue = AccessibilityDoGestureSignal.GetResult(data);
131 arg.gestureInfo = (GestureInfoType)Marshal.PtrToStructure(data, typeof(GestureInfoType));
133 gestureInfoHandler?.Invoke(this, arg);
135 AccessibilityDoGestureSignal.SetResult(data, Convert.ToInt32(arg.boolValue));
138 // This uses DoGestureInfo signal from C++ API.
139 [EditorBrowsable(EditorBrowsableState.Never)]
140 public event EventHandler<GestureInfoEventArgs> GestureInfoReceived {
142 if (gestureInfoHandler == null) {
143 gestureInfoCallback = OnGestureInfoEvent;
144 GestureInfoSignal().Connect(gestureInfoCallback);
146 gestureInfoHandler += value;
149 gestureInfoHandler -= value;
150 if (gestureInfoHandler == null && GestureInfoSignal().Empty() == false)
151 GestureInfoSignal().Disconnect(gestureInfoCallback);
155 internal AccessibilityDoGestureSignal GestureInfoSignal() {
156 var handle = GetControl();
157 AccessibilityDoGestureSignal ret = new AccessibilityDoGestureSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityDoGestureSignal(handle), false);
158 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
162 ///////////////////////////////////////////////////////////////////
163 // ************** AccessiblityGetDescriptionSignal ************* //
164 ///////////////////////////////////////////////////////////////////
166 private delegate void GetDescriptionHandlerType(IntPtr data);
167 private GetDescriptionHandlerType getDescriptionCallback;
168 private EventHandler<GetDescriptionEventArgs> getDescriptionHandler;
170 [EditorBrowsable(EditorBrowsableState.Never)]
171 public class GetDescriptionEventArgs : EventArgs
173 public string description { get; internal set; }
176 private void OnGetDescriptionEvent(IntPtr data) {
177 if (data == IntPtr.Zero)
180 var arg = new GetDescriptionEventArgs();
181 arg.description = StringToVoidSignal.ConvertParam1(data);
183 getDescriptionHandler?.Invoke(this, arg);
186 // This uses GetDescription signal from C++ API.
187 [EditorBrowsable(EditorBrowsableState.Never)]
188 public event EventHandler<GetDescriptionEventArgs> DescriptionRequested {
190 if (getDescriptionHandler == null) {
191 getDescriptionCallback = OnGetDescriptionEvent;
192 GetDescriptionSignal().Connect(getDescriptionCallback);
194 getDescriptionHandler += value;
197 getDescriptionHandler -= value;
198 if (getDescriptionHandler == null && GetDescriptionSignal().Empty() == false)
199 GetDescriptionSignal().Disconnect(getDescriptionCallback);
203 internal StringToVoidSignal GetDescriptionSignal() {
204 var handle = GetControl();
205 StringToVoidSignal ret = new StringToVoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityGetDescriptionSignal(handle), false);
206 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
210 ///////////////////////////////////////////////////////////////////
211 // ***************** AccessiblityGetNameSignal ***************** //
212 ///////////////////////////////////////////////////////////////////
214 private delegate void GetNameHandlerType(IntPtr data);
215 private GetNameHandlerType getNameCallback;
216 private EventHandler<GetNameEventArgs> getNameHandler;
218 [EditorBrowsable(EditorBrowsableState.Never)]
219 public class GetNameEventArgs : EventArgs
221 public string description { get; internal set; }
224 private void OnGetNameEvent(IntPtr data) {
225 if (data == IntPtr.Zero)
228 var arg = new GetNameEventArgs();
229 arg.description = StringToVoidSignal.ConvertParam1(data);
231 getNameHandler?.Invoke(this, arg);
234 // This uses GetName signal from C++ API.
235 [EditorBrowsable(EditorBrowsableState.Never)]
236 public event EventHandler<GetNameEventArgs> NameRequested {
238 if (getNameHandler == null) {
239 getNameCallback = OnGetNameEvent;
240 GetNameSignal().Connect(getNameCallback);
242 getNameHandler += value;
245 getNameHandler -= value;
246 if (getNameHandler == null && GetNameSignal().Empty() == false)
247 GetNameSignal().Disconnect(getNameCallback);
251 internal StringToVoidSignal GetNameSignal() {
252 var handle = GetControl();
253 StringToVoidSignal ret = new StringToVoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityGetNameSignal(handle), false);
254 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
258 ///////////////////////////////////////////////////////////////////
259 // **************** AccessibilityActivateSignal **************** //
260 ///////////////////////////////////////////////////////////////////
262 private delegate void VoidHandlerType();
263 private VoidHandlerType activateCallback;
264 private EventHandler activateHandler;
266 private void OnActivateEvent() {
267 activateHandler?.Invoke(this, null);
270 [EditorBrowsable(EditorBrowsableState.Never)]
271 public event EventHandler Activate {
273 if (activateHandler == null) {
274 activateCallback = OnActivateEvent;
275 ActivateSignal().Connect(activateCallback);
277 activateHandler += value;
280 activateHandler -= value;
281 if (activateHandler == null && ActivateSignal().Empty() == false)
282 ActivateSignal().Disconnect(activateCallback);
286 internal VoidSignal ActivateSignal() {
287 var handle = GetControl();
288 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityActivateSignal(handle), false);
289 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
293 ///////////////////////////////////////////////////////////////////
294 // ************ AccessibilityReadingSkippedSignal ************** //
295 ///////////////////////////////////////////////////////////////////
297 private VoidHandlerType readingSkippedCallback;
298 private EventHandler readingSkippedHandler;
300 private void OnReadingSkippedEvent() {
301 readingSkippedHandler?.Invoke(this, null);
304 [EditorBrowsable(EditorBrowsableState.Never)]
305 public event EventHandler ReadingSkipped {
307 if (readingSkippedHandler == null) {
308 readingSkippedCallback = OnReadingSkippedEvent;
309 ReadingSkippedSignal().Connect(readingSkippedCallback);
311 readingSkippedHandler += value;
314 readingSkippedHandler -= value;
315 if (readingSkippedHandler == null && ReadingSkippedSignal().Empty() == false)
316 ReadingSkippedSignal().Disconnect(readingSkippedCallback);
320 internal VoidSignal ReadingSkippedSignal() {
321 var handle = GetControl();
322 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingSkippedSignal(handle), false);
323 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
327 ///////////////////////////////////////////////////////////////////
328 // ************* AccessibilityReadingPausedSignal ************** //
329 ///////////////////////////////////////////////////////////////////
331 private VoidHandlerType readingPausedCallback;
332 private EventHandler readingPausedHandler;
334 private void OnReadingPausedEvent() {
335 readingPausedHandler?.Invoke(this, null);
338 [EditorBrowsable(EditorBrowsableState.Never)]
339 public event EventHandler ReadingPaused {
341 if (readingPausedHandler == null) {
342 readingPausedCallback = OnReadingPausedEvent;
343 ReadingPausedSignal().Connect(readingPausedCallback);
345 readingPausedHandler += value;
348 readingPausedHandler -= value;
349 if (readingPausedHandler == null && ReadingPausedSignal().Empty() == false)
350 ReadingPausedSignal().Disconnect(readingPausedCallback);
354 internal VoidSignal ReadingPausedSignal() {
355 var handle = GetControl();
356 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingPausedSignal(handle), false);
357 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
361 ///////////////////////////////////////////////////////////////////
362 // ************* AccessibilityReadingResumedSignal ************* //
363 ///////////////////////////////////////////////////////////////////
365 private VoidHandlerType readingResumedCallback;
366 private EventHandler readingResumedHandler;
368 private void OnReadingResumedEvent() {
369 readingResumedHandler?.Invoke(this, null);
372 [EditorBrowsable(EditorBrowsableState.Never)]
373 public event EventHandler ReadingResumed {
375 if (readingResumedHandler == null) {
376 readingResumedCallback = OnReadingResumedEvent;
377 ReadingResumedSignal().Connect(readingResumedCallback);
379 readingResumedHandler += value;
382 readingResumedHandler -= value;
383 if (readingResumedHandler == null && ReadingResumedSignal().Empty() == false)
384 ReadingResumedSignal().Disconnect(readingResumedCallback);
388 internal VoidSignal ReadingResumedSignal() {
389 var handle = GetControl();
390 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingResumedSignal(handle), false);
391 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
395 ///////////////////////////////////////////////////////////////////
396 // ************ AccessibilityReadingCancelledSignal ************ //
397 ///////////////////////////////////////////////////////////////////
399 private VoidHandlerType readingCancelledCallback;
400 private EventHandler readingCancelledHandler;
402 private void OnReadingCancelledEvent() {
403 readingCancelledHandler?.Invoke(this, null);
406 [EditorBrowsable(EditorBrowsableState.Never)]
407 public event EventHandler ReadingCancelled {
409 if (readingCancelledHandler == null) {
410 readingCancelledCallback = OnReadingCancelledEvent;
411 ReadingCancelledSignal().Connect(readingCancelledCallback);
413 readingCancelledHandler += value;
416 readingCancelledHandler -= value;
417 if (readingCancelledHandler == null && ReadingCancelledSignal().Empty() == false)
418 ReadingCancelledSignal().Disconnect(readingCancelledCallback);
422 internal VoidSignal ReadingCancelledSignal() {
423 var handle = GetControl();
424 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingCancelledSignal(handle), false);
425 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
429 ///////////////////////////////////////////////////////////////////
430 // ************* AccessibilityReadingStoppedSignal ************* //
431 ///////////////////////////////////////////////////////////////////
433 private VoidHandlerType readingStoppedCallback;
434 private EventHandler readingStoppedHandler;
436 private void OnReadingStoppedEvent() {
437 readingStoppedHandler?.Invoke(this, null);
440 [EditorBrowsable(EditorBrowsableState.Never)]
441 public event EventHandler ReadingStopped {
443 if (readingStoppedHandler == null) {
444 readingStoppedCallback = OnReadingStoppedEvent;
445 ReadingStoppedSignal().Connect(readingStoppedCallback);
447 readingStoppedHandler += value;
450 readingStoppedHandler -= value;
451 if (readingStoppedHandler == null && ReadingStoppedSignal().Empty() == false)
452 ReadingStoppedSignal().Disconnect(readingStoppedCallback);
456 internal VoidSignal ReadingStoppedSignal() {
457 var handle = GetControl();
458 VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingStoppedSignal(handle), false);
459 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();