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.BaseComponents;
26 /// The window class is used internally for drawing.<br />
27 /// The window has an orientation and indicator properties.<br />
29 /// <since_tizen> 3 </since_tizen>
30 public partial class Window
32 private WindowFocusChangedEventCallbackType windowFocusChangedEventCallback;
33 private RootLayerTouchDataCallbackType rootLayerTouchDataCallback;
34 private WheelEventCallbackType wheelEventCallback;
35 private EventCallbackDelegateType1 stageKeyCallbackDelegate;
36 private EventCallbackDelegateType0 stageEventProcessingFinishedEventCallbackDelegate;
37 private EventHandler stageContextLostEventHandler;
38 private EventCallbackDelegateType0 stageContextLostEventCallbackDelegate;
39 private EventHandler stageContextRegainedEventHandler;
40 private EventCallbackDelegateType0 stageContextRegainedEventCallbackDelegate;
41 private EventHandler stageSceneCreatedEventHandler;
42 private EventCallbackDelegateType0 stageSceneCreatedEventCallbackDelegate;
43 private WindowResizeEventCallbackType windowResizeEventCallback;
44 private WindowFocusChangedEventCallbackType windowFocusChangedEventCallback2;
45 private TransitionEffectEventCallbackType transitionEffectEventCallback;
46 private WindowTransitionEffectSignal transitionEffectSignal;
47 private KeyboardRepeatSettingsChangedEventCallbackType keyboardRepeatSettingsChangedEventCallback;
48 private KeyboardRepeatSettingsChangedSignal keyboardRepeatSettingsChangedSignal;
49 private WindowFocusSignalType windowFocusChangedSignal;
50 private WindowFocusSignalType windowFocusChangedSignal2;
51 private TouchDataSignal touchDataSignal;
52 private TouchSignal touchSignal;
53 private WheelSignal wheelSignal;
54 private StageWheelSignal stageWheelSignal;
55 private KeyEventSignal keyEventSignal;
56 private VoidSignal sceneCreatedSignal;
57 private ResizeSignal resizeSignal;
58 private VoidSignal eventProcessingFinishedSignal;
59 private VoidSignal contextLostSignal;
60 private VoidSignal contextRegainedSignal;
62 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
63 private delegate void WindowFocusChangedEventCallbackType(IntPtr window, bool focusGained);
64 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
65 private delegate bool RootLayerTouchDataCallbackType(IntPtr view, IntPtr touchData);
66 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
67 private delegate bool WheelEventCallbackType(IntPtr view, IntPtr wheelEvent);
68 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
69 private delegate void WindowResizeEventCallbackType(IntPtr window, IntPtr windowSize);
70 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
71 private delegate void WindowFocusChangedEventCallbackType2(IntPtr window, bool focusGained);
72 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
73 private delegate void TransitionEffectEventCallbackType(IntPtr window, int state, int type);
74 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
75 private delegate void KeyboardRepeatSettingsChangedEventCallbackType();
78 /// FocusChanged event.
80 /// <since_tizen> 3 </since_tizen>
81 public event EventHandler<FocusChangedEventArgs> FocusChanged
85 if (windowFocusChangedEventHandler == null)
87 windowFocusChangedEventCallback = OnWindowFocusedChanged;
88 windowFocusChangedSignal = WindowFocusChangedSignal();
89 windowFocusChangedSignal?.Connect(windowFocusChangedEventCallback);
92 windowFocusChangedEventHandler += value;
96 windowFocusChangedEventHandler -= value;
98 if (windowFocusChangedEventHandler == null && windowFocusChangedSignal?.Empty() == false && windowFocusChangedEventCallback != null)
100 windowFocusChangedSignal?.Disconnect(windowFocusChangedEventCallback);
106 /// Emits the event when the screen is touched and when the touch ends.<br />
107 /// If there are multiple touch points then it is emitted when the first touch occurs and
108 /// when the last finger is lifted too.<br />
109 /// Even though incoming events are interrupted, the event occurs.<br />
111 /// <since_tizen> 3 </since_tizen>
112 public event EventHandler<TouchEventArgs> TouchEvent
116 if (rootLayerTouchDataEventHandler == null)
118 rootLayerTouchDataCallback = OnWindowTouch;
119 touchDataSignal = this.TouchDataSignal();
120 touchDataSignal?.Connect(rootLayerTouchDataCallback);
122 rootLayerTouchDataEventHandler += value;
126 rootLayerTouchDataEventHandler -= value;
127 touchSignal = TouchSignal();
128 if (rootLayerTouchDataEventHandler == null && touchSignal?.Empty() == false && rootLayerTouchDataCallback != null)
130 touchDataSignal?.Disconnect(rootLayerTouchDataCallback);
136 /// Emits the event when the wheel event is received.
138 /// <since_tizen> 3 </since_tizen>
139 public event EventHandler<WheelEventArgs> WheelEvent
143 if (stageWheelHandler == null)
145 wheelEventCallback = OnStageWheel;
146 wheelSignal = WheelEventSignal();
147 wheelSignal?.Connect(wheelEventCallback);
149 stageWheelHandler += value;
151 if (DetentEventHandler == null)
153 DetentEventCallback = OnDetentEvent;
154 stageWheelSignal = StageWheelEventSignal();
155 stageWheelSignal?.Connect(DetentEventCallback);
157 DetentEventHandler += value;
161 stageWheelHandler -= value;
162 if (stageWheelHandler == null && wheelSignal?.Empty() == false)
164 wheelSignal?.Disconnect(wheelEventCallback);
167 DetentEventHandler -= value;
168 if (DetentEventHandler == null && stageWheelSignal?.Empty() == false)
170 stageWheelSignal?.Disconnect(DetentEventCallback);
176 /// Emits the event when the key event is received.
178 /// <since_tizen> 3 </since_tizen>
179 public event EventHandler<KeyEventArgs> KeyEvent
183 if (stageKeyHandler == null)
185 stageKeyCallbackDelegate = OnStageKey;
186 keyEventSignal = KeyEventSignal();
187 keyEventSignal?.Connect(stageKeyCallbackDelegate);
189 stageKeyHandler += value;
193 stageKeyHandler -= value;
194 if (stageKeyHandler == null && keyEventSignal?.Empty() == false)
196 keyEventSignal?.Disconnect(stageKeyCallbackDelegate);
202 /// Emits the event when the window resized.
204 /// <since_tizen> 3 </since_tizen>
205 public event EventHandler<ResizedEventArgs> Resized
209 if (windowResizeEventHandler == null)
211 windowResizeEventCallback = OnResized;
212 resizeSignal = ResizeSignal();
213 resizeSignal?.Connect(windowResizeEventCallback);
216 windowResizeEventHandler += value;
220 windowResizeEventHandler -= value;
222 if (windowResizeEventHandler == null && resizeSignal?.Empty() == false && windowResizeEventCallback != null)
224 resizeSignal?.Disconnect(windowResizeEventCallback);
230 /// Please do not use! this will be deprecated. Please use 'FocusChanged' event instead.
232 /// <since_tizen> 3 </since_tizen>
233 /// Please do not use! this will be deprecated!
234 /// Instead please use FocusChanged.
235 [Obsolete("Please do not use! This will be deprecated! Please use FocusChanged instead! " +
237 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
238 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
239 [EditorBrowsable(EditorBrowsableState.Never)]
240 public event EventHandler<FocusChangedEventArgs> WindowFocusChanged
244 if (windowFocusChangedEventHandler2 == null)
246 windowFocusChangedEventCallback2 = OnWindowFocusedChanged2;
247 windowFocusChangedSignal2 = WindowFocusChangedSignal();
248 windowFocusChangedSignal2?.Connect(windowFocusChangedEventCallback2);
251 windowFocusChangedEventHandler2 += value;
255 windowFocusChangedEventHandler2 -= value;
257 if (windowFocusChangedEventHandler2 == null && windowFocusChangedSignal2?.Empty() == false && windowFocusChangedEventCallback2 != null)
259 windowFocusChangedSignal2?.Disconnect(windowFocusChangedEventCallback2);
267 [EditorBrowsable(EditorBrowsableState.Never)]
268 public event EventHandler<TransitionEffectEventArgs> TransitionEffect
272 if (transitionEffectHandler == null)
274 transitionEffectEventCallback = OnTransitionEffect;
275 TransitionEffectEventSignal().Connect(transitionEffectEventCallback);
277 transitionEffectHandler += value;
281 transitionEffectHandler -= value;
282 if (transitionEffectHandler == null && TransitionEffectEventSignal().Empty() == false)
284 TransitionEffectEventSignal().Disconnect(transitionEffectEventCallback);
290 /// Keyboard Repeat Settings Changed
292 [EditorBrowsable(EditorBrowsableState.Never)]
293 public event EventHandler KeyboardRepeatSettingsChanged
297 if (keyboardRepeatSettingsChangedHandler == null)
299 keyboardRepeatSettingsChangedEventCallback = OnKeyboardRepeatSettingsChanged;
300 KeyboardRepeatSettingsChangedEventSignal().Connect(keyboardRepeatSettingsChangedEventCallback);
302 keyboardRepeatSettingsChangedHandler += value;
306 keyboardRepeatSettingsChangedHandler -= value;
307 if (keyboardRepeatSettingsChangedHandler == null && KeyboardRepeatSettingsChangedEventSignal().Empty() == false)
309 KeyboardRepeatSettingsChangedEventSignal().Disconnect(keyboardRepeatSettingsChangedEventCallback);
315 /// ViewAdded will be triggered when the view added on Window
317 /// <since_tizen> 6 </since_tizen>
318 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
319 [EditorBrowsable(EditorBrowsableState.Never)]
320 public event EventHandler ViewAdded;
321 private event EventHandler<FocusChangedEventArgs> windowFocusChangedEventHandler;
322 private event EventHandler<TouchEventArgs> rootLayerTouchDataEventHandler;
323 private event EventHandler<WheelEventArgs> stageWheelHandler;
324 private event EventHandler<KeyEventArgs> stageKeyHandler;
325 private event EventHandler stageEventProcessingFinishedEventHandler;
326 private event EventHandler<ResizedEventArgs> windowResizeEventHandler;
327 private event EventHandler<FocusChangedEventArgs> windowFocusChangedEventHandler2;
328 private event EventHandler<TransitionEffectEventArgs> transitionEffectHandler;
329 private event EventHandler keyboardRepeatSettingsChangedHandler;
331 internal void SendViewAdded(View view)
333 ViewAdded?.Invoke(view, EventArgs.Empty);
336 internal event EventHandler EventProcessingFinished
340 if (stageEventProcessingFinishedEventHandler == null)
342 stageEventProcessingFinishedEventCallbackDelegate = OnEventProcessingFinished;
343 eventProcessingFinishedSignal = EventProcessingFinishedSignal();
344 eventProcessingFinishedSignal?.Connect(stageEventProcessingFinishedEventCallbackDelegate);
346 stageEventProcessingFinishedEventHandler += value;
351 stageEventProcessingFinishedEventHandler -= value;
352 if (stageEventProcessingFinishedEventHandler == null && eventProcessingFinishedSignal?.Empty() == false)
354 eventProcessingFinishedSignal?.Disconnect(stageEventProcessingFinishedEventCallbackDelegate);
359 internal event EventHandler ContextLost
363 if (stageContextLostEventHandler == null)
365 stageContextLostEventCallbackDelegate = OnContextLost;
366 contextLostSignal = ContextLostSignal();
367 contextLostSignal?.Connect(stageContextLostEventCallbackDelegate);
369 stageContextLostEventHandler += value;
373 stageContextLostEventHandler -= value;
374 if (stageContextLostEventHandler == null && contextLostSignal?.Empty() == false)
376 contextLostSignal?.Disconnect(stageContextLostEventCallbackDelegate);
381 internal event EventHandler ContextRegained
385 if (stageContextRegainedEventHandler == null)
387 stageContextRegainedEventCallbackDelegate = OnContextRegained;
388 contextRegainedSignal = ContextRegainedSignal();
389 contextRegainedSignal?.Connect(stageContextRegainedEventCallbackDelegate);
391 stageContextRegainedEventHandler += value;
395 stageContextRegainedEventHandler -= value;
396 if (stageContextRegainedEventHandler == null && contextRegainedSignal?.Empty() == false)
398 contextRegainedSignal?.Disconnect(stageContextRegainedEventCallbackDelegate);
403 internal event EventHandler SceneCreated
407 if (stageSceneCreatedEventHandler == null)
409 stageSceneCreatedEventCallbackDelegate = OnSceneCreated;
410 sceneCreatedSignal = SceneCreatedSignal();
411 sceneCreatedSignal?.Connect(stageSceneCreatedEventCallbackDelegate);
413 stageSceneCreatedEventHandler += value;
417 stageSceneCreatedEventHandler -= value;
418 if (stageSceneCreatedEventHandler == null && sceneCreatedSignal?.Empty() == false)
420 sceneCreatedSignal?.Disconnect(stageSceneCreatedEventCallbackDelegate);
425 internal WindowFocusSignalType WindowFocusChangedSignal()
427 WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
428 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
432 internal WindowFocusSignalType FocusChangedSignal()
434 WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
435 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
439 internal KeyEventSignal KeyEventSignal()
441 KeyEventSignal ret = new KeyEventSignal(Interop.Window.KeyEventSignal(SwigCPtr), false);
442 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
446 internal VoidSignal EventProcessingFinishedSignal()
448 VoidSignal ret = new VoidSignal(Interop.StageSignal.EventProcessingFinishedSignal(stageCPtr), false);
449 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
453 internal TouchSignal TouchSignal()
455 TouchSignal ret = new TouchSignal(Interop.Window.TouchSignal(SwigCPtr), false);
456 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
460 internal TouchDataSignal TouchDataSignal()
462 TouchDataSignal ret = new TouchDataSignal(Interop.ActorSignal.ActorTouchSignal(Layer.getCPtr(GetRootLayer())), false);
463 if (NDalicPINVOKE.SWIGPendingException.Pending)
464 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
468 internal VoidSignal ContextLostSignal()
470 VoidSignal ret = new VoidSignal(Interop.StageSignal.ContextLostSignal(stageCPtr), false);
471 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
475 internal VoidSignal ContextRegainedSignal()
477 VoidSignal ret = new VoidSignal(Interop.StageSignal.ContextRegainedSignal(stageCPtr), false);
478 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
482 internal VoidSignal SceneCreatedSignal()
484 VoidSignal ret = new VoidSignal(Interop.StageSignal.SceneCreatedSignal(stageCPtr), false);
485 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
489 internal ResizeSignal ResizeSignal()
491 ResizeSignal ret = new ResizeSignal(Interop.Window.ResizeSignal(SwigCPtr), false);
492 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
496 internal System.IntPtr GetNativeWindowHandler()
498 System.IntPtr ret = Interop.Window.GetNativeWindowHandler(HandleRef.ToIntPtr(this.SwigCPtr));
499 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
504 /// Disconnect all native signals
506 /// <since_tizen> 5 </since_tizen>
507 internal void DisconnectNativeSignals()
509 if (windowFocusChangedEventCallback != null)
511 windowFocusChangedSignal?.Disconnect(windowFocusChangedEventCallback);
514 if (rootLayerTouchDataCallback != null)
516 touchDataSignal?.Disconnect(rootLayerTouchDataCallback);
519 if (wheelEventCallback != null)
521 wheelSignal?.Disconnect(wheelEventCallback);
524 if (DetentEventCallback != null)
526 stageWheelSignal?.Disconnect(DetentEventCallback);
529 if (stageKeyCallbackDelegate != null)
531 keyEventSignal?.Disconnect(stageKeyCallbackDelegate);
534 if (stageEventProcessingFinishedEventCallbackDelegate != null)
536 eventProcessingFinishedSignal?.Disconnect(stageEventProcessingFinishedEventCallbackDelegate);
539 if (stageContextLostEventCallbackDelegate != null)
541 contextLostSignal?.Disconnect(stageContextLostEventCallbackDelegate);
544 if (stageContextRegainedEventCallbackDelegate != null)
546 contextRegainedSignal?.Disconnect(stageContextRegainedEventCallbackDelegate);
549 if (stageSceneCreatedEventCallbackDelegate != null)
551 sceneCreatedSignal?.Disconnect(stageSceneCreatedEventCallbackDelegate);
554 if (windowResizeEventCallback != null)
556 resizeSignal?.Disconnect(windowResizeEventCallback);
559 if (windowFocusChangedEventCallback2 != null)
561 windowFocusChangedSignal2?.Disconnect(windowFocusChangedEventCallback2);
564 if (transitionEffectSignal != null)
566 TransitionEffectEventSignal().Disconnect(transitionEffectEventCallback);
569 if (keyboardRepeatSettingsChangedSignal != null)
571 KeyboardRepeatSettingsChangedEventSignal().Disconnect(keyboardRepeatSettingsChangedEventCallback);
575 private StageWheelSignal StageWheelEventSignal()
577 StageWheelSignal ret = new StageWheelSignal(Interop.StageSignal.WheelEventSignal(stageCPtr), false);
578 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
582 private WheelSignal WheelEventSignal()
584 WheelSignal ret = new WheelSignal(Interop.ActorSignal.ActorWheelEventSignal(Layer.getCPtr(this.GetRootLayer())), false);
585 if (NDalicPINVOKE.SWIGPendingException.Pending)
586 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
590 private WindowTransitionEffectSignal TransitionEffectEventSignal()
592 if (transitionEffectSignal == null)
594 transitionEffectSignal = new WindowTransitionEffectSignal(this);
595 if (NDalicPINVOKE.SWIGPendingException.Pending)
596 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
598 return transitionEffectSignal;
601 private KeyboardRepeatSettingsChangedSignal KeyboardRepeatSettingsChangedEventSignal()
603 if (keyboardRepeatSettingsChangedSignal == null)
605 keyboardRepeatSettingsChangedSignal = new KeyboardRepeatSettingsChangedSignal(this);
606 if (NDalicPINVOKE.SWIGPendingException.Pending)
607 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
609 return keyboardRepeatSettingsChangedSignal;
612 private void OnWindowFocusedChanged(IntPtr window, bool focusGained)
614 if (window == IntPtr.Zero)
616 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
620 if (windowFocusChangedEventHandler != null)
622 FocusChangedEventArgs e = new FocusChangedEventArgs();
623 e.FocusGained = focusGained;
624 windowFocusChangedEventHandler(this, e);
628 private bool OnWindowTouch(IntPtr view, IntPtr touchData)
630 if (touchData == global::System.IntPtr.Zero)
632 NUILog.Error("touchData should not be null!");
636 if (rootLayerTouchDataEventHandler != null)
638 TouchEventArgs e = new TouchEventArgs();
639 e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData);
640 rootLayerTouchDataEventHandler(this, e);
645 private bool OnStageWheel(IntPtr rootLayer, IntPtr wheelEvent)
647 if (wheelEvent == global::System.IntPtr.Zero)
649 NUILog.Error("wheelEvent should not be null!");
653 if (stageWheelHandler != null)
655 WheelEventArgs e = new WheelEventArgs();
656 e.Wheel = Tizen.NUI.Wheel.GetWheelFromPtr(wheelEvent);
657 stageWheelHandler(this, e);
662 // Callback for Stage KeyEventsignal
663 private void OnStageKey(IntPtr data)
665 if (stageKeyHandler != null)
667 KeyEventArgs e = new KeyEventArgs();
668 e.Key = Tizen.NUI.Key.GetKeyFromPtr(data);
669 //here we send all data to user event handlers
670 stageKeyHandler(this, e);
674 // Callback for Stage EventProcessingFinishedSignal
675 private void OnEventProcessingFinished()
677 stageEventProcessingFinishedEventHandler?.Invoke(this, null);
680 // Callback for Stage ContextLostSignal
681 private void OnContextLost()
683 stageContextLostEventHandler?.Invoke(this, null);
686 // Callback for Stage ContextRegainedSignal
687 private void OnContextRegained()
689 stageContextRegainedEventHandler?.Invoke(this, null);
692 // Callback for Stage SceneCreatedSignal
693 private void OnSceneCreated()
695 stageSceneCreatedEventHandler?.Invoke(this, null);
698 private void OnResized(IntPtr window, IntPtr windowSize)
700 if (window == IntPtr.Zero)
702 NUILog.Error("OnResized() Window is null! Do nothing!");
706 if (windowResizeEventHandler != null)
708 ResizedEventArgs e = new ResizedEventArgs();
709 // var val = new Uint16Pair(windowSize, false);
710 // e.WindowSize = new Size2D(val.GetWidth(), val.GetHeight());
713 // Workaround : windowSize should be valid pointer from dali,
714 // but currently it is fixed and is not Uint16Pair class.
715 // will be fixed later.
716 e.WindowSize = this.WindowSize;
717 windowResizeEventHandler(this, e);
721 private void OnWindowFocusedChanged2(IntPtr window, bool focusGained)
723 if (window == IntPtr.Zero)
725 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
729 if (windowFocusChangedEventHandler2 != null)
731 FocusChangedEventArgs e = new FocusChangedEventArgs();
732 e.FocusGained = focusGained;
733 windowFocusChangedEventHandler2(this, e);
737 private void OnTransitionEffect(IntPtr window, int state, int type)
739 if (window == global::System.IntPtr.Zero)
744 if (transitionEffectHandler != null)
746 TransitionEffectEventArgs e = new TransitionEffectEventArgs();
747 e.State = (EffectState)state;
748 e.Type = (EffectType)type;
749 transitionEffectHandler(this, e);
754 private void OnKeyboardRepeatSettingsChanged()
756 keyboardRepeatSettingsChangedHandler?.Invoke(this, null);
761 /// The focus changed event argument.
763 /// <since_tizen> 3 </since_tizen>
764 public class FocusChangedEventArgs : EventArgs
767 /// FocusGained flag.
769 /// <since_tizen> 3 </since_tizen>
770 public bool FocusGained
778 /// The touch event argument.
780 /// <since_tizen> 3 </since_tizen>
781 public class TouchEventArgs : EventArgs
788 /// <since_tizen> 3 </since_tizen>
803 /// Wheel event arguments.
805 /// <since_tizen> 3 </since_tizen>
806 public class WheelEventArgs : EventArgs
813 /// <since_tizen> 3 </since_tizen>
828 /// Key event arguments.
830 /// <since_tizen> 3 </since_tizen>
831 public class KeyEventArgs : EventArgs
838 /// <since_tizen> 3 </since_tizen>
853 /// Feeds a key event into the window.
854 /// This resized event arguments.
856 /// <since_tizen> 3 </since_tizen>
857 public class ResizedEventArgs : EventArgs
862 /// This window size.
864 /// <since_tizen> 4 </since_tizen>
865 public Size2D WindowSize
879 /// Please do not use! this will be deprecated
881 /// <since_tizen> 3 </since_tizen>
882 [Obsolete("Please do not use! This will be deprecated! Please use FocusChangedEventArgs instead! " +
884 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
885 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
886 [EditorBrowsable(EditorBrowsableState.Never)]
887 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
888 public class WindowFocusChangedEventArgs : EventArgs
891 /// Please do not use! this will be deprecated
893 /// <since_tizen> 3 </since_tizen>
894 public bool FocusGained
902 /// Contains and encapsulates Native Window handle.
904 /// <since_tizen> 4 </since_tizen>
905 [Obsolete("Deprecated in API9, will be removed in API11. Please use Window.NativeHandle instead!")]
906 public class SafeNativeWindowHandle : SafeHandle
909 ///Constructor, Native window handle is set to handle.
911 /// <since_tizen> 4 </since_tizen>
912 public SafeNativeWindowHandle() : base(IntPtr.Zero, false)
914 SetHandle(NUIApplication.GetDefaultWindow().GetNativeWindowHandler());
917 /// Null check if the handle is valid or not.
919 /// <since_tizen> 4 </since_tizen>
920 public override bool IsInvalid
924 return this.handle == IntPtr.Zero;
928 /// Release handle itself.
930 /// <returns>true when released successfully.</returns>
931 /// <since_tizen> 4 </since_tizen>
932 protected override bool ReleaseHandle()
939 /// TransitionEffectArgs
941 [EditorBrowsable(EditorBrowsableState.Never)]
942 public class TransitionEffectEventArgs : EventArgs
944 private EffectState state;
945 private EffectType type;
950 [EditorBrowsable(EditorBrowsableState.Never)]
951 public EffectState State
965 [EditorBrowsable(EditorBrowsableState.Never)]
966 public EffectType Type
979 private EventHandler<WheelEventArgs> DetentEventHandler;
981 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
982 private delegate void DetentEventCallbackType(IntPtr arg1);
984 private DetentEventCallbackType DetentEventCallback;
986 private void OnDetentEvent(IntPtr wheelEvent)
988 WheelEventArgs e = new WheelEventArgs();
990 if (wheelEvent != global::System.IntPtr.Zero)
992 e.Wheel = Wheel.GetWheelFromPtr(wheelEvent);
995 DetentEventHandler?.Invoke(this, e);
999 /// VisibilityChangedArgs
1001 [EditorBrowsable(EditorBrowsableState.Never)]
1002 public class VisibilityChangedEventArgs : EventArgs
1004 private bool visibility;
1008 [EditorBrowsable(EditorBrowsableState.Never)]
1009 public bool Visibility
1019 private void OnVisibilityChanged(IntPtr window, bool visibility)
1021 if (window == global::System.IntPtr.Zero)
1023 NUILog.Error("[ERR] OnVisibilityChanged() window is null");
1027 VisibilityChangedEventArgs e = new VisibilityChangedEventArgs();
1028 e.Visibility = visibility;
1029 if (VisibilityChangedEventHandler != null)
1031 VisibilityChangedEventHandler.Invoke(this, e);
1035 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1036 private delegate void VisibilityChangedEventCallbackType(IntPtr window, bool visibility);
1037 private VisibilityChangedEventCallbackType VisibilityChangedEventCallback;
1038 private event EventHandler<VisibilityChangedEventArgs> VisibilityChangedEventHandler;
1039 private WindowVisibilityChangedEvent VisibilityChangedEventSignal;
1044 [EditorBrowsable(EditorBrowsableState.Never)]
1045 public event EventHandler<VisibilityChangedEventArgs> VisibilityChanged
1049 if (VisibilityChangedEventHandler == null)
1051 VisibilityChangedEventCallback = OnVisibilityChanged;
1052 VisibilityChangedEventSignal = new WindowVisibilityChangedEvent(this);
1053 VisibilityChangedEventSignal.Connect(VisibilityChangedEventCallback);
1055 VisibilityChangedEventHandler += value;
1059 VisibilityChangedEventHandler -= value;
1060 if (VisibilityChangedEventHandler == null)
1062 if (VisibilityChangedEventSignal != null)
1064 if (VisibilityChangedEventSignal.Empty() == false)
1066 VisibilityChangedEventSignal.Disconnect(VisibilityChangedEventCallback);
1074 /// VisibiltyChangedSignalEmit
1076 [EditorBrowsable(EditorBrowsableState.Never)]
1077 public void VisibiltyChangedSignalEmit(bool visibility)
1079 if (VisibilityChangedEventSignal == null)
1081 VisibilityChangedEventSignal = new WindowVisibilityChangedEvent(this);
1083 VisibilityChangedEventSignal.Emit(this, visibility);