2 * Copyright(c) 2019 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 WindowResizedEventCallbackType _windowResizedEventCallback;
44 private WindowFocusChangedEventCallbackType _windowFocusChangedEventCallback2;
45 private TransitionEffectEventCallbackType transitionEffectEventCallback;
46 private WindowTransitionEffectSignal transitionEffectSignal;
48 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
49 private delegate void WindowFocusChangedEventCallbackType(IntPtr window, bool focusGained);
50 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
51 private delegate bool RootLayerTouchDataCallbackType(IntPtr view, IntPtr touchData);
52 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
53 private delegate bool WheelEventCallbackType(IntPtr view, IntPtr wheelEvent);
54 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
55 private delegate void WindowResizedEventCallbackType(IntPtr windowSize);
56 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
57 private delegate void WindowFocusChangedEventCallbackType2(IntPtr window, bool focusGained);
58 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
59 private delegate void TransitionEffectEventCallbackType(IntPtr window, int state, int type);
62 /// FocusChanged event.
64 /// <since_tizen> 3 </since_tizen>
65 public event EventHandler<FocusChangedEventArgs> FocusChanged
69 if (_windowFocusChangedEventHandler == null)
71 _windowFocusChangedEventCallback = OnWindowFocusedChanged;
72 WindowFocusChangedSignal().Connect(_windowFocusChangedEventCallback);
75 _windowFocusChangedEventHandler += value;
79 _windowFocusChangedEventHandler -= value;
81 if (_windowFocusChangedEventHandler == null && WindowFocusChangedSignal().Empty() == false && _windowFocusChangedEventCallback != null)
83 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback);
89 /// Emits the event when the screen is touched and when the touch ends.<br />
90 /// If there are multiple touch points then it is emitted when the first touch occurs and
91 /// when the last finger is lifted too.<br />
92 /// Even though incoming events are interrupted, the event occurs.<br />
94 /// <since_tizen> 3 </since_tizen>
95 public event EventHandler<TouchEventArgs> TouchEvent
99 if (_rootLayerTouchDataEventHandler == null)
101 _rootLayerTouchDataCallback = OnWindowTouch;
102 this.TouchDataSignal().Connect(_rootLayerTouchDataCallback);
104 _rootLayerTouchDataEventHandler += value;
108 _rootLayerTouchDataEventHandler -= value;
109 if (_rootLayerTouchDataEventHandler == null && TouchSignal().Empty() == false && _rootLayerTouchDataCallback != null)
111 this.TouchDataSignal().Disconnect(_rootLayerTouchDataCallback);
117 /// Emits the event when the wheel event is received.
119 /// <since_tizen> 3 </since_tizen>
120 public event EventHandler<WheelEventArgs> WheelEvent
124 if (_stageWheelHandler == null)
126 _wheelEventCallback = OnStageWheel;
127 WheelEventSignal().Connect(_wheelEventCallback);
129 _stageWheelHandler += value;
131 if (DetentEventHandler == null)
133 DetentEventCallback = OnDetentEvent;
134 StageWheelEventSignal().Connect(DetentEventCallback);
136 DetentEventHandler += value;
140 _stageWheelHandler -= value;
141 if (_stageWheelHandler == null && WheelEventSignal().Empty() == false)
143 WheelEventSignal().Disconnect(_wheelEventCallback);
146 DetentEventHandler -= value;
147 if(DetentEventHandler == null && StageWheelEventSignal().Empty() == false)
149 StageWheelEventSignal().Disconnect(DetentEventCallback);
155 /// Emits the event when the key event is received.
157 /// <since_tizen> 3 </since_tizen>
158 public event EventHandler<KeyEventArgs> KeyEvent
162 if (_stageKeyHandler == null)
164 _stageKeyCallbackDelegate = OnStageKey;
165 KeyEventSignal().Connect(_stageKeyCallbackDelegate);
167 _stageKeyHandler += value;
171 _stageKeyHandler -= value;
172 if (_stageKeyHandler == null && KeyEventSignal().Empty() == false)
174 KeyEventSignal().Disconnect(_stageKeyCallbackDelegate);
180 /// Emits the event when the window resized.
182 /// <since_tizen> 3 </since_tizen>
183 public event EventHandler<ResizedEventArgs> Resized
187 if (_windowResizedEventHandler == null)
189 _windowResizedEventCallback = OnResized;
190 ResizedSignal().Connect(_windowResizedEventCallback);
193 _windowResizedEventHandler += value;
197 _windowResizedEventHandler -= value;
199 if (_windowResizedEventHandler == null && ResizedSignal().Empty() == false && _windowResizedEventCallback != null)
201 ResizedSignal().Disconnect(_windowResizedEventCallback);
207 /// Please do not use! this will be deprecated. Please use 'FocusChanged' event instead.
209 /// <since_tizen> 3 </since_tizen>
210 /// Please do not use! this will be deprecated!
211 /// Instead please use FocusChanged.
212 [Obsolete("Please do not use! This will be deprecated! Please use FocusChanged instead! " +
214 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
215 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
216 [EditorBrowsable(EditorBrowsableState.Never)]
217 public event EventHandler<FocusChangedEventArgs> WindowFocusChanged
221 if (_windowFocusChangedEventHandler2 == null)
223 _windowFocusChangedEventCallback2 = OnWindowFocusedChanged2;
224 WindowFocusChangedSignal().Connect(_windowFocusChangedEventCallback2);
227 _windowFocusChangedEventHandler2 += value;
231 _windowFocusChangedEventHandler2 -= value;
233 if (_windowFocusChangedEventHandler2 == null && WindowFocusChangedSignal().Empty() == false && _windowFocusChangedEventCallback2 != null)
235 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback2);
243 [EditorBrowsable(EditorBrowsableState.Never)]
244 public event EventHandler<TransitionEffectArgs> TransitionEffect
248 if (transitionEffectHandler == null)
250 transitionEffectEventCallback = OnTransitionEffect;
251 TransitionEffectEventSignal().Connect(transitionEffectEventCallback);
253 transitionEffectHandler += value;
257 transitionEffectHandler -= value;
258 if (transitionEffectHandler == null && TransitionEffectEventSignal().Empty() == false)
260 TransitionEffectEventSignal().Disconnect(transitionEffectEventCallback);
266 /// ViewAdded will be triggered when the view added on Window
268 /// <since_tizen> 6 </since_tizen>
269 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
270 [EditorBrowsable(EditorBrowsableState.Never)]
271 public event EventHandler ViewAdded;
272 private event EventHandler<FocusChangedEventArgs> _windowFocusChangedEventHandler;
273 private event EventHandler<TouchEventArgs> _rootLayerTouchDataEventHandler;
274 private event EventHandler<WheelEventArgs> _stageWheelHandler;
275 private event EventHandler<KeyEventArgs> _stageKeyHandler;
276 private event EventHandler _stageEventProcessingFinishedEventHandler;
277 private event EventHandler<ResizedEventArgs> _windowResizedEventHandler;
278 private event EventHandler<FocusChangedEventArgs> _windowFocusChangedEventHandler2;
279 private event EventHandler<TransitionEffectArgs> transitionEffectHandler;
281 internal void SendViewAdded(View view)
283 ViewAdded?.Invoke(view, EventArgs.Empty);
286 internal event EventHandler EventProcessingFinished
290 if (_stageEventProcessingFinishedEventHandler == null)
292 _stageEventProcessingFinishedEventCallbackDelegate = OnEventProcessingFinished;
293 EventProcessingFinishedSignal().Connect(_stageEventProcessingFinishedEventCallbackDelegate);
295 _stageEventProcessingFinishedEventHandler += value;
300 _stageEventProcessingFinishedEventHandler -= value;
301 if (_stageEventProcessingFinishedEventHandler == null && EventProcessingFinishedSignal().Empty() == false)
303 EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate);
308 internal event EventHandler ContextLost
312 if (_stageContextLostEventHandler == null)
314 _stageContextLostEventCallbackDelegate = OnContextLost;
315 ContextLostSignal().Connect(_stageContextLostEventCallbackDelegate);
317 _stageContextLostEventHandler += value;
321 _stageContextLostEventHandler -= value;
322 if (_stageContextLostEventHandler == null && ContextLostSignal().Empty() == false)
324 ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate);
329 internal event EventHandler ContextRegained
333 if (_stageContextRegainedEventHandler == null)
335 _stageContextRegainedEventCallbackDelegate = OnContextRegained;
336 ContextRegainedSignal().Connect(_stageContextRegainedEventCallbackDelegate);
338 _stageContextRegainedEventHandler += value;
342 _stageContextRegainedEventHandler -= value;
343 if (_stageContextRegainedEventHandler == null && ContextRegainedSignal().Empty() == false)
345 this.ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate);
350 internal event EventHandler SceneCreated
354 if (_stageSceneCreatedEventHandler == null)
356 _stageSceneCreatedEventCallbackDelegate = OnSceneCreated;
357 SceneCreatedSignal().Connect(_stageSceneCreatedEventCallbackDelegate);
359 _stageSceneCreatedEventHandler += value;
363 _stageSceneCreatedEventHandler -= value;
364 if (_stageSceneCreatedEventHandler == null && SceneCreatedSignal().Empty() == false)
366 SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate);
371 internal WindowFocusSignalType WindowFocusChangedSignal()
373 WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(swigCPtr), false);
374 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
378 internal WindowFocusSignalType FocusChangedSignal()
380 WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(swigCPtr), false);
381 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
385 internal KeyEventSignal KeyEventSignal()
387 KeyEventSignal ret = new KeyEventSignal(Interop.Window.KeyEventSignal(swigCPtr), false);
388 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
392 internal VoidSignal EventProcessingFinishedSignal()
394 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_EventProcessingFinishedSignal(stageCPtr), false);
395 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
399 internal TouchSignal TouchSignal()
401 TouchSignal ret = new TouchSignal(Interop.Window.TouchSignal(swigCPtr), false);
402 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
406 internal TouchDataSignal TouchDataSignal()
408 TouchDataSignal ret = new TouchDataSignal(Interop.ActorSignal.Actor_TouchSignal(Layer.getCPtr(GetRootLayer())), false);
409 if (NDalicPINVOKE.SWIGPendingException.Pending)
410 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
414 internal VoidSignal ContextLostSignal()
416 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_ContextLostSignal(stageCPtr), false);
417 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
421 internal VoidSignal ContextRegainedSignal()
423 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_ContextRegainedSignal(stageCPtr), false);
424 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
428 internal VoidSignal SceneCreatedSignal()
430 VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_SceneCreatedSignal(stageCPtr), false);
431 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
435 internal ResizedSignal ResizedSignal()
437 ResizedSignal ret = new ResizedSignal(Interop.Window.Window_ResizedSignal(swigCPtr), false);
438 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
442 internal System.IntPtr GetNativeWindowHandler()
444 System.IntPtr ret = Interop.Window.GetNativeWindowHandler(HandleRef.ToIntPtr(this.swigCPtr));
445 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
450 /// Disconnect all native signals
452 /// <since_tizen> 5 </since_tizen>
453 internal void DisconnectNativeSignals()
455 if (_windowFocusChangedEventCallback != null)
457 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback);
460 if (_rootLayerTouchDataCallback != null)
462 TouchDataSignal().Disconnect(_rootLayerTouchDataCallback);
465 if (_wheelEventCallback != null)
467 WheelEventSignal().Disconnect(_wheelEventCallback);
470 if(DetentEventCallback != null)
472 StageWheelEventSignal().Disconnect(DetentEventCallback);
475 if (_stageKeyCallbackDelegate != null)
477 KeyEventSignal().Disconnect(_stageKeyCallbackDelegate);
480 if (_stageEventProcessingFinishedEventCallbackDelegate != null)
482 EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate);
485 if (_stageContextLostEventCallbackDelegate != null)
487 ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate);
490 if (_stageContextRegainedEventCallbackDelegate != null)
492 ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate);
495 if (_stageSceneCreatedEventCallbackDelegate != null)
497 SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate);
500 if (_windowResizedEventCallback != null)
502 ResizedSignal().Disconnect(_windowResizedEventCallback);
505 if (_windowFocusChangedEventCallback2 != null)
507 WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback2);
510 if (transitionEffectSignal != null)
512 TransitionEffectEventSignal().Disconnect(transitionEffectEventCallback);
516 private StageWheelSignal StageWheelEventSignal()
518 StageWheelSignal ret = new StageWheelSignal(Interop.StageSignal.Stage_WheelEventSignal(stageCPtr), false);
519 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
523 private WheelSignal WheelEventSignal()
525 WheelSignal ret = new WheelSignal(Interop.ActorSignal.Actor_WheelEventSignal(Layer.getCPtr(this.GetRootLayer())), false);
526 if (NDalicPINVOKE.SWIGPendingException.Pending)
527 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
531 private WindowTransitionEffectSignal TransitionEffectEventSignal()
533 //Tizen.Log.Fatal("NUITEST", "TransitionEffectEventSignal()!");
534 if (transitionEffectSignal == null)
536 transitionEffectSignal = new WindowTransitionEffectSignal(this);
537 if (NDalicPINVOKE.SWIGPendingException.Pending)
538 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
539 //Tizen.Log.Fatal("NUITEST", $"transitionEffectSignal is null, new here!");
541 return transitionEffectSignal;
544 private void OnWindowFocusedChanged(IntPtr window, bool focusGained)
546 if (window == IntPtr.Zero)
548 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
552 FocusChangedEventArgs e = new FocusChangedEventArgs();
554 e.FocusGained = focusGained;
556 if (_windowFocusChangedEventHandler != null)
558 _windowFocusChangedEventHandler(this, e);
562 private bool OnWindowTouch(IntPtr view, IntPtr touchData)
564 if (touchData == global::System.IntPtr.Zero)
566 NUILog.Error("touchData should not be null!");
570 TouchEventArgs e = new TouchEventArgs();
572 e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData);
574 if (_rootLayerTouchDataEventHandler != null)
576 _rootLayerTouchDataEventHandler(this, e);
581 private bool OnStageWheel(IntPtr rootLayer, IntPtr wheelEvent)
583 if (wheelEvent == global::System.IntPtr.Zero)
585 NUILog.Error("wheelEvent should not be null!");
589 WheelEventArgs e = new WheelEventArgs();
591 e.Wheel = Tizen.NUI.Wheel.GetWheelFromPtr(wheelEvent);
593 if (_stageWheelHandler != null)
595 _stageWheelHandler(this, e);
600 // Callback for Stage KeyEventsignal
601 private void OnStageKey(IntPtr data)
603 KeyEventArgs e = new KeyEventArgs();
604 e.Key = Tizen.NUI.Key.GetKeyFromPtr(data);
607 if (_stageKeyHandler != null)
609 //here we send all data to user event handlers
610 _stageKeyHandler(this, e);
614 // Callback for Stage EventProcessingFinishedSignal
615 private void OnEventProcessingFinished()
617 if (_stageEventProcessingFinishedEventHandler != null)
619 _stageEventProcessingFinishedEventHandler(this, null);
623 // Callback for Stage ContextLostSignal
624 private void OnContextLost()
626 if (_stageContextLostEventHandler != null)
628 _stageContextLostEventHandler(this, null);
632 // Callback for Stage ContextRegainedSignal
633 private void OnContextRegained()
635 if (_stageContextRegainedEventHandler != null)
637 _stageContextRegainedEventHandler(this, null);
641 // Callback for Stage SceneCreatedSignal
642 private void OnSceneCreated()
644 if (_stageSceneCreatedEventHandler != null)
646 _stageSceneCreatedEventHandler(this, null);
650 private void OnResized(IntPtr windowSize)
652 ResizedEventArgs e = new ResizedEventArgs();
653 var val = new Uint16Pair(windowSize, false);
654 e.WindowSize = new Size2D(val.GetWidth(), val.GetHeight());
657 if (_windowResizedEventHandler != null)
659 _windowResizedEventHandler(this, e);
663 private void OnWindowFocusedChanged2(IntPtr window, bool focusGained)
665 if (window == IntPtr.Zero)
667 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
671 FocusChangedEventArgs e = new FocusChangedEventArgs();
673 e.FocusGained = focusGained;
675 if (_windowFocusChangedEventHandler2 != null)
677 _windowFocusChangedEventHandler2(this, e);
681 private void OnTransitionEffect(IntPtr window, int state, int type)
683 //Tizen.Log.Fatal("NUITEST", $"OnTransitionEffect() called");
684 if (window == global::System.IntPtr.Zero)
686 //Tizen.Log.Error("NUI", $"OnTransitionEffect() IntPtr window is null!");
690 TransitionEffectArgs e = new TransitionEffectArgs();
692 e.State = (EffectStates)state;
693 //Tizen.Log.Error("NUITEST", $"e.State={e.State}");
695 e.Type = (EffectTypes)type;
696 //Tizen.Log.Error("NUITEST", $"e.Type={e.Type}");
698 if (transitionEffectHandler != null)
700 //Tizen.Log.Fatal("NUITEST", $"Execute transitionEffectHandler(this, e)!!!");
701 transitionEffectHandler(this, e);
707 /// The focus changed event argument.
709 /// <since_tizen> 3 </since_tizen>
710 public class FocusChangedEventArgs : EventArgs
713 /// FocusGained flag.
715 /// <since_tizen> 3 </since_tizen>
716 public bool FocusGained
724 /// The touch event argument.
726 /// <since_tizen> 3 </since_tizen>
727 public class TouchEventArgs : EventArgs
729 private Touch _touch;
734 /// <since_tizen> 3 </since_tizen>
749 /// Wheel event arguments.
751 /// <since_tizen> 3 </since_tizen>
752 public class WheelEventArgs : EventArgs
754 private Wheel _wheel;
759 /// <since_tizen> 3 </since_tizen>
774 /// Key event arguments.
776 /// <since_tizen> 3 </since_tizen>
777 public class KeyEventArgs : EventArgs
784 /// <since_tizen> 3 </since_tizen>
799 /// Feeds a key event into the window.
800 /// This resized event arguments.
802 /// <since_tizen> 3 </since_tizen>
803 public class ResizedEventArgs : EventArgs
808 /// This window size.
810 /// <since_tizen> 4 </since_tizen>
811 public Size2D WindowSize
825 /// Please do not use! this will be deprecated
827 /// <since_tizen> 3 </since_tizen>
828 [Obsolete("Please do not use! This will be deprecated! Please use FocusChangedEventArgs instead! " +
830 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
831 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
832 [EditorBrowsable(EditorBrowsableState.Never)]
833 public class WindowFocusChangedEventArgs : EventArgs
836 /// Please do not use! this will be deprecated
838 /// <since_tizen> 3 </since_tizen>
839 public bool FocusGained
847 /// Contains and encapsulates Native Window handle.
849 /// <since_tizen> 4 </since_tizen>
850 public class SafeNativeWindowHandle : SafeHandle
853 /// Contructor, Native window handle is set to handle.
855 /// <since_tizen> 4 </since_tizen>
856 public SafeNativeWindowHandle() : base(IntPtr.Zero, false)
858 SetHandle(NUIApplication.GetDefaultWindow().GetNativeWindowHandler());
861 /// Null check if the handle is valid or not.
863 /// <since_tizen> 4 </since_tizen>
864 public override bool IsInvalid
868 return this.handle == IntPtr.Zero;
872 /// Release handle itself.
874 /// <returns>true when released successfully.</returns>
875 /// <since_tizen> 4 </since_tizen>
876 protected override bool ReleaseHandle()
883 /// TransitionEffectArgs
885 [EditorBrowsable(EditorBrowsableState.Never)]
886 public class TransitionEffectArgs : EventArgs
888 private EffectStates state;
889 private EffectTypes type;
894 [EditorBrowsable(EditorBrowsableState.Never)]
895 public EffectStates State
909 [EditorBrowsable(EditorBrowsableState.Never)]
910 public EffectTypes Type
923 private EventHandler<WheelEventArgs> DetentEventHandler;
925 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
926 private delegate void DetentEventCallbackType(IntPtr arg1);
928 private DetentEventCallbackType DetentEventCallback;
930 private void OnDetentEvent(IntPtr wheelEvent)
932 WheelEventArgs e = new WheelEventArgs();
934 if (wheelEvent != global::System.IntPtr.Zero)
936 e.Wheel = Wheel.GetWheelFromPtr(wheelEvent);
939 DetentEventHandler?.Invoke(this, e);
943 /// VisibilityChangedArgs
945 [EditorBrowsable(EditorBrowsableState.Never)]
946 public class VisibilityChangedArgs : EventArgs
948 private bool visibility;
952 [EditorBrowsable(EditorBrowsableState.Never)]
953 public bool Visibility
962 private void OnVisibilityChanged(IntPtr window, bool visibility)
964 if (window == global::System.IntPtr.Zero)
966 NUILog.Error("[ERR] OnVisibilityChanged() window is null");
970 VisibilityChangedArgs e = new VisibilityChangedArgs();
971 e.Visibility = visibility;
972 if (VisibilityChangedEventHandler != null)
974 VisibilityChangedEventHandler.Invoke(this, e);
978 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
979 private delegate void VisibilityChangedEventCallbackType(IntPtr window, bool visibility);
980 private VisibilityChangedEventCallbackType VisibilityChangedEventCallback;
981 private event EventHandler<VisibilityChangedArgs> VisibilityChangedEventHandler;
982 private WindowVisibilityChangedEvent VisibilityChangedEventSignal;
987 [EditorBrowsable(EditorBrowsableState.Never)]
988 public event EventHandler<VisibilityChangedArgs> VisibilityChanged
992 if (VisibilityChangedEventHandler == null)
994 VisibilityChangedEventCallback = OnVisibilityChanged;
995 VisibilityChangedEventSignal = new WindowVisibilityChangedEvent(this);
996 VisibilityChangedEventSignal.Connect(VisibilityChangedEventCallback);
998 VisibilityChangedEventHandler += value;
1002 VisibilityChangedEventHandler -= value;
1003 if (VisibilityChangedEventHandler == null)
1005 if(VisibilityChangedEventSignal != null)
1007 if(VisibilityChangedEventSignal.Empty() == false)
1009 VisibilityChangedEventSignal.Disconnect(VisibilityChangedEventCallback);
1017 /// VisibiltyChangedSignalEmit
1019 [EditorBrowsable(EditorBrowsableState.Never)]
1020 public void VisibiltyChangedSignalEmit(bool visibility)
1022 if(VisibilityChangedEventSignal == null)
1024 VisibilityChangedEventSignal = new WindowVisibilityChangedEvent(this);
1026 VisibilityChangedEventSignal.Emit(this, visibility);