{
private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+
internal View(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.View_SWIGUpcast(cPtr), cMemoryOwn)
{
swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
/// <summary>
/// Adds a child view to this view.
/// </summary>
- /// <seealso cref="Container.Add">
- /// </seealso>
+ /// <seealso cref="Container.Add" />
/// <since_tizen> 4 </since_tizen>
public override void Add(View child)
{
NDalicPINVOKE.Actor_Add(swigCPtr, View.getCPtr(child));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+ Children.Add(child);
}
/// <summary>
/// Removes a child view from this View. If the view was not a child of this view, this is a no-op.
/// </summary>
- /// <seealso cref="Container.Remove">
- /// </seealso>
+ /// <seealso cref="Container.Remove" />
/// <since_tizen> 4 </since_tizen>
public override void Remove(View child)
{
NDalicPINVOKE.Actor_Remove(swigCPtr, View.getCPtr(child));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+ Children.Remove(child);
}
/// <summary>
/// Retrieves a child view by index.
/// </summary>
- /// <seealso cref="Container.GetChildAt">
- /// </seealso>
+ /// <seealso cref="Container.GetChildAt" />
/// <since_tizen> 4 </since_tizen>
public override View GetChildAt(uint index)
{
- IntPtr cPtr = NDalicPINVOKE.Actor_GetChildAt(swigCPtr, index);
-
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
-
- if (NDalicPINVOKE.SWIGPendingException.Pending)
- throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- return ret ?? null;
+ if (index < Children.Count)
+ {
+ return Children[Convert.ToInt32(index)];
+ }
+ else
+ {
+ return null;
+ }
}
/// <summary>
/// Retrieves the number of children held by the view.
/// </summary>
- /// <seealso cref="Container.GetChildCount">
- /// </seealso>
- protected override uint GetChildCount()
+ /// <seealso cref="Container.GetChildCount" />
+ public override uint GetChildCount()
{
- uint ret = NDalicPINVOKE.Actor_GetChildCount(swigCPtr);
- if (NDalicPINVOKE.SWIGPendingException.Pending)
- throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- return ret;
+ return Convert.ToUInt32(Children.Count);
}
/// <summary>
/// Gets the views parent.
/// </summary>
/// <seealso cref="Container.GetParent()" />
- protected override Container GetParent()
+ public override Container GetParent()
{
- Container ret;
IntPtr cPtr = NDalicPINVOKE.Actor_GetParent(swigCPtr);
BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(cPtr);
- if(basehandle is Layer)
- {
- ret = basehandle as Layer;
- }
- else
- {
- ret = basehandle as View;
- }
-
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- return ret;
- }
- /// <summary>
- /// This is temporal API. Currently Parent returns View but Container class has been introduced so 'View Parent' will be changed 'Container Parent' later soon, then this will be removed
- /// </summary>
- /// <since_tizen> 3 </since_tizen>
- [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
- public Container GetContainerParent()
- {
- return this.GetParent();
+ return basehandle as Container;
}
internal bool IsTopLevelView()
{
- if(GetContainerParent() is Layer)
+ if(GetParent() is Layer)
{
return true;
}
}
base.Dispose(type);
+
+ // Dispose all Children of this View.
+ foreach (View childView in Children)
+ {
+ childView?.Dispose();
+ }
+ Children.Clear();
}
private void DisConnectFromSignals()
internal static readonly int CLIPPING_MODE = NDalicPINVOKE.Actor_Property_CLIPPING_MODE_get();
internal static readonly int INHERIT_LAYOUT_DIRECTION = NDalicManualPINVOKE.Actor_Property_INHERIT_LAYOUT_DIRECTION_get();
internal static readonly int LAYOUT_DIRECTION = NDalicManualPINVOKE.Actor_Property_LAYOUT_DIRECTION_get();
+ internal static readonly int MARGIN = NDalicPINVOKE.View_Property_MARGIN_get();
+ internal static readonly int PADDINGEX = NDalicPINVOKE.View_Property_PADDING_get();
}
/// <summary>
}
set
{
- LeftFocusableViewId = (int)value.GetId();
+ if(value)
+ {
+ LeftFocusableViewId = (int)value.GetId();
+ }
+ else
+ {
+ LeftFocusableViewId = -1;
+ }
}
}
}
set
{
- RightFocusableViewId = (int)value.GetId();
+ if(value)
+ {
+ RightFocusableViewId = (int)value.GetId();
+ }
+ else
+ {
+ RightFocusableViewId = -1;
+ }
}
}
}
set
{
- UpFocusableViewId = (int)value.GetId();
+ if(value)
+ {
+ UpFocusableViewId = (int)value.GetId();
+ }
+ else
+ {
+ UpFocusableViewId = -1;
+ }
}
}
}
set
{
- DownFocusableViewId = (int)value.GetId();
+ if(value)
+ {
+ DownFocusableViewId = (int)value.GetId();
+ }
+ else
+ {
+ DownFocusableViewId = -1;
+ }
}
}
internal void Raise()
{
+ var parentChildren = Parent?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+
+ // If the view is not already the last item in the list.
+ if (currentIndex != parentChildren.Count -1)
+ {
+ View temp = parentChildren[currentIndex + 1];
+ parentChildren[currentIndex + 1] = this;
+ parentChildren[currentIndex] = temp;
+ }
+ }
+
NDalicPINVOKE.Raise(swigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
internal void Lower()
{
+ var parentChildren = Parent?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+
+ // If the view is not already the first item in the list.
+ if (currentIndex > 0)
+ {
+ View temp = parentChildren[currentIndex - 1];
+ parentChildren[currentIndex - 1] = this;
+ parentChildren[currentIndex] = temp;
+ }
+ }
+
NDalicPINVOKE.Lower(swigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
/// <since_tizen> 3 </since_tizen>
public void RaiseToTop()
{
+ var parentChildren = Parent?.Children;
+
+ if (parentChildren != null)
+ {
+ parentChildren.Remove(this);
+ parentChildren.Add(this);
+ }
+
NDalicPINVOKE.RaiseToTop(swigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
/// <since_tizen> 3 </since_tizen>
public void LowerToBottom()
{
+ var parentChildren = Parent?.Children;
+
+ if (parentChildren != null)
+ {
+ parentChildren.Remove(this);
+ parentChildren.Insert(0, this);
+ }
+
NDalicPINVOKE.LowerToBottom(swigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
/// <param name="target">Will be raised above this view.</param>
internal void RaiseAbove(View target)
{
+ var parentChildren = Parent?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+ int targetIndex = parentChildren.IndexOf(target);
+
+ // 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);
+ }
+ }
+
NDalicPINVOKE.RaiseAbove(swigCPtr, View.getCPtr(target));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
/// <param name="target">Will be lowered below this view.</param>
internal void LowerBelow(View target)
{
- NDalicPINVOKE.RaiseAbove(swigCPtr, View.getCPtr(target));
+ var parentChildren = Parent?.Children;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+ int targetIndex = parentChildren.IndexOf(target);
+
+ // 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);
+ }
+ }
+
+ NDalicPINVOKE.LowerBelow(swigCPtr, View.getCPtr(target));
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// <since_tizen> 4 </since_tizen>
public void Unparent()
{
- NDalicPINVOKE.Actor_Unparent(swigCPtr);
- if (NDalicPINVOKE.SWIGPendingException.Pending)
- throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ GetParent()?.Remove(this);
}
/// <summary>
return ClippingModeType.Disabled;
case "CLIP_CHILDREN":
return ClippingModeType.ClipChildren;
+ case "CLIP_TO_BOUNDING_BOX":
+ return ClippingModeType.ClipToBoundingBox;
default:
return ClippingModeType.Disabled;
}
SetProperty(View.Property.LAYOUT_DIRECTION, new Tizen.NUI.PropertyValue((int)value));
}
}
+
+ /// <summary>
+ /// Gets or sets the Margin for use in layout.
+ /// </summary>
+ public Extents Margin
+ {
+ get
+ {
+ Extents temp = new Extents(0, 0, 0, 0);
+ GetProperty(View.Property.MARGIN).Get(temp);
+ return temp;
+ }
+ set
+ {
+ SetProperty(View.Property.MARGIN, new Tizen.NUI.PropertyValue(value));
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the Padding for use in layout.
+ /// </summary>
+ public Extents PaddingEX
+ {
+ get
+ {
+ Extents temp = new Extents(0, 0, 0, 0);
+ GetProperty(View.Property.PADDINGEX).Get(temp);
+ return temp;
+ }
+ set
+ {
+ SetProperty(View.Property.PADDINGEX, new Tizen.NUI.PropertyValue(value));
+ }
+ }
}
/// <summary>
/// </summary>
RTL
}
-}
\ No newline at end of file
+}