2 * Copyright(c) 2020 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;
50 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
51 private delegate void WindowFocusChangedEventCallbackType(IntPtr window, bool focusGained);
52 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
53 private delegate bool RootLayerTouchDataCallbackType(IntPtr view, IntPtr touchData);
54 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
55 private delegate bool WheelEventCallbackType(IntPtr view, IntPtr wheelEvent);
56 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
57 private delegate void WindowResizeEventCallbackType(IntPtr window, IntPtr windowSize);
58 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
59 private delegate void WindowFocusChangedEventCallbackType2(IntPtr window, bool focusGained);
60 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
61 private delegate void TransitionEffectEventCallbackType(IntPtr window, int state, int type);
62 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
63 private delegate void KeyboardRepeatSettingsChangedEventCallbackType();
66 /// FocusChanged event.
68 /// <since_tizen> 3 </since_tizen>
69 public event EventHandler<FocusChangedEventArgs> FocusChanged
73 if (_windowFocusChangedEventHandler == null)
75 _windowFocusChangedEventCallback = OnWindowFocusedChanged;
76 WindowFocusChangedSignal().Connect(_windowFocusChangedEventCallback);
79 _windowFocusChangedEventHandler += value;
83 _windowFocusChangedEventHandler -= value;
85 if (_windowFocusChangedEventHandler == null && WindowFocusChangedSignal().Empty() == false && _windowFocusChangedEventCallback != null)
87 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback);
93 /// Emits the event when the screen is touched and when the touch ends.<br />
94 /// If there are multiple touch points then it is emitted when the first touch occurs and
95 /// when the last finger is lifted too.<br />
96 /// Even though incoming events are interrupted, the event occurs.<br />
98 /// <since_tizen> 3 </since_tizen>
99 public event EventHandler<TouchEventArgs> TouchEvent
103 if (_rootLayerTouchDataEventHandler == null)
105 _rootLayerTouchDataCallback = OnWindowTouch;
106 this.TouchDataSignal().Connect(_rootLayerTouchDataCallback);
108 _rootLayerTouchDataEventHandler += value;
112 _rootLayerTouchDataEventHandler -= value;
113 if (_rootLayerTouchDataEventHandler == null && TouchSignal().Empty() == false && _rootLayerTouchDataCallback != null)
115 this.TouchDataSignal().Disconnect(_rootLayerTouchDataCallback);
121 /// Emits the event when the wheel event is received.
123 /// <since_tizen> 3 </since_tizen>
124 public event EventHandler<WheelEventArgs> WheelEvent
128 if (_stageWheelHandler == null)
130 _wheelEventCallback = OnStageWheel;
131 WheelEventSignal().Connect(_wheelEventCallback);
133 _stageWheelHandler += value;
135 if (DetentEventHandler == null)
137 DetentEventCallback = OnDetentEvent;
138 StageWheelEventSignal().Connect(DetentEventCallback);
140 DetentEventHandler += value;
144 _stageWheelHandler -= value;
145 if (_stageWheelHandler == null && WheelEventSignal().Empty() == false)
147 WheelEventSignal().Disconnect(_wheelEventCallback);
150 DetentEventHandler -= value;
151 if (DetentEventHandler == null && StageWheelEventSignal().Empty() == false)
153 StageWheelEventSignal().Disconnect(DetentEventCallback);
159 /// Emits the event when the key event is received.
161 /// <since_tizen> 3 </since_tizen>
162 public event EventHandler<KeyEventArgs> KeyEvent
166 if (_stageKeyHandler == null)
168 _stageKeyCallbackDelegate = OnStageKey;
169 KeyEventSignal().Connect(_stageKeyCallbackDelegate);
171 _stageKeyHandler += value;
175 _stageKeyHandler -= value;
176 if (_stageKeyHandler == null && KeyEventSignal().Empty() == false)
178 KeyEventSignal().Disconnect(_stageKeyCallbackDelegate);
184 /// Emits the event when the window resized.
186 /// <since_tizen> 3 </since_tizen>
187 public event EventHandler<ResizedEventArgs> Resized
191 if (_windowResizeEventHandler == null)
193 _windowResizeEventCallback = OnResized;
194 ResizeSignal().Connect(_windowResizeEventCallback);
197 _windowResizeEventHandler += value;
201 _windowResizeEventHandler -= value;
203 if (_windowResizeEventHandler == null && ResizeSignal().Empty() == false && _windowResizeEventCallback != null)
205 ResizeSignal().Disconnect(_windowResizeEventCallback);
211 /// Please do not use! this will be deprecated. Please use 'FocusChanged' event instead.
213 /// <since_tizen> 3 </since_tizen>
214 /// Please do not use! this will be deprecated!
215 /// Instead please use FocusChanged.
216 [Obsolete("Please do not use! This will be deprecated! Please use FocusChanged instead! " +
218 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
219 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
220 [EditorBrowsable(EditorBrowsableState.Never)]
221 public event EventHandler<FocusChangedEventArgs> WindowFocusChanged
225 if (_windowFocusChangedEventHandler2 == null)
227 _windowFocusChangedEventCallback2 = OnWindowFocusedChanged2;
228 WindowFocusChangedSignal().Connect(_windowFocusChangedEventCallback2);
231 _windowFocusChangedEventHandler2 += value;
235 _windowFocusChangedEventHandler2 -= value;
237 if (_windowFocusChangedEventHandler2 == null && WindowFocusChangedSignal().Empty() == false && _windowFocusChangedEventCallback2 != null)
239 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback2);
247 [EditorBrowsable(EditorBrowsableState.Never)]
248 public event EventHandler<TransitionEffectArgs> TransitionEffect
252 if (transitionEffectHandler == null)
254 transitionEffectEventCallback = OnTransitionEffect;
255 TransitionEffectEventSignal().Connect(transitionEffectEventCallback);
257 transitionEffectHandler += value;
261 transitionEffectHandler -= value;
262 if (transitionEffectHandler == null && TransitionEffectEventSignal().Empty() == false)
264 TransitionEffectEventSignal().Disconnect(transitionEffectEventCallback);
270 /// Keyboard Repeat Settings Changed
272 [EditorBrowsable(EditorBrowsableState.Never)]
273 public event EventHandler KeyboardRepeatSettingsChanged
277 if (keyboardRepeatSettingsChangedHandler == null)
279 keyboardRepeatSettingsChangedEventCallback = OnKeyboardRepeatSettingsChanged;
280 KeyboardRepeatSettingsChangedEventSignal().Connect(keyboardRepeatSettingsChangedEventCallback);
282 keyboardRepeatSettingsChangedHandler += value;
286 keyboardRepeatSettingsChangedHandler -= value;
287 if (keyboardRepeatSettingsChangedHandler == null && KeyboardRepeatSettingsChangedEventSignal().Empty() == false)
289 KeyboardRepeatSettingsChangedEventSignal().Disconnect(keyboardRepeatSettingsChangedEventCallback);
295 /// ViewAdded will be triggered when the view added on Window
297 /// <since_tizen> 6 </since_tizen>
298 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
299 [EditorBrowsable(EditorBrowsableState.Never)]
300 public event EventHandler ViewAdded;
301 private event EventHandler<FocusChangedEventArgs> _windowFocusChangedEventHandler;
302 private event EventHandler<TouchEventArgs> _rootLayerTouchDataEventHandler;
303 private event EventHandler<WheelEventArgs> _stageWheelHandler;
304 private event EventHandler<KeyEventArgs> _stageKeyHandler;
305 private event EventHandler _stageEventProcessingFinishedEventHandler;
306 private event EventHandler<ResizedEventArgs> _windowResizeEventHandler;
307 private event EventHandler<FocusChangedEventArgs> _windowFocusChangedEventHandler2;
308 private event EventHandler<TransitionEffectArgs> transitionEffectHandler;
309 private event EventHandler keyboardRepeatSettingsChangedHandler;
311 internal void SendViewAdded(View view)
313 ViewAdded?.Invoke(view, EventArgs.Empty);
316 internal event EventHandler EventProcessingFinished
320 if (_stageEventProcessingFinishedEventHandler == null)
322 _stageEventProcessingFinishedEventCallbackDelegate = OnEventProcessingFinished;
323 EventProcessingFinishedSignal().Connect(_stageEventProcessingFinishedEventCallbackDelegate);
325 _stageEventProcessingFinishedEventHandler += value;
330 _stageEventProcessingFinishedEventHandler -= value;
331 if (_stageEventProcessingFinishedEventHandler == null && EventProcessingFinishedSignal().Empty() == false)
333 EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate);
338 internal event EventHandler ContextLost
342 if (_stageContextLostEventHandler == null)
344 _stageContextLostEventCallbackDelegate = OnContextLost;
345 ContextLostSignal().Connect(_stageContextLostEventCallbackDelegate);
347 _stageContextLostEventHandler += value;
351 _stageContextLostEventHandler -= value;
352 if (_stageContextLostEventHandler == null && ContextLostSignal().Empty() == false)
354 ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate);
359 internal event EventHandler ContextRegained
363 if (_stageContextRegainedEventHandler == null)
365 _stageContextRegainedEventCallbackDelegate = OnContextRegained;
366 ContextRegainedSignal().Connect(_stageContextRegainedEventCallbackDelegate);
368 _stageContextRegainedEventHandler += value;
372 _stageContextRegainedEventHandler -= value;
373 if (_stageContextRegainedEventHandler == null && ContextRegainedSignal().Empty() == false)
375 this.ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate);
380 internal event EventHandler SceneCreated
384 if (_stageSceneCreatedEventHandler == null)
386 _stageSceneCreatedEventCallbackDelegate = OnSceneCreated;
387 SceneCreatedSignal().Connect(_stageSceneCreatedEventCallbackDelegate);
389 _stageSceneCreatedEventHandler += value;
393 _stageSceneCreatedEventHandler -= value;
394 if (_stageSceneCreatedEventHandler == null && SceneCreatedSignal().Empty() == false)
396 SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate);
401 internal WindowFocusSignalType WindowFocusChangedSignal()
403 WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(swigCPtr), false);
404 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
408 internal WindowFocusSignalType FocusChangedSignal()
410 WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(swigCPtr), false);
411 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
415 internal KeyEventSignal KeyEventSignal()
417 KeyEventSignal ret = new KeyEventSignal(Interop.Window.KeyEventSignal(swigCPtr), false);
418 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
422 internal VoidSignal EventProcessingFinishedSignal()
424 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_EventProcessingFinishedSignal(stageCPtr), false);
425 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
429 internal TouchSignal TouchSignal()
431 TouchSignal ret = new TouchSignal(Interop.Window.TouchSignal(swigCPtr), false);
432 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
436 internal TouchDataSignal TouchDataSignal()
438 TouchDataSignal ret = new TouchDataSignal(Interop.ActorSignal.Actor_TouchSignal(Layer.getCPtr(GetRootLayer())), false);
439 if (NDalicPINVOKE.SWIGPendingException.Pending)
440 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
444 internal VoidSignal ContextLostSignal()
446 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_ContextLostSignal(stageCPtr), false);
447 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
451 internal VoidSignal ContextRegainedSignal()
453 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_ContextRegainedSignal(stageCPtr), false);
454 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
458 internal VoidSignal SceneCreatedSignal()
460 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_SceneCreatedSignal(stageCPtr), false);
461 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
465 internal ResizeSignal ResizeSignal()
467 ResizeSignal ret = new ResizeSignal(Interop.Window.Window_ResizeSignal(swigCPtr), false);
468 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
472 internal System.IntPtr GetNativeWindowHandler()
474 System.IntPtr ret = Interop.Window.GetNativeWindowHandler(HandleRef.ToIntPtr(this.swigCPtr));
475 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
480 /// Disconnect all native signals
482 /// <since_tizen> 5 </since_tizen>
483 internal void DisconnectNativeSignals()
485 if (_windowFocusChangedEventCallback != null)
487 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback);
490 if (_rootLayerTouchDataCallback != null)
492 TouchDataSignal().Disconnect(_rootLayerTouchDataCallback);
495 if (_wheelEventCallback != null)
497 WheelEventSignal().Disconnect(_wheelEventCallback);
500 if (DetentEventCallback != null)
502 StageWheelEventSignal().Disconnect(DetentEventCallback);
505 if (_stageKeyCallbackDelegate != null)
507 KeyEventSignal().Disconnect(_stageKeyCallbackDelegate);
510 if (_stageEventProcessingFinishedEventCallbackDelegate != null)
512 EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate);
515 if (_stageContextLostEventCallbackDelegate != null)
517 ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate);
520 if (_stageContextRegainedEventCallbackDelegate != null)
522 ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate);
525 if (_stageSceneCreatedEventCallbackDelegate != null)
527 SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate);
530 if (_windowResizeEventCallback != null)
532 ResizeSignal().Disconnect(_windowResizeEventCallback);
535 if (_windowFocusChangedEventCallback2 != null)
537 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback2);
540 if (transitionEffectSignal != null)
542 TransitionEffectEventSignal().Disconnect(transitionEffectEventCallback);
545 if (keyboardRepeatSettingsChangedSignal != null)
547 KeyboardRepeatSettingsChangedEventSignal().Disconnect(keyboardRepeatSettingsChangedEventCallback);
551 private StageWheelSignal StageWheelEventSignal()
553 StageWheelSignal ret = new StageWheelSignal(Interop.StageSignal.Stage_WheelEventSignal(stageCPtr), false);
554 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
558 private WheelSignal WheelEventSignal()
560 WheelSignal ret = new WheelSignal(Interop.ActorSignal.Actor_WheelEventSignal(Layer.getCPtr(this.GetRootLayer())), false);
561 if (NDalicPINVOKE.SWIGPendingException.Pending)
562 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
566 private WindowTransitionEffectSignal TransitionEffectEventSignal()
568 //Tizen.Log.Fatal("NUITEST", "TransitionEffectEventSignal()!");
569 if (transitionEffectSignal == null)
571 transitionEffectSignal = new WindowTransitionEffectSignal(this);
572 if (NDalicPINVOKE.SWIGPendingException.Pending)
573 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
574 //Tizen.Log.Fatal("NUITEST", $"transitionEffectSignal is null, new here!");
576 return transitionEffectSignal;
579 private KeyboardRepeatSettingsChangedSignal KeyboardRepeatSettingsChangedEventSignal()
581 if (keyboardRepeatSettingsChangedSignal == null)
583 keyboardRepeatSettingsChangedSignal = new KeyboardRepeatSettingsChangedSignal(this);
584 if (NDalicPINVOKE.SWIGPendingException.Pending)
585 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
587 return keyboardRepeatSettingsChangedSignal;
590 private void OnWindowFocusedChanged(IntPtr window, bool focusGained)
592 if (window == IntPtr.Zero)
594 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
598 FocusChangedEventArgs e = new FocusChangedEventArgs();
600 e.FocusGained = focusGained;
602 if (_windowFocusChangedEventHandler != null)
604 _windowFocusChangedEventHandler(this, e);
608 private bool OnWindowTouch(IntPtr view, IntPtr touchData)
610 if (touchData == global::System.IntPtr.Zero)
612 NUILog.Error("touchData should not be null!");
616 TouchEventArgs e = new TouchEventArgs();
618 e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData);
620 if (_rootLayerTouchDataEventHandler != null)
622 _rootLayerTouchDataEventHandler(this, e);
627 private bool OnStageWheel(IntPtr rootLayer, IntPtr wheelEvent)
629 if (wheelEvent == global::System.IntPtr.Zero)
631 NUILog.Error("wheelEvent should not be null!");
635 WheelEventArgs e = new WheelEventArgs();
637 e.Wheel = Tizen.NUI.Wheel.GetWheelFromPtr(wheelEvent);
639 if (_stageWheelHandler != null)
641 _stageWheelHandler(this, e);
646 // Callback for Stage KeyEventsignal
647 private void OnStageKey(IntPtr data)
649 KeyEventArgs e = new KeyEventArgs();
650 e.Key = Tizen.NUI.Key.GetKeyFromPtr(data);
653 if (_stageKeyHandler != null)
655 //here we send all data to user event handlers
656 _stageKeyHandler(this, e);
660 // Callback for Stage EventProcessingFinishedSignal
661 private void OnEventProcessingFinished()
663 if (_stageEventProcessingFinishedEventHandler != null)
665 _stageEventProcessingFinishedEventHandler(this, null);
669 // Callback for Stage ContextLostSignal
670 private void OnContextLost()
672 if (_stageContextLostEventHandler != null)
674 _stageContextLostEventHandler(this, null);
678 // Callback for Stage ContextRegainedSignal
679 private void OnContextRegained()
681 if (_stageContextRegainedEventHandler != null)
683 _stageContextRegainedEventHandler(this, null);
687 // Callback for Stage SceneCreatedSignal
688 private void OnSceneCreated()
690 if (_stageSceneCreatedEventHandler != null)
692 _stageSceneCreatedEventHandler(this, null);
696 private void OnResized(IntPtr window, IntPtr windowSize)
698 if (window == IntPtr.Zero)
700 NUILog.Error("OnResized() Window is null! Do nothing!");
704 ResizedEventArgs e = new ResizedEventArgs();
705 // var val = new Uint16Pair(windowSize, false);
706 // e.WindowSize = new Size2D(val.GetWidth(), val.GetHeight());
709 // Workaround : windowSize should be valid pointer from dali,
710 // but currenlty it is fixed and is not Uint16Pair class.
711 // will be fixed later.
712 e.WindowSize = this.WindowSize;
714 if (_windowResizeEventHandler != null)
716 _windowResizeEventHandler(this, e);
720 private void OnWindowFocusedChanged2(IntPtr window, bool focusGained)
722 if (window == IntPtr.Zero)
724 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
728 FocusChangedEventArgs e = new FocusChangedEventArgs();
730 e.FocusGained = focusGained;
732 if (_windowFocusChangedEventHandler2 != null)
734 _windowFocusChangedEventHandler2(this, e);
738 private void OnTransitionEffect(IntPtr window, int state, int type)
740 //Tizen.Log.Fatal("NUITEST", $"OnTransitionEffect() called");
741 if (window == global::System.IntPtr.Zero)
743 //Tizen.Log.Error("NUI", $"OnTransitionEffect() IntPtr window is null!");
747 TransitionEffectArgs e = new TransitionEffectArgs();
749 e.State = (EffectStates)state;
750 //Tizen.Log.Error("NUITEST", $"e.State={e.State}");
752 e.Type = (EffectTypes)type;
753 //Tizen.Log.Error("NUITEST", $"e.Type={e.Type}");
755 if (transitionEffectHandler != null)
757 //Tizen.Log.Fatal("NUITEST", $"Execute transitionEffectHandler(this, e)!!!");
758 transitionEffectHandler(this, e);
763 private void OnKeyboardRepeatSettingsChanged()
765 if (keyboardRepeatSettingsChangedHandler != null)
767 keyboardRepeatSettingsChangedHandler(this, null);
773 /// The focus changed event argument.
775 /// <since_tizen> 3 </since_tizen>
776 public class FocusChangedEventArgs : EventArgs
779 /// FocusGained flag.
781 /// <since_tizen> 3 </since_tizen>
782 public bool FocusGained
790 /// The touch event argument.
792 /// <since_tizen> 3 </since_tizen>
793 public class TouchEventArgs : EventArgs
795 private Touch _touch;
800 /// <since_tizen> 3 </since_tizen>
815 /// Wheel event arguments.
817 /// <since_tizen> 3 </since_tizen>
818 public class WheelEventArgs : EventArgs
820 private Wheel _wheel;
825 /// <since_tizen> 3 </since_tizen>
840 /// Key event arguments.
842 /// <since_tizen> 3 </since_tizen>
843 public class KeyEventArgs : EventArgs
850 /// <since_tizen> 3 </since_tizen>
865 /// Feeds a key event into the window.
866 /// This resized event arguments.
868 /// <since_tizen> 3 </since_tizen>
869 public class ResizedEventArgs : EventArgs
874 /// This window size.
876 /// <since_tizen> 4 </since_tizen>
877 public Size2D WindowSize
891 /// Please do not use! this will be deprecated
893 /// <since_tizen> 3 </since_tizen>
894 [Obsolete("Please do not use! This will be deprecated! Please use FocusChangedEventArgs instead! " +
896 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
897 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
898 [EditorBrowsable(EditorBrowsableState.Never)]
899 public class WindowFocusChangedEventArgs : EventArgs
902 /// Please do not use! this will be deprecated
904 /// <since_tizen> 3 </since_tizen>
905 public bool FocusGained
913 /// Contains and encapsulates Native Window handle.
915 /// <since_tizen> 4 </since_tizen>
916 public class SafeNativeWindowHandle : SafeHandle
919 /// Contructor, Native window handle is set to handle.
921 /// <since_tizen> 4 </since_tizen>
922 public SafeNativeWindowHandle() : base(IntPtr.Zero, false)
924 SetHandle(NUIApplication.GetDefaultWindow().GetNativeWindowHandler());
927 /// Null check if the handle is valid or not.
929 /// <since_tizen> 4 </since_tizen>
930 public override bool IsInvalid
934 return this.handle == IntPtr.Zero;
938 /// Release handle itself.
940 /// <returns>true when released successfully.</returns>
941 /// <since_tizen> 4 </since_tizen>
942 protected override bool ReleaseHandle()
949 /// TransitionEffectArgs
951 [EditorBrowsable(EditorBrowsableState.Never)]
952 public class TransitionEffectArgs : EventArgs
954 private EffectStates state;
955 private EffectTypes type;
960 [EditorBrowsable(EditorBrowsableState.Never)]
961 public EffectStates State
975 [EditorBrowsable(EditorBrowsableState.Never)]
976 public EffectTypes Type
989 private EventHandler<WheelEventArgs> DetentEventHandler;
991 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
992 private delegate void DetentEventCallbackType(IntPtr arg1);
994 private DetentEventCallbackType DetentEventCallback;
996 private void OnDetentEvent(IntPtr wheelEvent)
998 WheelEventArgs e = new WheelEventArgs();
1000 if (wheelEvent != global::System.IntPtr.Zero)
1002 e.Wheel = Wheel.GetWheelFromPtr(wheelEvent);
1005 DetentEventHandler?.Invoke(this, e);
1009 /// VisibilityChangedArgs
1011 [EditorBrowsable(EditorBrowsableState.Never)]
1012 public class VisibilityChangedArgs : EventArgs
1014 private bool visibility;
1018 [EditorBrowsable(EditorBrowsableState.Never)]
1019 public bool Visibility
1029 private void OnVisibilityChanged(IntPtr window, bool visibility)
1031 if (window == global::System.IntPtr.Zero)
1033 NUILog.Error("[ERR] OnVisibilityChanged() window is null");
1037 VisibilityChangedArgs e = new VisibilityChangedArgs();
1038 e.Visibility = visibility;
1039 if (VisibilityChangedEventHandler != null)
1041 VisibilityChangedEventHandler.Invoke(this, e);
1045 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1046 private delegate void VisibilityChangedEventCallbackType(IntPtr window, bool visibility);
1047 private VisibilityChangedEventCallbackType VisibilityChangedEventCallback;
1048 private event EventHandler<VisibilityChangedArgs> VisibilityChangedEventHandler;
1049 private WindowVisibilityChangedEvent VisibilityChangedEventSignal;
1054 [EditorBrowsable(EditorBrowsableState.Never)]
1055 public event EventHandler<VisibilityChangedArgs> VisibilityChanged
1059 if (VisibilityChangedEventHandler == null)
1061 VisibilityChangedEventCallback = OnVisibilityChanged;
1062 VisibilityChangedEventSignal = new WindowVisibilityChangedEvent(this);
1063 VisibilityChangedEventSignal.Connect(VisibilityChangedEventCallback);
1065 VisibilityChangedEventHandler += value;
1069 VisibilityChangedEventHandler -= value;
1070 if (VisibilityChangedEventHandler == null)
1072 if (VisibilityChangedEventSignal != null)
1074 if (VisibilityChangedEventSignal.Empty() == false)
1076 VisibilityChangedEventSignal.Disconnect(VisibilityChangedEventCallback);
1084 /// VisibiltyChangedSignalEmit
1086 [EditorBrowsable(EditorBrowsableState.Never)]
1087 public void VisibiltyChangedSignalEmit(bool visibility)
1089 if (VisibilityChangedEventSignal == null)
1091 VisibilityChangedEventSignal = new WindowVisibilityChangedEvent(this);
1093 VisibilityChangedEventSignal.Emit(this, visibility);