[NUI] Add FindLayerByID(), FindChildByID()
authordongsug.song <dongsug.song@samsung.com>
Fri, 14 May 2021 07:22:32 +0000 (16:22 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Tue, 1 Jun 2021 08:03:31 +0000 (17:03 +0900)
- FindLayerByID() in Window and FindChildByID() in View are added.
- These are all Hidden-APIs.

src/Tizen.NUI/src/public/Common/Layer.cs
src/Tizen.NUI/src/public/Window/Window.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/FindChildByIDTest.cs

index 75d4063..17b946f 100755 (executable)
@@ -256,6 +256,21 @@ namespace Tizen.NUI
             }
         }
 
+        /// <summary>
+        /// Gets the Layer's ID
+        /// Readonly
+        /// </summary>
+        /// <remarks>Hidden-API</remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint ID
+        {
+            get
+            {
+                return GetId();
+            }
+        }
+
+
         /// From the Container base class.
 
         /// <summary>
@@ -689,6 +704,14 @@ namespace Tizen.NUI
             window = win;
         }
 
+        internal uint GetId()
+        {
+            uint ret = Interop.Actor.GetId(SwigCPtr);
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
         /// This will not be public opened.
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
index e643d5a..84e26bc 100755 (executable)
@@ -1553,5 +1553,23 @@ namespace Tizen.NUI
 
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
+
+        /// <summary>
+        /// Search through this Window for a Layer with the given unique ID.
+        /// </summary>
+        /// <param name="id">The ID of the Layer to find.</param>
+        /// <remarks>Hidden-API</remarks>
+        /// <returns>A handle to the Layer if found, or an empty handle if not.</returns>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Layer FindLayerByID(uint id)
+        {
+            Layer defaultLayer = this.GetDefaultLayer();
+            IntPtr cPtr = Interop.Actor.FindChildById(defaultLayer.SwigCPtr, id);
+            Layer ret = this.GetInstanceSafely<Layer>(cPtr);
+
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
     }
 }
index 68a1f6e..d278caf 100644 (file)
@@ -17,6 +17,8 @@ namespace Tizen.NUI.Samples
         private Button button1, button2;
         private Random rand;
         private uint removeTargetID1, removeTargetID2;
+        private Layer layer1, layer2;
+        private uint layer1ID, layer2ID;
 
         public void Activate()
         {
@@ -39,6 +41,16 @@ namespace Tizen.NUI.Samples
             makeParentsAndChildrenToAdd(root);
 
             makeButtons(root);
+
+            layer1 = new Layer();
+            layer1.Name = "layerTest1";
+            win.AddLayer(layer1);
+            layer1ID = layer1.ID;
+
+            layer2 = new Layer();
+            layer2.Name = "layerTest2";
+            win.AddLayer(layer2);
+            layer2ID = layer2.ID;
         }
 
         private void Button_Clicked(object sender, ClickedEventArgs e)
@@ -197,6 +209,80 @@ namespace Tizen.NUI.Samples
                 tlog.Debug(tag, $" child2({childList2[i].Text}) Id={childList2[i].Id}, ID={childList2[i].ID}");
             }
         }
+        
+        bool toggle = false;
+        private void WindowTouchEvent(object sender, Window.TouchEventArgs e)
+        {
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+                tlog.Debug(tag, $"======================");
+                var ret = checkTest() ? "PASS" : "FAIL";
+                tlog.Debug(tag, $"test result={ret}");
+            }
+        }
+
+        private void WindowKeyEvent(object sender, Window.KeyEventArgs e)
+        {
+            if (e.Key.State == Key.StateType.Down)
+            {
+                if (e.Key.KeyPressedName == "Up")
+                {
+                    tlog.Debug(tag, $"======================");
+                    var ret = checkTest() ? "PASS" : "FAIL";
+                    tlog.Debug(tag, $"test result={ret}");
+                }
+            }
+        }
+
+        bool checkTest()
+        {
+            bool ret = true;
+            toggle = !toggle;
+
+            if (toggle)
+            {
+                var gotten = win.FindLayerByID(layer1ID);
+                if (gotten)
+                {
+                    if (layer1ID == gotten.ID)
+                    {
+                        tlog.Debug(tag, $"Test#1: FindLayerByID({gotten.ID}) OK");
+                    }
+                    else
+                    {
+                        tlog.Debug(tag, $"Test#1: FindLayerByID({gotten.ID}) ERROR");
+                        ret = false;
+                    }
+                }
+                else
+                {
+                    tlog.Debug(tag, $"Test#1: FindLayerByID() ERROR, gotten Layer is NULL!");
+                    ret = false;
+                }
+            }
+            else
+            {
+                var gotten = win.FindLayerByID(layer2ID);
+                if (gotten)
+                {
+                    if (layer2ID == gotten.ID)
+                    {
+                        tlog.Debug(tag, $"Test#2: FindLayerByID({gotten.ID}) OK");
+                    }
+                    else
+                    {
+                        tlog.Debug(tag, $"Test#2: FindLayerByID({gotten.ID}) ERROR");
+                        ret = false;
+                    }
+                }
+                else
+                {
+                    tlog.Debug(tag, $"Test#2: FindLayerByID() ERROR, gotten Layer is NULL!");
+                    ret = false;
+                }
+            }
+            return ret;
+        }
 
         public void Deactivate()
         {