-/*
- * Copyright(c) 2020 Samsung Electronics Co., Ltd.
+/*
+ * Copyright(c) 2022 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.
/// <since_tizen> 5 </since_tizen>
public void DoAction(int propertyIndexOfVisual, int propertyIndexOfActionId, PropertyValue attributes)
{
- Interop.View.View_DoAction(swigCPtr, propertyIndexOfVisual, propertyIndexOfActionId, PropertyValue.getCPtr(attributes));
+ Interop.View.DoAction(SwigCPtr, propertyIndexOfVisual, propertyIndexOfActionId, PropertyValue.getCPtr(attributes));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
AlphaFunction.BuiltinFunctions? alphaFunction = null,
object initialValue = null)
{
- Tizen.NUI.PropertyMap background = Background;
-
- if (background.Empty())
+ if (IsBackgroundEmpty())
{
// If there is no background yet, ensure there is a transparent
// color visual
BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);
- background = Background;
}
return AnimateColor("background", destinationValue, startTime, endTime, alphaFunction, initialValue);
}
public Animation AnimateColor(string targetVisual, object destinationColor, int startTime, int endTime, AlphaFunction.BuiltinFunctions? alphaFunction = null, object initialColor = null)
{
Animation animation = null;
+ using (PropertyMap animator = new PropertyMap())
+ using (PropertyMap timePeriod = new PropertyMap())
+ using (PropertyValue pvDuration = new PropertyValue((endTime - startTime) / 1000.0f))
+ using (PropertyValue pvDelay = new PropertyValue(startTime / 1000.0f))
+ using (PropertyMap transition = new PropertyMap())
+ using (PropertyValue pvTarget = new PropertyValue(targetVisual))
+ using (PropertyValue pvProperty = new PropertyValue("mixColor"))
+ using (PropertyValue destValue = PropertyValue.CreateFromObject(destinationColor))
{
- PropertyMap _animator = new PropertyMap();
if (alphaFunction != null)
{
- _animator.Add("alphaFunction", new PropertyValue(AlphaFunction.BuiltinToPropertyKey(alphaFunction)));
+ using (PropertyValue pvAlpha = new PropertyValue(AlphaFunction.BuiltinToPropertyKey(alphaFunction)))
+ {
+ animator.Add("alphaFunction", pvAlpha);
+ }
}
- PropertyMap _timePeriod = new PropertyMap();
- _timePeriod.Add("duration", new PropertyValue((endTime - startTime) / 1000.0f));
- _timePeriod.Add("delay", new PropertyValue(startTime / 1000.0f));
- _animator.Add("timePeriod", new PropertyValue(_timePeriod));
-
- PropertyMap _transition = new PropertyMap();
- _transition.Add("animator", new PropertyValue(_animator));
- _transition.Add("target", new PropertyValue(targetVisual));
- _transition.Add("property", new PropertyValue("mixColor"));
+ timePeriod.Add("duration", pvDuration);
+ timePeriod.Add("delay", pvDelay);
+ using (PropertyValue pvTimePeriod = new PropertyValue(timePeriod))
+ {
+ animator.Add("timePeriod", pvTimePeriod);
+ }
+ using (PropertyValue pvAnimator = new PropertyValue(animator))
+ {
+ transition.Add("animator", pvAnimator);
+ }
+ transition.Add("target", pvTarget);
+ transition.Add("property", pvProperty);
if (initialColor != null)
{
- PropertyValue initValue = PropertyValue.CreateFromObject(initialColor);
- _transition.Add("initialValue", initValue);
+ using (PropertyValue initValue = PropertyValue.CreateFromObject(initialColor))
+ {
+ transition.Add("initialValue", initValue);
+ }
}
- PropertyValue destValue = PropertyValue.CreateFromObject(destinationColor);
- _transition.Add("targetValue", destValue);
- TransitionData _transitionData = new TransitionData(_transition);
-
- animation = new Animation(Interop.View.View_CreateTransition(swigCPtr, TransitionData.getCPtr(_transitionData)), true);
+ transition.Add("targetValue", destValue);
+ using (TransitionData transitionData = new TransitionData(transition))
+ {
+ animation = new Animation(Interop.View.CreateTransition(SwigCPtr, TransitionData.getCPtr(transitionData)), true);
+ }
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// <since_tizen> 4 </since_tizen>
public override void Add(View child)
{
- bool hasLayout = (_layout != null);
+ bool hasLayout = (layout != null);
if (null == child)
{
oldParent.Remove(child);
}
child.InternalParent = this;
+ LayoutCount += child.LayoutCount;
- Interop.Actor.Actor_Add(swigCPtr, View.getCPtr(child));
+ Interop.Actor.Add(SwigCPtr, View.getCPtr(child));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
Children.Add(child);
+ OnChildAdded(child);
if (ChildAdded != null)
{
};
ChildAdded(this, e);
}
- BindableObject.SetInheritedBindingContext(child, this?.BindingContext);
}
}
/// </summary>
/// <seealso cref="Container.Remove" />
/// <since_tizen> 4 </since_tizen>
+ /// <exception cref="InvalidOperationException">Thrown when deleting a view that is not a child of this view</exception>
public override void Remove(View child)
{
if (child == null || child.GetParent() == null) // Early out if child null.
return;
- bool hasLayout = (_layout != null);
+ if (child.GetParent() != this)
+ {
+ //throw new System.InvalidOperationException("You have deleted a view that is not a child of this view.");
+ Tizen.Log.Error("NUI", "You have deleted a view that is not a child of this view.");
+ return;
+ }
+
+ bool hasLayout = (layout != null);
// If View has a layout then do a deferred child removal
// Actual child removal is performed by the layouting system so
// transitions can be completed.
if (hasLayout)
{
- (_layout as LayoutGroup)?.RemoveChildFromLayoutGroup(child);
+ (layout as LayoutGroup)?.RemoveChildFromLayoutGroup(child);
}
RemoveChild(child);
}
/// <summary>
+ /// Retrieves a child view as Animatable by index.
+ /// </summary>
+ /// <param name="index">The index of the Animatable to find.</param>
+ /// <returns>A handle to the view as Animatable if found, or an empty handle if not.</returns>
+ /// This will not be public opened.
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public Animatable GetChildAnimatableAt(uint index)
+ {
+ if (index < Children.Count)
+ {
+ return Children[Convert.ToInt32(index)] as Animatable;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /// <summary>
/// Retrieves the number of children held by the view.
/// </summary>
/// <seealso cref="Container.GetChildCount" />
/// <since_tizen> 4 </since_tizen>
+ [Obsolete("This has been deprecated in API9 and will be removed in API11. Use ChildCount property instead.")]
public override uint GetChildCount()
{
return Convert.ToUInt32(Children.Count);
/// <since_tizen> 4 </since_tizen>
public override Container GetParent()
{
- return this.InternalParent as Container;
+ return InternalParent as Container;
}
/// <summary>
public bool HasFocus()
{
bool ret = false;
- if (swigCPtr.Handle != global::System.IntPtr.Zero)
+ if (SwigCPtr.Handle != global::System.IntPtr.Zero)
{
- ret = Interop.View.View_HasKeyInputFocus(swigCPtr);
+ ret = Interop.View.HasKeyInputFocus(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
else
{
- Tizen.Log.Error("NUI", "swigCPtr of view is aleady disposed.");
+ Tizen.Log.Error("NUI", "swigCPtr of view is already disposed.");
}
return ret;
}
/// </summary>
/// <param name="styleName">A string matching a style described in a stylesheet.</param>
/// <since_tizen> 3 </since_tizen>
+ [Obsolete("This has been deprecated in API9 and will be removed in API11. Use StyleName property instead.")]
public void SetStyleName(string styleName)
{
- Interop.View.View_SetStyleName(swigCPtr, styleName);
+ Interop.View.SetStyleName(SwigCPtr, styleName);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// </summary>
/// <returns>A string matching a style, or an empty string.</returns>
/// <since_tizen> 3 </since_tizen>
+ [Obsolete("This has been deprecated in API9 and will be removed in API11. Use StyleName property instead.")]
public string GetStyleName()
{
- string ret = Interop.View.View_GetStyleName(swigCPtr);
+ string ret = Interop.View.GetStyleName(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
}
/// <since_tizen> 3 </since_tizen>
public void ClearBackground()
{
- Interop.View.View_ClearBackground(swigCPtr);
+ Interop.View.ClearBackground(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
public void Show()
{
SetVisible(true);
+
+ if (GetAccessibilityStates()[AccessibilityState.Modal])
+ {
+ RegisterDefaultLabel();
+
+ if (Accessibility.Accessibility.IsEnabled)
+ {
+ EmitAccessibilityStateChangedEvent(AccessibilityState.Showing, true);
+ }
+ }
}
/// <summary>
public void Hide()
{
SetVisible(false);
+
+ if (GetAccessibilityStates()[AccessibilityState.Modal])
+ {
+ UnregisterDefaultLabel();
+
+ if (Accessibility.Accessibility.IsEnabled)
+ {
+ EmitAccessibilityStateChangedEvent(AccessibilityState.Showing, false);
+ }
+ }
}
/// <summary>
LayoutGroup layout = Layout as LayoutGroup;
layout?.ChangeLayoutSiblingOrder(parentChildren.Count - 1);
- Interop.NDalic.RaiseToTop(swigCPtr);
+ Interop.NDalic.RaiseToTop(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
LayoutGroup layout = Layout as LayoutGroup;
layout?.ChangeLayoutSiblingOrder(0);
- Interop.NDalic.LowerToBottom(swigCPtr);
+ Interop.NDalic.LowerToBottom(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// <since_tizen> 3 </since_tizen>
public bool IsResourceReady()
{
- bool ret = Interop.View.IsResourceReady(swigCPtr);
+ bool ret = Interop.View.IsResourceReady(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
}
public Layer GetLayer()
{
//to fix memory leak issue, match the handle count with native side.
- IntPtr cPtr = Interop.Actor.Actor_GetLayer(swigCPtr);
+ IntPtr cPtr = Interop.Actor.GetLayer(SwigCPtr);
Layer ret = this.GetInstanceSafely<Layer>(cPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
public View FindChildByName(string viewName)
{
//to fix memory leak issue, match the handle count with native side.
- IntPtr cPtr = Interop.Actor.Actor_FindChildByName(swigCPtr, viewName);
+ IntPtr cPtr = Interop.Actor.FindChildByName(SwigCPtr, viewName);
View ret = this.GetInstanceSafely<View>(cPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
}
/// <summary>
+ /// Search through this view's hierarchy for a view as Animatable with the given name.
+ /// The view itself is also considered in the search.
+ /// </summary>
+ /// <pre>The view has been initialized.</pre>
+ /// <param name="childName">The name of the Animatable to find.</param>
+ /// <returns>A handle to the view as Animatable if found, or an empty handle if not.</returns>
+ /// This will not be public opened.
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public Animatable FindChildAnimatableByName(string childName)
+ {
+ //to fix memory leak issue, match the handle count with native side.
+ IntPtr cPtr = Interop.Actor.FindChildByName(SwigCPtr, childName);
+ Animatable ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Animatable;
+ if(ret == null)
+ {
+ // Register new camera into Registry.
+ ret = new Animatable(cPtr, true);
+ }
+ else
+ {
+ // We found matched NUI camera. Reduce cPtr reference count.
+ HandleRef handle = new HandleRef(this, cPtr);
+ Interop.Actor.DeleteActor(handle);
+ handle = new HandleRef(null, IntPtr.Zero);
+ }
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
/// Converts screen coordinates into the view's coordinate system using the default camera.
/// </summary>
/// <pre>The view has been initialized.</pre>
/// <since_tizen> 3 </since_tizen>
public bool ScreenToLocal(out float localX, out float localY, float screenX, float screenY)
{
- bool ret = Interop.Actor.Actor_ScreenToLocal(swigCPtr, out localX, out localY, screenX, screenY);
+ bool ret = Interop.Actor.ScreenToLocal(SwigCPtr, out localX, out localY, screenX, screenY);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
/// <since_tizen> 3 </since_tizen>
public void SetSizeModeFactor(Vector3 factor)
{
- Interop.Actor.Actor_SetSizeModeFactor(swigCPtr, Vector3.getCPtr(factor));
+ Interop.Actor.SetSizeModeFactor(SwigCPtr, Vector3.getCPtr(factor));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// <since_tizen> 3 </since_tizen>
public float GetHeightForWidth(float width)
{
- float ret = Interop.Actor.Actor_GetHeightForWidth(swigCPtr, width);
+ float ret = Interop.Actor.GetHeightForWidth(SwigCPtr, width);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
/// <since_tizen> 3 </since_tizen>
public float GetWidthForHeight(float height)
{
- float ret = Interop.Actor.Actor_GetWidthForHeight(swigCPtr, height);
+ float ret = Interop.Actor.GetWidthForHeight(SwigCPtr, height);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
/// <since_tizen> 3 </since_tizen>
public float GetRelayoutSize(DimensionType dimension)
{
- float ret = Interop.Actor.Actor_GetRelayoutSize(swigCPtr, (int)dimension);
+ float ret = Interop.Actor.GetRelayoutSize(SwigCPtr, (int)dimension);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
/// </summary>
/// <param name="padding">Padding for the view.</param>
/// <since_tizen> 3 </since_tizen>
+ // [Obsolete("This has been deprecated in API9 and will be removed in API11. Use Padding property instead.")]
public void SetPadding(PaddingType padding)
{
- Interop.Actor.Actor_SetPadding(swigCPtr, PaddingType.getCPtr(padding));
+ Interop.Actor.SetPadding(SwigCPtr, PaddingType.getCPtr(padding));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// </summary>
/// <param name="paddingOut">the value of padding for the view</param>
/// <since_tizen> 3 </since_tizen>
+ [Obsolete("This has been deprecated in API9 and will be removed in API11. Use Padding property instead.")]
public void GetPadding(PaddingType paddingOut)
{
- Interop.Actor.Actor_GetPadding(swigCPtr, PaddingType.getCPtr(paddingOut));
+ Interop.Actor.GetPadding(SwigCPtr, PaddingType.getCPtr(paddingOut));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// <since_tizen> 3 </since_tizen>
public uint AddRenderer(Renderer renderer)
{
- uint ret = Interop.Actor.Actor_AddRenderer(swigCPtr, Renderer.getCPtr(renderer));
+ uint ret = Interop.Actor.AddRenderer(SwigCPtr, Renderer.getCPtr(renderer));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
public Renderer GetRendererAt(uint index)
{
//to fix memory leak issue, match the handle count with native side.
- IntPtr cPtr = Interop.Actor.Actor_GetRendererAt(swigCPtr, index);
+ IntPtr cPtr = Interop.Actor.GetRendererAt(SwigCPtr, index);
HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
Renderer ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Renderer;
if (cPtr != null && ret == null)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
}
- Interop.BaseHandle.delete_BaseHandle(CPtr);
+ Interop.BaseHandle.DeleteBaseHandle(CPtr);
CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
if (NDalicPINVOKE.SWIGPendingException.Pending)
/// <since_tizen> 3 </since_tizen>
public void RemoveRenderer(Renderer renderer)
{
- Interop.Actor.Actor_RemoveRenderer__SWIG_0(swigCPtr, Renderer.getCPtr(renderer));
+ Interop.Actor.RemoveRenderer(SwigCPtr, Renderer.getCPtr(renderer));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// <since_tizen> 3 </since_tizen>
public void RemoveRenderer(uint index)
{
- Interop.Actor.Actor_RemoveRenderer__SWIG_1(swigCPtr, index);
+ Interop.Actor.RemoveRenderer(SwigCPtr, index);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void RotateBy(Degree angle, Vector3 axis)
{
- Interop.ActorInternal.Actor_RotateBy__SWIG_0(swigCPtr, Degree.getCPtr(angle), Vector3.getCPtr(axis));
+ Interop.ActorInternal.RotateByDegree(SwigCPtr, Degree.getCPtr(angle), Vector3.getCPtr(axis));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void RotateBy(Radian angle, Vector3 axis)
{
- Interop.ActorInternal.Actor_RotateBy__SWIG_1(swigCPtr, Radian.getCPtr(angle), Vector3.getCPtr(axis));
+ Interop.ActorInternal.RotateByRadian(SwigCPtr, Radian.getCPtr(angle), Vector3.getCPtr(axis));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void RotateBy(Rotation relativeRotation)
{
- Interop.ActorInternal.Actor_RotateBy__SWIG_2(swigCPtr, Rotation.getCPtr(relativeRotation));
+ Interop.ActorInternal.RotateByQuaternion(SwigCPtr, Rotation.getCPtr(relativeRotation));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void ScaleBy(Vector3 relativeScale)
{
- Interop.ActorInternal.Actor_ScaleBy(swigCPtr, Vector3.getCPtr(relativeScale));
+ Interop.ActorInternal.ScaleBy(SwigCPtr, Vector3.getCPtr(relativeScale));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
- /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API.
+ /// <summary>
+ /// Rotate the view look at specific position.
+ /// It will change the view's orientation property.
+ /// </summary>
+ /// <remark>Target position should be setup by world coordinates.</remark>
+ /// <param name="target">The target world position to look at.</param>
+ /// <param name="up">The up vector after target look at. If it is null, up vector become +Y axis</param>
+ /// <param name="localForward">The forward vector of view when it's orientation is not applied. If it is null, localForward vector become +Z axis</param>
+ /// <param name="localUp">The up vector of view when it's orientation is not applied. If it is null, localUp vector become +Y axis</param>
+ /// This will be public opened in tizen_next after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public void SetColorMode(ColorMode colorMode)
+ public void LookAt(Vector3 target, Vector3 up = null, Vector3 localForward = null, Vector3 localUp = null)
{
- Interop.ActorInternal.Actor_SetColorMode(swigCPtr, (int)colorMode);
+ Interop.ActorInternal.LookAt(SwigCPtr, Vector3.getCPtr(target), Vector3.getCPtr(up), Vector3.getCPtr(localForward), Vector3.getCPtr(localUp));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
-
-
- /// This will be public opened in tizen_next after ACR done. Before ACR, need to be hidden as inhouse API.
+ /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public Transition GetTransition(string transitionName)
+ public void SetColorMode(ColorMode colorMode)
{
- Transition trans = null;
- transDictionary.TryGetValue(transitionName, out trans);
- return trans;
+ Interop.ActorInternal.SetColorMode(SwigCPtr, (int)colorMode);
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// This will be public opened in tizen_next after ACR done. Before ACR, need to be hidden as inhouse API.
view.ObjectDump();
}
}
+
+ /// <summary>
+ /// Search through this View's hierarchy for a View with the given unique ID.
+ /// The View itself is also considered in the search.
+ /// </summary>
+ /// <param name="id">The ID of the View to find</param>
+ /// <returns>A View if found or a null if not</returns>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ [Obsolete("This will be removed at API11. Use FindDescendantByID(uint id) instead.")]
+ public View FindChildByID(uint id)
+ {
+ IntPtr cPtr = Interop.Actor.FindChildById(SwigCPtr, id);
+ View ret = this.GetInstanceSafely<View>(cPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
+ /// Search through this View's hierarchy for a View with the given unique ID.
+ /// </summary>
+ /// <param name="id">The ID of the View to find.</param>
+ /// <returns>A handle to the View if found, or an empty handle if not.</returns>
+ /// <since_tizen> 9 </since_tizen>
+ public View FindDescendantByID(uint id)
+ {
+ return FindChildById(id);
+ }
+
+ /// <summary>
+ /// Raise view above the next sibling view.
+ /// </summary>
+ /// <since_tizen> 9 </since_tizen>
+ public void Raise()
+ {
+ var parentChildren = GetParent()?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+
+ // If the view is not already the last item in the list.
+ if (currentIndex >= 0 && currentIndex < parentChildren.Count - 1)
+ {
+ View temp = parentChildren[currentIndex + 1];
+ parentChildren[currentIndex + 1] = this;
+ parentChildren[currentIndex] = temp;
+
+ Interop.NDalic.Raise(SwigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+ }
+
+ /// <summary>
+ /// Lower the view below the previous sibling view.
+ /// </summary>
+ /// <since_tizen> 9 </since_tizen>
+ public void Lower()
+ {
+ var parentChildren = GetParent()?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+
+ // If the view is not already the first item in the list.
+ if (currentIndex > 0 && currentIndex < parentChildren.Count)
+ {
+ View temp = parentChildren[currentIndex - 1];
+ parentChildren[currentIndex - 1] = this;
+ parentChildren[currentIndex] = temp;
+
+ Interop.NDalic.Lower(SwigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+ }
+
+ /// <summary>
+ /// Raises the view to above the target view.
+ /// </summary>
+ /// <remarks>The sibling order of views within the parent will be updated automatically.
+ /// Views on the level above the target view will still be shown above this view.
+ /// Once a raise or lower API is used then that view will have an exclusive sibling order independent of insertion.
+ /// </remarks>
+ /// <param name="target">Will be raised above this view.</param>
+ /// <since_tizen> 9 </since_tizen>
+ public void RaiseAbove(View target)
+ {
+ var parentChildren = GetParent()?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+ int targetIndex = parentChildren.IndexOf(target);
+
+ if (currentIndex < 0 || targetIndex < 0 ||
+ currentIndex >= parentChildren.Count || targetIndex >= parentChildren.Count)
+ {
+ NUILog.Error("index should be bigger than 0 and less than children of layer count");
+ return;
+ }
+ // If the currentIndex is less than the target index and the target has the same parent.
+ if (currentIndex < targetIndex)
+ {
+ parentChildren.Remove(this);
+ parentChildren.Insert(targetIndex, this);
+
+ Interop.NDalic.RaiseAbove(SwigCPtr, View.getCPtr(target));
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+
+ }
+
+ /// <summary>
+ /// Lowers the view to below the target view.
+ /// </summary>
+ /// <remarks>The sibling order of views within the parent will be updated automatically.
+ /// Once a raise or lower API is used then that view will have an exclusive sibling order independent of insertion.
+ /// </remarks>
+ /// <param name="target">Will be lowered below this view.</param>
+ /// <since_tizen> 9 </since_tizen>
+ public void LowerBelow(View target)
+ {
+ var parentChildren = GetParent()?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+ int targetIndex = parentChildren.IndexOf(target);
+ if (currentIndex < 0 || targetIndex < 0 ||
+ currentIndex >= parentChildren.Count || targetIndex >= parentChildren.Count)
+ {
+ NUILog.Error("index should be bigger than 0 and less than children of layer count");
+ return;
+ }
+
+ // If the currentIndex is not already the 0th index and the target has the same parent.
+ if ((currentIndex != 0) && (targetIndex != -1) &&
+ (currentIndex > targetIndex))
+ {
+ parentChildren.Remove(this);
+ parentChildren.Insert(targetIndex, this);
+
+ Interop.NDalic.LowerBelow(SwigCPtr, View.getCPtr(target));
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+
+ }
+
+ /// <summary>
+ /// Sets the position of the View.
+ /// The coordinates are relative to the View's parent.
+ /// The View's z position will be set to 0.0f.
+ /// </summary>
+ /// <param name="x">The new x position</param>
+ /// <param name="y">The new y position</param>
+ /// <remarks>
+ /// This is a hidden API(inhouse API) only for internal purpose.
+ /// </remarks>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public void SetPosition(float x, float y)
+ {
+ Interop.ActorInternal.SetPosition(SwigCPtr, x, y);
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+
+ /// <summary>
+ /// Sets the position of the View.
+ /// The coordinates are relative to the View's parent.
+ /// </summary>
+ /// <param name="x">The new x position</param>
+ /// <param name="y">The new y position</param>
+ /// <param name="z">The new z position</param>
+ /// <remarks>
+ /// This is a hidden API(inhouse API) only for internal purpose.
+ /// </remarks>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public void SetPosition(float x, float y, float z)
+ {
+ Interop.ActorInternal.SetPosition(SwigCPtr, x, y, z);
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+
+ /// <summary>
+ /// Sets the position of the View.
+ /// The coordinates are relative to the View's parent.
+ /// </summary>
+ /// <param name="position">The new position</param>
+ /// <remarks>
+ /// This is a hidden API(inhouse API) only for internal purpose.
+ /// </remarks>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public void SetPosition(Vector3 position)
+ {
+ Interop.ActorInternal.SetPosition(SwigCPtr, Vector3.getCPtr(position));
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+
+ /// <summary>
+ /// Register custom HitTest function for this view.
+ /// </summary>
+ /// <seealso cref="View.HitTest" />
+ /// <remarks>
+ /// This is a hidden API(inhouse API) only for internal purpose.
+ /// </remarks>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ protected void RegisterHitTestCallback()
+ {
+ if (hitTestResultDataCallback == null)
+ {
+ hitTestResultDataCallback = OnHitTestResult;
+ Interop.ActorSignal.HitTestResultConnect(SwigCPtr, hitTestResultDataCallback.ToHandleRef(this));
+ NDalicPINVOKE.ThrowExceptionIfExistsDebug();
+ }
+ }
+
+ /// <summary>
+ /// Unregister custom HitTest function.
+ /// </summary>
+ /// <remarks>
+ /// This is a hidden API(inhouse API) only for internal purpose.
+ /// </remarks>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ protected void UnregisterHitTestCallback()
+ {
+ if (hitTestResultDataCallback != null)
+ {
+ Interop.ActorSignal.HitTestResultDisconnect(SwigCPtr, hitTestResultDataCallback.ToHandleRef(this));
+ NDalicPINVOKE.ThrowExceptionIfExistsDebug();
+ hitTestResultDataCallback = null;
+ }
+ }
+
+ /// <summary>
+ /// Calculate the screen position of the view.<br />
+ /// </summary>
+ /// <remarks>
+ /// This is a hidden API(inhouse API) only for internal purpose.
+ /// </remarks>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public Vector2 CalculateScreenPosition()
+ {
+ Vector2 ret = new Vector2(Interop.Actor.CalculateScreenPosition(SwigCPtr), true);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
+ /// Calculate the screen position and size of the view.<br />
+ /// </summary>
+ /// <remarks>
+ /// The float type Rectangle class is not ready yet.
+ /// Therefore, it transmits data in Vector4 class.
+ /// This type should later be changed to the appropriate data type.
+ /// </remarks>
+ /// <remarks>
+ /// This is a hidden API(inhouse API) only for internal purpose.
+ /// </remarks>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public Vector4 CalculateScreenPositionSize()
+ {
+ Vector4 ret = new Vector4(Interop.Actor.CalculateScreenExtents(SwigCPtr), true);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
}
}