/* * Copyright(c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ using System; using System.Runtime.InteropServices; using Tizen.NUI.BaseComponents; using System.ComponentModel; using System.Collections.Generic; namespace Tizen.NUI { /// /// The window class is used internally for drawing.
/// The window has an orientation and indicator properties.
///
/// 3 public class Window : BaseHandle { private global::System.Runtime.InteropServices.HandleRef swigCPtr; private global::System.Runtime.InteropServices.HandleRef stageCPtr; private Layer _rootLayer; private string _windowTitle; private List _childLayers = new List(); private WindowFocusChangedEventCallbackType _windowFocusChangedEventCallback; private RootLayerTouchDataCallbackType _rootLayerTouchDataCallback; private WheelEventCallbackType _wheelEventCallback; private EventCallbackDelegateType1 _stageKeyCallbackDelegate; private EventCallbackDelegateType0 _stageEventProcessingFinishedEventCallbackDelegate; private EventHandler _stageContextLostEventHandler; private EventCallbackDelegateType0 _stageContextLostEventCallbackDelegate; private EventHandler _stageContextRegainedEventHandler; private EventCallbackDelegateType0 _stageContextRegainedEventCallbackDelegate; private EventHandler _stageSceneCreatedEventHandler; private EventCallbackDelegateType0 _stageSceneCreatedEventCallbackDelegate; private WindowResizedEventCallbackType _windowResizedEventCallback; private WindowFocusChangedEventCallbackType _windowFocusChangedEventCallback2; private static readonly Window instance = Application.Instance?.GetWindow(); private LayoutController localController; internal Window(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.Window.Window_SWIGUpcast(cPtr), cMemoryOwn) { swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); if (Interop.Stage.Stage_IsInstalled()) { stageCPtr = new global::System.Runtime.InteropServices.HandleRef(this, Interop.Stage.Stage_GetCurrent()); localController = new LayoutController(this); NUILog.Debug("layoutController id:" + localController.GetId() ); } } /// /// Creates a new Window.
/// This creates an extra window in addition to the default main window
///
/// The position and size of the Window. /// Whether Window is translucent. /// A new Window. /// 6 [EditorBrowsable(EditorBrowsableState.Never)] public Window(Rectangle windowPosition = null , bool isTranslucent = false) : this(Interop.Window.Window_New__SWIG_0(Rectangle.getCPtr(windowPosition), "", isTranslucent), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void WindowFocusChangedEventCallbackType(bool focusGained); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate bool RootLayerTouchDataCallbackType(IntPtr view, IntPtr touchData); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate bool WheelEventCallbackType(IntPtr view, IntPtr wheelEvent); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void WindowResizedEventCallbackType(IntPtr windowSize); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void WindowFocusChangedEventCallbackType2(bool focusGained); /// /// FocusChanged event. /// /// 3 public event EventHandler FocusChanged { add { if (_windowFocusChangedEventHandler == null) { _windowFocusChangedEventCallback = OnWindowFocusedChanged; WindowFocusChangedSignal().Connect(_windowFocusChangedEventCallback); } _windowFocusChangedEventHandler += value; } remove { _windowFocusChangedEventHandler -= value; if (_windowFocusChangedEventHandler == null && WindowFocusChangedSignal().Empty() == false && _windowFocusChangedEventCallback != null) { WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback); } } } /// /// This event is emitted when the screen is touched and when the touch ends.
/// If there are multiple touch points, then this will be emitted when the first touch occurs and /// then when the last finger is lifted.
/// An interrupted event will also be emitted (if it occurs).
///
/// 3 public event EventHandler TouchEvent { add { if (_rootLayerTouchDataEventHandler == null) { _rootLayerTouchDataCallback = OnWindowTouch; this.TouchDataSignal().Connect(_rootLayerTouchDataCallback); } _rootLayerTouchDataEventHandler += value; } remove { _rootLayerTouchDataEventHandler -= value; if (_rootLayerTouchDataEventHandler == null && TouchSignal().Empty() == false) { this.TouchDataSignal().Disconnect(_rootLayerTouchDataCallback); } } } /// /// This event is emitted when the wheel event is received. /// /// 3 public event EventHandler WheelEvent { add { if (_stageWheelHandler == null) { _wheelEventCallback = OnStageWheel; this.StageWheelEventSignal().Connect(_wheelEventCallback); } _stageWheelHandler += value; } remove { _stageWheelHandler -= value; if (_stageWheelHandler == null && StageWheelEventSignal().Empty() == false) { this.StageWheelEventSignal().Disconnect(_wheelEventCallback); } } } /// /// This event is emitted when the key event is received. /// /// 3 public event EventHandler KeyEvent { add { if (_stageKeyHandler == null) { _stageKeyCallbackDelegate = OnStageKey; KeyEventSignal().Connect(_stageKeyCallbackDelegate); } _stageKeyHandler += value; } remove { _stageKeyHandler -= value; if (_stageKeyHandler == null && KeyEventSignal().Empty() == false) { KeyEventSignal().Disconnect(_stageKeyCallbackDelegate); } } } /// /// This event is emitted when the window resized. /// /// 3 public event EventHandler Resized { add { if (_windowResizedEventHandler == null) { _windowResizedEventCallback = OnResized; ResizedSignal().Connect(_windowResizedEventCallback); } _windowResizedEventHandler += value; } remove { _windowResizedEventHandler -= value; if (_windowResizedEventHandler == null && ResizedSignal().Empty() == false && _windowResizedEventCallback != null) { ResizedSignal().Disconnect(_windowResizedEventCallback); } } } /// /// Please do not use! this will be deprecated. Please use 'FocusChanged' event instead. /// /// 3 /// Please do not use! this will be deprecated! /// Instead please use FocusChanged. [Obsolete("Please do not use! This will be deprecated! Please use FocusChanged instead! " + "Like: " + "Window.Instance.FocusChanged = OnFocusChanged; " + "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")] [EditorBrowsable(EditorBrowsableState.Never)] public event EventHandler WindowFocusChanged { add { if (_windowFocusChangedEventHandler2 == null) { _windowFocusChangedEventCallback2 = OnWindowFocusedChanged2; WindowFocusChangedSignal().Connect(_windowFocusChangedEventCallback2); } _windowFocusChangedEventHandler2 += value; } remove { _windowFocusChangedEventHandler2 -= value; if (_windowFocusChangedEventHandler2 == null && WindowFocusChangedSignal().Empty() == false && _windowFocusChangedEventCallback2 != null) { WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback2); } } } /// /// ViewAdded will be triggered when the view added on Window /// /// 6 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public event EventHandler ViewAdded; internal void SendViewAdded(View view) { ViewAdded?.Invoke(view, EventArgs.Empty); } internal event EventHandler EventProcessingFinished { add { if (_stageEventProcessingFinishedEventHandler == null) { _stageEventProcessingFinishedEventCallbackDelegate = OnEventProcessingFinished; EventProcessingFinishedSignal().Connect(_stageEventProcessingFinishedEventCallbackDelegate); } _stageEventProcessingFinishedEventHandler += value; } remove { _stageEventProcessingFinishedEventHandler -= value; if (_stageEventProcessingFinishedEventHandler == null && EventProcessingFinishedSignal().Empty() == false) { EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate); } } } internal event EventHandler ContextLost { add { if (_stageContextLostEventHandler == null) { _stageContextLostEventCallbackDelegate = OnContextLost; ContextLostSignal().Connect(_stageContextLostEventCallbackDelegate); } _stageContextLostEventHandler += value; } remove { _stageContextLostEventHandler -= value; if (_stageContextLostEventHandler == null && ContextLostSignal().Empty() == false) { ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate); } } } internal event EventHandler ContextRegained { add { if (_stageContextRegainedEventHandler == null) { _stageContextRegainedEventCallbackDelegate = OnContextRegained; ContextRegainedSignal().Connect(_stageContextRegainedEventCallbackDelegate); } _stageContextRegainedEventHandler += value; } remove { _stageContextRegainedEventHandler -= value; if (_stageContextRegainedEventHandler == null && ContextRegainedSignal().Empty() == false) { this.ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate); } } } internal event EventHandler SceneCreated { add { if (_stageSceneCreatedEventHandler == null) { _stageSceneCreatedEventCallbackDelegate = OnSceneCreated; SceneCreatedSignal().Connect(_stageSceneCreatedEventCallbackDelegate); } _stageSceneCreatedEventHandler += value; } remove { _stageSceneCreatedEventHandler -= value; if (_stageSceneCreatedEventHandler == null && SceneCreatedSignal().Empty() == false) { SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate); } } } private event EventHandler _windowFocusChangedEventHandler; private event EventHandler _rootLayerTouchDataEventHandler; private event EventHandler _stageWheelHandler; private event EventHandler _stageKeyHandler; private event EventHandler _stageEventProcessingFinishedEventHandler; private event EventHandler _windowResizedEventHandler; private event EventHandler _windowFocusChangedEventHandler2; /// /// Enumeration for orientation of the window is the way in which a rectangular page is oriented for normal viewing. /// /// 3 public enum WindowOrientation { /// /// Portrait orientation. The height of the display area is greater than the width. /// /// 3 Portrait = 0, /// /// Landscape orientation. A wide view area is needed. /// /// 3 Landscape = 90, /// /// Portrait inverse orientation. /// /// 3 PortraitInverse = 180, /// /// Landscape inverse orientation. /// /// 3 LandscapeInverse = 270 } /// /// Enumeration for the key grab mode for platform-level APIs. /// /// 3 public enum KeyGrabMode { /// /// Grabs a key only when on the top of the grabbing-window stack mode. /// Topmost = 0, /// /// Grabs a key together with the other client window(s) mode. /// Shared, /// /// Grabs a key exclusively regardless of the grabbing-window's position on the window stack with the possibility of overriding the grab by the other client window mode. /// OverrideExclusive, /// /// Grabs a key exclusively regardless of the grabbing-window's position on the window stack mode. /// Exclusive }; /// /// Enumeration for opacity of the indicator. /// internal enum IndicatorBackgroundOpacity { Opaque = 100, Translucent = 50, Transparent = 0 } /// /// Enumeration for visible mode of the indicator. /// internal enum IndicatorVisibleMode { Invisible = 0, Visible = 1, Auto = 2 } /// /// The stage instance property (read-only).
/// Gets the current window.
///
/// 3 public static Window Instance { get { return instance; } } /// /// Gets or sets a window type. /// /// 3 public WindowType Type { get { WindowType ret = (WindowType)Interop.Window.GetType(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } set { Interop.Window.SetType(swigCPtr, (int)value); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } } /// /// Gets/Sets a window title. /// /// 4 public string Title { get { return _windowTitle; } set { _windowTitle = value; SetClass(_windowTitle, ""); } } /// /// The rendering behavior of a Window. /// /// 5 public RenderingBehaviorType RenderingBehavior { get { return GetRenderingBehavior(); } set { SetRenderingBehavior(value); } } /// /// The window size property (read-only). /// /// 3 public Size2D Size { get { Size2D ret = GetSize(); return ret; } } /// /// The background color property. /// /// 3 public Color BackgroundColor { set { SetBackgroundColor(value); } get { Color ret = GetBackgroundColor(); return ret; } } /// /// The DPI property (read-only).
/// Retrieves the DPI of the display device to which the Window is connected.
///
/// 3 public Vector2 Dpi { get { return GetDpi(); } } /// /// The layer count property (read-only).
/// Queries the number of on-Window layers.
///
/// 3 public uint LayerCount { get { return GetLayerCount(); } } /// /// Gets or sets a size of the window. /// /// 4 public Size2D WindowSize { get { return GetWindowSize(); } set { SetWindowSize(value); } } /// /// Gets or sets a position of the window. /// /// 4 public Position2D WindowPosition { get { return GetPosition(); } set { SetPosition(value); } } internal static Vector4 DEFAULT_BACKGROUND_COLOR { get { global::System.IntPtr cPtr = Interop.Stage.Stage_DEFAULT_BACKGROUND_COLOR_get(); Vector4 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector4(cPtr, false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } } internal static Vector4 DEBUG_BACKGROUND_COLOR { get { global::System.IntPtr cPtr = Interop.Stage.Stage_DEBUG_BACKGROUND_COLOR_get(); Vector4 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector4(cPtr, false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } } internal List LayersChildren { get { return _childLayers; } } internal LayoutController LayoutController { get { return localController; } } /// /// Feed a key-event into the window. /// /// The key event to feed. /// 4 [Obsolete("Please do not use! This will be deprecated! Please use FeedKey(Key keyEvent) instead!")] public static void FeedKeyEvent(Key keyEvent) { Interop.Window.Window_FeedKeyEvent(Key.getCPtr(keyEvent)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Sets whether the window accepts a focus or not. /// /// If a focus is accepted or not. The default is true. /// 3 public void SetAcceptFocus(bool accept) { Interop.Window.SetAcceptFocus(swigCPtr, accept); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Returns whether the window accepts a focus or not. /// /// True if the window accepts a focus, false otherwise. /// 3 public bool IsFocusAcceptable() { bool ret = Interop.Window.IsFocusAcceptable(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Shows the window if it is hidden. /// /// 3 public void Show() { Interop.Window.Show(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Hides the window if it is showing. /// /// 3 public void Hide() { Interop.Window.Hide(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Retrieves whether the window is visible or not. /// /// True if the window is visible. /// 3 public bool IsVisible() { bool temp = Interop.Window.IsVisible(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return temp; } /// /// Gets the count of supported auxiliary hints of the window. /// /// The number of supported auxiliary hints. /// 3 public uint GetSupportedAuxiliaryHintCount() { uint ret = Interop.Window.GetSupportedAuxiliaryHintCount(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets the supported auxiliary hint string of the window. /// /// The index of the supported auxiliary hint lists. /// The auxiliary hint string of the index. /// 3 public string GetSupportedAuxiliaryHint(uint index) { string ret = Interop.Window.GetSupportedAuxiliaryHint(swigCPtr, index); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Creates an auxiliary hint of the window. /// /// The auxiliary hint string. /// The value string. /// The ID of created auxiliary hint, or 0 on failure. /// 3 public uint AddAuxiliaryHint(string hint, string value) { uint ret = Interop.Window.AddAuxiliaryHint(swigCPtr, hint, value); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Removes an auxiliary hint of the window. /// /// The ID of the auxiliary hint. /// True if no error occurred, false otherwise. /// 3 public bool RemoveAuxiliaryHint(uint id) { bool ret = Interop.Window.RemoveAuxiliaryHint(swigCPtr, id); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Changes a value of the auxiliary hint. /// /// The auxiliary hint ID. /// The value string to be set. /// True if no error occurred, false otherwise. /// 3 public bool SetAuxiliaryHintValue(uint id, string value) { bool ret = Interop.Window.SetAuxiliaryHintValue(swigCPtr, id, value); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets a value of the auxiliary hint. /// /// The auxiliary hint ID. /// The string value of the auxiliary hint ID, or an empty string if none exists. /// 3 public string GetAuxiliaryHintValue(uint id) { string ret = Interop.Window.GetAuxiliaryHintValue(swigCPtr, id); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets an ID of the auxiliary hint string. /// /// The auxiliary hint string. /// The ID of auxiliary hint string, or 0 on failure. /// 3 public uint GetAuxiliaryHintId(string hint) { uint ret = Interop.Window.GetAuxiliaryHintId(swigCPtr, hint); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets a region to accept input events. /// /// The region to accept input events. /// 3 public void SetInputRegion(Rectangle inputRegion) { Interop.Window.SetInputRegion(swigCPtr, Rectangle.getCPtr(inputRegion)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Sets a priority level for the specified notification window. /// /// The notification window level. /// True if no error occurred, false otherwise. /// 3 public bool SetNotificationLevel(NotificationLevel level) { bool ret = Interop.Window.SetNotificationLevel(swigCPtr, (int)level); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets a priority level for the specified notification window. /// /// The notification window level. /// 3 public NotificationLevel GetNotificationLevel() { NotificationLevel ret = (NotificationLevel)Interop.Window.GetNotificationLevel(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets a transparent window's visual state to opaque.
/// If a visual state of a transparent window is opaque,
/// then the window manager could handle it as an opaque window when calculating visibility. ///
/// Whether the window's visual state is opaque. /// This will have no effect on an opaque window.
/// It doesn't change transparent window to opaque window but lets the window manager know the visual state of the window. ///
/// 3 public void SetOpaqueState(bool opaque) { Interop.Window.SetOpaqueState(swigCPtr, opaque); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Returns whether a transparent window's visual state is opaque or not. /// /// True if the window's visual state is opaque, false otherwise. /// The return value has no meaning on an opaque window. /// 3 public bool IsOpaqueState() { bool ret = Interop.Window.IsOpaqueState(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets a window's screen off mode. /// /// The screen mode. /// True if no error occurred, false otherwise. /// 4 public bool SetScreenOffMode(ScreenOffMode screenOffMode) { bool ret = Interop.Window.SetScreenOffMode(swigCPtr, (int)screenOffMode); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets the screen mode of the window. /// /// The screen off mode. /// 4 public ScreenOffMode GetScreenOffMode() { ScreenOffMode ret = (ScreenOffMode)Interop.Window.GetScreenOffMode(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets preferred brightness of the window. /// /// The preferred brightness (0 to 100). /// True if no error occurred, false otherwise. /// 3 public bool SetBrightness(int brightness) { bool ret = Interop.Window.SetBrightness(swigCPtr, brightness); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets the preferred brightness of the window. /// /// The preferred brightness. /// 3 public int GetBrightness() { int ret = Interop.Window.GetBrightness(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets the window name and the class string. /// /// The name of the window. /// The class of the window. /// 4 public void SetClass(string name, string klass) { Interop.Window.Window_SetClass(swigCPtr, name, klass); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Raises the window to the top of the window stack. /// /// 3 public void Raise() { Interop.Window.Window_Raise(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Lowers the window to the bottom of the window stack. /// /// 3 public void Lower() { Interop.Window.Window_Lower(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Activates the window to the top of the window stack even it is iconified. /// /// 3 public void Activate() { Interop.Window.Window_Activate(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Gets the default ( root ) layer. /// /// The root layer. /// 3 public Layer GetDefaultLayer() { return this.GetRootLayer(); } /// /// Add a child view to window. /// /// the child should be added to the window. /// 3 public void Add(View view) { Interop.Actor.Actor_Add(Layer.getCPtr(GetRootLayer()), View.getCPtr(view)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); this.GetRootLayer().AddViewToLayerList(view); // Maintain the children list in the Layer view.InternalParent = this.GetRootLayer(); } /// /// Remove a child view from window. /// /// the child to be removed. /// 3 public void Remove(View view) { Interop.Actor.Actor_Remove(Layer.getCPtr(GetRootLayer()), View.getCPtr(view)); this.GetRootLayer().RemoveViewFromLayerList(view); // Maintain the children list in the Layer view.InternalParent = null; } /// /// Retrieves the layer at a specified depth. /// /// The layer's depth index. /// The layer found at the given depth. /// 3 public Layer GetLayer(uint depth) { if (depth < LayersChildren?.Count) { Layer ret = LayersChildren?[Convert.ToInt32(depth)]; return ret; } else { return null; } } /// /// Destroy the window immediately. /// [EditorBrowsable(EditorBrowsableState.Never)] public void Destroy() { this.Dispose(); } /// /// Keep rendering for at least the given amount of time. /// /// Time to keep rendering, 0 means render at least one more frame. /// 3 public void KeepRendering(float durationSeconds) { Interop.Stage.Stage_KeepRendering(stageCPtr, durationSeconds); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Grabs the key specified by a key for a window only when a window is the topmost window.
/// This function can be used for following example scenarios:
/// - Mobile - Using volume up or down as zoom up or down in camera apps.
///
/// The key code to grab. /// True if the grab succeeds. /// 3 public bool GrabKeyTopmost(int DaliKey) { bool ret = Interop.Window.GrabKeyTopmost(HandleRef.ToIntPtr(this.swigCPtr), DaliKey); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Ungrabs the key specified by a key for the window.
/// Note: If this function is called between key down and up events of a grabbed key, an application doesn't receive the key up event.
///
/// The key code to ungrab. /// True if the ungrab succeeds. /// 3 public bool UngrabKeyTopmost(int DaliKey) { bool ret = Interop.Window.UngrabKeyTopmost(HandleRef.ToIntPtr(this.swigCPtr), DaliKey); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Grabs the key specified by a key for a window in a GrabMode.
/// Details: This function can be used for following example scenarios:
/// - TV - A user might want to change the volume or channel of the background TV contents while focusing on the foregrund app.
/// - Mobile - When a user presses the Home key, the homescreen appears regardless of the current foreground app.
/// - Mobile - Using the volume up or down as zoom up or down in camera apps.
///
/// The key code to grab. /// The grab mode for the key. /// True if the grab succeeds. /// 3 public bool GrabKey(int DaliKey, KeyGrabMode GrabMode) { bool ret = Interop.Window.GrabKey(HandleRef.ToIntPtr(this.swigCPtr), DaliKey, (int)GrabMode); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Ungrabs the key specified by a key for a window.
/// Note: If this function is called between key down and up events of a grabbed key, an application doesn't receive the key up event.
///
/// The key code to ungrab. /// True if the ungrab succeeds. /// 3 public bool UngrabKey(int DaliKey) { bool ret = Interop.Window.UngrabKey(HandleRef.ToIntPtr(this.swigCPtr), DaliKey); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets the keyboard repeat information. /// /// The key repeat rate value in seconds. /// The key repeat delay value in seconds. /// True if setting the keyboard repeat succeeds. /// 5 public bool SetKeyboardRepeatInfo(float rate, float delay) { bool ret = Interop.Window.SetKeyboardRepeatInfo(rate, delay); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets the keyboard repeat information. /// /// The key repeat rate value in seconds. /// The key repeat delay value in seconds. /// True if setting the keyboard repeat succeeds. /// 5 public bool GetKeyboardRepeatInfo(out float rate, out float delay) { bool ret = Interop.Window.GetKeyboardRepeatInfo(out rate, out delay); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Adds a layer to the stage. /// /// Layer to add. /// 3 public void AddLayer(Layer layer) { Interop.Window.Add(swigCPtr, Layer.getCPtr(layer)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); LayersChildren?.Add(layer); layer.SetWindow(this); } /// /// Removes a layer from the stage. /// /// Layer to remove. /// 3 public void RemoveLayer(Layer layer) { Interop.Window.Remove(swigCPtr, Layer.getCPtr(layer)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); LayersChildren?.Remove(layer); layer.SetWindow(null); } /// /// Feeds a key event into the window. /// /// The key event to feed. /// 5 public void FeedKey(Key keyEvent) { Interop.Window.Window_FeedKeyEvent(Key.getCPtr(keyEvent)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Allows at least one more render, even when paused. /// The window should be shown, not minimised. /// /// 4 public void RenderOnce() { Interop.Window.Window_RenderOnce(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Window obj) { return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; } internal static Window GetCurrent() { Window ret = new Window(Interop.Stage.Stage_GetCurrent(), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal static bool IsInstalled() { bool ret = Interop.Stage.Stage_IsInstalled(); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal WindowFocusSignalType WindowFocusChangedSignal() { WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(swigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal void ShowIndicator(Window.IndicatorVisibleMode visibleMode) { Interop.WindowInternal.Window_ShowIndicator(swigCPtr, (int)visibleMode); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal void SetIndicatorBackgroundOpacity(Window.IndicatorBackgroundOpacity opacity) { Interop.WindowInternal.Window_SetIndicatorBgOpacity(swigCPtr, (int)opacity); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal void RotateIndicator(Window.WindowOrientation orientation) { Interop.WindowInternal.Window_RotateIndicator(swigCPtr, (int)orientation); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal void AddAvailableOrientation(Window.WindowOrientation orientation) { Interop.WindowInternal.Window_AddAvailableOrientation(swigCPtr, (int)orientation); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal void RemoveAvailableOrientation(Window.WindowOrientation orientation) { Interop.WindowInternal.Window_RemoveAvailableOrientation(swigCPtr, (int)orientation); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal void SetPreferredOrientation(Window.WindowOrientation orientation) { Interop.WindowInternal.Window_SetPreferredOrientation(swigCPtr, (int)orientation); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal Window.WindowOrientation GetPreferredOrientation() { Window.WindowOrientation ret = (Window.WindowOrientation)Interop.WindowInternal.Window_GetPreferredOrientation(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal Any GetNativeHandle() { Any ret = new Any(Interop.WindowInternal.Window_GetNativeHandle(swigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal WindowFocusSignalType FocusChangedSignal() { WindowFocusSignalType ret = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(swigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal void Add(Layer layer) { Interop.Window.Add(swigCPtr, Layer.getCPtr(layer)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); LayersChildren?.Add(layer); layer.SetWindow(this); } internal void Remove(Layer layer) { Interop.Window.Remove(swigCPtr, Layer.getCPtr(layer)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); LayersChildren?.Remove(layer); layer.SetWindow(null); } internal Vector2 GetSize() { var val = new Uint16Pair(Interop.Window.GetSize(swigCPtr), false); Vector2 ret = new Vector2(val.GetWidth(), val.GetHeight()); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal RenderTaskList GetRenderTaskList() { RenderTaskList ret = new RenderTaskList(Interop.Stage.Stage_GetRenderTaskList(stageCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Queries the number of on-window layers. /// /// The number of layers. /// Note that a default layer is always provided (count >= 1). internal uint GetLayerCount() { if (LayersChildren == null || LayersChildren.Count < 0) return 0; return (uint) LayersChildren.Count; } internal Layer GetRootLayer() { // Window.IsInstalled() is actually true only when called from event thread and // Core has been initialized, not when Stage is ready. if (_rootLayer == null && Window.IsInstalled()) { _rootLayer = new Layer(Interop.Window.GetRootLayer(swigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); LayersChildren?.Add(_rootLayer); _rootLayer.SetWindow(this); } return _rootLayer; } internal void SetBackgroundColor(Vector4 color) { Interop.Window.SetBackgroundColor(swigCPtr, Vector4.getCPtr(color)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal Vector4 GetBackgroundColor() { Vector4 ret = new Vector4(Interop.Window.GetBackgroundColor(swigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal Vector2 GetDpi() { Vector2 ret = new Vector2(Interop.Stage.Stage_GetDpi(stageCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal ObjectRegistry GetObjectRegistry() { ObjectRegistry ret = new ObjectRegistry(Interop.Stage.Stage_GetObjectRegistry(stageCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal void SetRenderingBehavior(RenderingBehaviorType renderingBehavior) { Interop.Stage.Stage_SetRenderingBehavior(stageCPtr, (int)renderingBehavior); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal RenderingBehaviorType GetRenderingBehavior() { RenderingBehaviorType ret = (RenderingBehaviorType)Interop.Stage.Stage_GetRenderingBehavior(stageCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal KeyEventSignal KeyEventSignal() { KeyEventSignal ret = new KeyEventSignal(Interop.Window.KeyEventSignal(swigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal VoidSignal EventProcessingFinishedSignal() { VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_EventProcessingFinishedSignal(stageCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal TouchSignal TouchSignal() { TouchSignal ret = new TouchSignal(Interop.Window.TouchSignal(swigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal TouchDataSignal TouchDataSignal() { TouchDataSignal ret = new TouchDataSignal(Interop.ActorSignal.Actor_TouchSignal(Layer.getCPtr(GetRootLayer())), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal VoidSignal ContextLostSignal() { VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_ContextLostSignal(stageCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal VoidSignal ContextRegainedSignal() { VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_ContextRegainedSignal(stageCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal VoidSignal SceneCreatedSignal() { VoidSignal ret = new VoidSignal(Interop.StageSignal.Stage_SceneCreatedSignal(stageCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal ResizedSignal ResizedSignal() { ResizedSignal ret = new ResizedSignal(Interop.Window.Window_ResizedSignal(swigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal void SetWindowSize(Size2D size) { var val = new Uint16Pair((uint)size.Width, (uint)size.Height); Interop.Window.SetSize(swigCPtr, Uint16Pair.getCPtr(val)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); // Resetting Window size should request a relayout of the tree. } internal Size2D GetWindowSize() { var val = new Uint16Pair(Interop.Window.GetSize(swigCPtr), false); Size2D ret = new Size2D(val.GetWidth(), val.GetHeight()); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal void SetPosition(Position2D position) { var val = new Uint16Pair((uint)position.X, (uint)position.Y); Interop.Window.SetPosition(swigCPtr, Uint16Pair.getCPtr(val)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); // Setting Position of the window should request a relayout of the tree. } internal Position2D GetPosition() { var val = new Uint16Pair(Interop.Window.GetPosition(swigCPtr), true); Position2D ret = new Position2D(val.GetX(), val.GetY()); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } internal void SetPositionSize(Rectangle positionSize) { Interop.Window.Window_SetPositionSize(swigCPtr, Rectangle.getCPtr(positionSize)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); // Setting Position of the window should request a relayout of the tree. } /// /// Sets whether the window is transparent or not. /// /// Whether the window is transparent or not. /// 5 public void SetTransparency(bool transparent) { Interop.Window.SetTransparency(swigCPtr, transparent); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); // Setting transparency of the window should request a relayout of the tree in the case the window changes from fully transparent. } /// /// Sets parent window of the window. /// After setting that, these windows do together when raise-up, lower and iconified/deiconified. /// Initially, the window is located on top of the parent. The window can go below parent by calling Lower(). /// If parent's window stack is changed by calling Raise() or Lower(), child windows are located on top of the parent again. /// /// The parent window. /// 6 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetParent(Window parent) { Interop.Window.SetParent(swigCPtr, Window.getCPtr(parent)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Unsets parent window of the window. /// After unsetting, the window is disconnected his parent window. /// /// 6 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void Unparent() { Interop.Window.Unparent(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Gets parent window of the window. /// /// The parent window of the window. /// 6 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Window GetParent() { Window ret = new Window(Interop.Window.GetParent(swigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Dispose for Window /// [EditorBrowsable(EditorBrowsableState.Never)] protected override void Dispose(DisposeTypes type) { if (disposed) { return; } if (type == DisposeTypes.Explicit) { //Called by User //Release your own managed resources here. //You should release all of your own disposable objects here. _rootLayer.Dispose(); localController.Dispose(); foreach(var layer in _childLayers) { layer.Dispose(); } _childLayers.Clear(); } this.DisconnectNativeSignals(); //Release your own unmanaged resources here. //You should not access any managed member here except static instance. //because the execution order of Finalizes is non-deterministic. if (swigCPtr.Handle != global::System.IntPtr.Zero) { if (swigCMemOwn) { swigCMemOwn = false; Interop.Window.delete_Window(swigCPtr); } swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); } base.Dispose(type); } internal System.IntPtr GetNativeWindowHandler() { System.IntPtr ret = Interop.Window.GetNativeWindowHandler(HandleRef.ToIntPtr(this.swigCPtr)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } private void OnWindowFocusedChanged(bool focusGained) { FocusChangedEventArgs e = new FocusChangedEventArgs(); e.FocusGained = focusGained; if (_windowFocusChangedEventHandler != null) { _windowFocusChangedEventHandler(this, e); } } private StageWheelSignal WheelEventSignal() { StageWheelSignal ret = new StageWheelSignal(Interop.StageSignal.Stage_WheelEventSignal(stageCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } private WheelSignal StageWheelEventSignal() { WheelSignal ret = new WheelSignal(Interop.ActorSignal.Actor_WheelEventSignal(Layer.getCPtr(this.GetRootLayer())), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } private bool OnWindowTouch(IntPtr view, IntPtr touchData) { if (touchData == global::System.IntPtr.Zero) { NUILog.Error("touchData should not be null!"); return false; } TouchEventArgs e = new TouchEventArgs(); e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData); if (_rootLayerTouchDataEventHandler != null) { _rootLayerTouchDataEventHandler(this, e); } return false; } private bool OnStageWheel(IntPtr rootLayer, IntPtr wheelEvent) { if (wheelEvent == global::System.IntPtr.Zero) { NUILog.Error("wheelEvent should not be null!"); return true; } WheelEventArgs e = new WheelEventArgs(); e.Wheel = Tizen.NUI.Wheel.GetWheelFromPtr(wheelEvent); if (_stageWheelHandler != null) { _stageWheelHandler(this, e); } return true; } // Callback for Stage KeyEventsignal private void OnStageKey(IntPtr data) { KeyEventArgs e = new KeyEventArgs(); e.Key = Tizen.NUI.Key.GetKeyFromPtr(data); if (_stageKeyHandler != null) { //here we send all data to user event handlers _stageKeyHandler(this, e); } } // Callback for Stage EventProcessingFinishedSignal private void OnEventProcessingFinished() { if (_stageEventProcessingFinishedEventHandler != null) { _stageEventProcessingFinishedEventHandler(this, null); } } // Callback for Stage ContextLostSignal private void OnContextLost() { if (_stageContextLostEventHandler != null) { _stageContextLostEventHandler(this, null); } } // Callback for Stage ContextRegainedSignal private void OnContextRegained() { if (_stageContextRegainedEventHandler != null) { _stageContextRegainedEventHandler(this, null); } } // Callback for Stage SceneCreatedSignal private void OnSceneCreated() { if (_stageSceneCreatedEventHandler != null) { _stageSceneCreatedEventHandler(this, null); } } private void OnResized(IntPtr windowSize) { ResizedEventArgs e = new ResizedEventArgs(); var val = new Uint16Pair(windowSize, false); e.WindowSize = new Size2D(val.GetWidth(), val.GetHeight()); val.Dispose(); if (_windowResizedEventHandler != null) { _windowResizedEventHandler(this, e); } } private void OnWindowFocusedChanged2(bool focusGained) { FocusChangedEventArgs e = new FocusChangedEventArgs(); e.FocusGained = focusGained; if (_windowFocusChangedEventHandler2 != null) { _windowFocusChangedEventHandler2(this, e); } } /// /// The focus changed event argument. /// /// 3 public class FocusChangedEventArgs : EventArgs { /// /// FocusGained flag. /// /// 3 public bool FocusGained { get; set; } } /// /// The touch event argument. /// /// 3 public class TouchEventArgs : EventArgs { private Touch _touch; /// /// Touch. /// /// 3 public Touch Touch { get { return _touch; } set { _touch = value; } } } /// /// Wheel event arguments. /// /// 3 public class WheelEventArgs : EventArgs { private Wheel _wheel; /// /// Wheel. /// /// 3 public Wheel Wheel { get { return _wheel; } set { _wheel = value; } } } /// /// Key event arguments. /// /// 3 public class KeyEventArgs : EventArgs { private Key _key; /// /// Key. /// /// 3 public Key Key { get { return _key; } set { _key = value; } } } /// /// Sets position and size of the window. This API guarantees that /// both moving and resizing of window will appear on the screen at once. /// [EditorBrowsable(EditorBrowsableState.Never)] public Rectangle WindowPositionSize { get { Position2D position = GetPosition(); Size2D size = GetSize(); Rectangle ret = new Rectangle(position.X, position.Y, size.Width, size.Height); return ret; } set { SetPositionSize(value); } } /// /// Feeds a key event into the window. /// This resized event arguments. /// /// 3 public class ResizedEventArgs : EventArgs { Size2D _windowSize; /// /// This window size. /// /// 4 public Size2D WindowSize { get { return _windowSize; } set { _windowSize = value; } } } /// /// Please do not use! this will be deprecated /// /// 3 [Obsolete("Please do not use! This will be deprecated! Please use FocusChangedEventArgs instead! " + "Like: " + "Window.Instance.FocusChanged = OnFocusChanged; " + "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")] [EditorBrowsable(EditorBrowsableState.Never)] public class WindowFocusChangedEventArgs : EventArgs { /// /// Please do not use! this will be deprecated /// /// 3 public bool FocusGained { get; set; } } /// /// Contains and encapsulates Native Window handle. /// /// 4 public class SafeNativeWindowHandle : SafeHandle { /// /// Contructor, Native window handle is set to handle. /// /// 4 public SafeNativeWindowHandle() : base(IntPtr.Zero, false) { SetHandle(Tizen.NUI.Window.Instance.GetNativeWindowHandler()); } /// /// Null check if the handle is valid or not. /// /// 4 public override bool IsInvalid { get { return this.handle == IntPtr.Zero; } } /// /// Release handle itself. /// /// true when released successfully. /// 4 protected override bool ReleaseHandle() { return true; } } /// /// Disconnect all native signals /// /// 5 internal void DisconnectNativeSignals() { if( _windowFocusChangedEventCallback != null ) { WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback); } if( _rootLayerTouchDataCallback != null ) { TouchDataSignal().Disconnect(_rootLayerTouchDataCallback); } if( _wheelEventCallback != null ) { StageWheelEventSignal().Disconnect(_wheelEventCallback); } if( _stageKeyCallbackDelegate != null ) { KeyEventSignal().Disconnect(_stageKeyCallbackDelegate); } if( _stageEventProcessingFinishedEventCallbackDelegate != null ) { EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate); } if( _stageContextLostEventCallbackDelegate != null ) { ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate); } if( _stageContextRegainedEventCallbackDelegate != null ) { ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate); } if( _stageSceneCreatedEventCallbackDelegate != null ) { SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate); } if( _windowResizedEventCallback != null ) { ResizedSignal().Disconnect(_windowResizedEventCallback); } if( _windowFocusChangedEventCallback2 != null ) { WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback2); } } } }