[NUI] Refactoring Transition and FadeTransition
authorseungho <sbsh.baek@samsung.com>
Tue, 17 Aug 2021 06:15:00 +0000 (15:15 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Wed, 1 Sep 2021 08:20:01 +0000 (17:20 +0900)
 - Change Fade to FadeTransition.
 - Remove Default AppearingTransition/DisappearingTransition of Page

Signed-off-by: seungho <sbsh.baek@samsung.com>
src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs
src/Tizen.NUI.Components/Controls/Navigation/Page.cs
src/Tizen.NUI/src/internal/Interop/Interop.FadeTransitionItem.cs [moved from src/Tizen.NUI/src/internal/Interop/Interop.FadeItem.cs with 83% similarity, mode: 0644]
src/Tizen.NUI/src/internal/Transition/FadeTransitionItem.cs [moved from src/Tizen.NUI/src/internal/Transition/FadeItem.cs with 66% similarity, mode: 0644]
src/Tizen.NUI/src/public/Transition/FadeTransition.cs [moved from src/Tizen.NUI/src/public/Transition/Fade.cs with 81% similarity]
src/Tizen.NUI/src/public/Transition/Transition.cs
src/Tizen.NUI/src/public/Transition/TransitionBase.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/PageTransitionSample.cs

index 755313c..2584d70 100755 (executable)
@@ -181,7 +181,7 @@ namespace Tizen.NUI.Components
             page.InvokeAppearing();
             topPage.InvokeDisappearing();
 
-            transitionSet = CreateTransition(topPage, page, true);
+            transitionSet = CreateTransitions(topPage, page, true);
             transitionSet.Finished += (object sender, EventArgs e) =>
             {
                 if (page is DialogPage == false)
@@ -228,13 +228,11 @@ namespace Tizen.NUI.Components
             }
             var newTopPage = navigationPages[navigationPages.Count - 2];
 
-//            newTopPage.RaiseAbove(topPage);
-
             //Invoke Page events
             newTopPage.InvokeAppearing();
             topPage.InvokeDisappearing();
 
-            transitionSet = CreateTransition(topPage, newTopPage, false);
+            transitionSet = CreateTransitions(topPage, newTopPage, false);
             transitionSet.Finished += (object sender, EventArgs e) =>
             {
                 Remove(topPage);
@@ -645,12 +643,12 @@ namespace Tizen.NUI.Components
         }
 
         /// <summary>
-        /// Create Transition between currentTopPage and newTopPage
+        /// Create Transitions between currentTopPage and newTopPage
         /// </summary>
         /// <param name="currentTopPage">The top page of Navigator.</param>
         /// <param name="newTopPage">The new top page after transition.</param>
         /// <param name="pushTransition">True if this transition is for push new page</param>
-        private TransitionSet CreateTransition(Page currentTopPage, Page newTopPage, bool pushTransition)
+        private TransitionSet CreateTransitions(Page currentTopPage, Page newTopPage, bool pushTransition)
         {
             currentTopPage.SetVisible(true);
             newTopPage.SetVisible(true);
@@ -703,21 +701,27 @@ namespace Tizen.NUI.Components
                 currentTopPage.Opacity = 1.0f;
             };
 
-            // default appearing/disappearing transition - fast fade (half duration compaired with that of view pair transition)
-            int duration = (transition.TimePeriod.DurationMilliseconds + transition.TimePeriod.DelayMilliseconds);
-            float durationSeconds = (float)duration / 1000.0f;
-
             if (!pushTransition || newTopPage is DialogPage == false)
             {
-                TransitionItemBase disappearingTransition = currentTopPage.DisappearingTransition.CreateTransition(currentTopPage, false);
-                newTransitionSet.AddTransition(disappearingTransition);
-                disappearingTransition.TransitionWithChild = true;
+                if (currentTopPage.DisappearingTransition != null)
+                {
+                    TransitionItemBase disappearingTransition = currentTopPage.DisappearingTransition.CreateTransition(currentTopPage, false);
+                    disappearingTransition.TransitionWithChild = true;
+                    newTransitionSet.AddTransition(disappearingTransition);
+                }
+                else
+                {
+                    currentTopPage.SetVisible(false);
+                }
             }
             if (pushTransition || currentTopPage is DialogPage == false)
             {
-                TransitionItemBase appearingTransition = newTopPage.AppearingTransition.CreateTransition(newTopPage, true);
-                appearingTransition.TransitionWithChild = true;
-                newTransitionSet.AddTransition(appearingTransition);
+                if (newTopPage.AppearingTransition != null)
+                {
+                    TransitionItemBase appearingTransition = newTopPage.AppearingTransition.CreateTransition(newTopPage, true);
+                    appearingTransition.TransitionWithChild = true;
+                    newTransitionSet.AddTransition(appearingTransition);
+                }
             }
 
             newTransitionSet.Play();
index 9ee9440..480d3c4 100755 (executable)
@@ -57,22 +57,12 @@ namespace Tizen.NUI.Components
     /// <since_tizen> 9 </since_tizen>
     public abstract class Page : Control
     {
-        private const int DefaultTransitionDuration = 500;
-
         private Navigator navigator = null;
 
         // Default transition is Fade.
-        private TransitionBase appearingTransition = new Fade()
-        {
-            TimePeriod = new TimePeriod(DefaultTransitionDuration),
-            AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
-        };
+        private TransitionBase appearingTransition = null;
 
-        private TransitionBase disappearingTransition = new Fade()
-        {
-            TimePeriod = new TimePeriod(DefaultTransitionDuration),
-            AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
-        };
+        private TransitionBase disappearingTransition = null;
 
         /// <summary>
         /// Creates a new instance of a Page.
old mode 100755 (executable)
new mode 100644 (file)
similarity index 83%
rename from src/Tizen.NUI/src/internal/Interop/Interop.FadeItem.cs
rename to src/Tizen.NUI/src/internal/Interop/Interop.FadeTransitionItem.cs
index 02856c6..d2f3917
@@ -22,21 +22,21 @@ namespace Tizen.NUI
 
     internal static partial class Interop
     {
-        internal static partial class FadeItem
+        internal static partial class FadeTransitionItem
         {
-            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_Fade")]
+            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_FadeTransition")]
             public static extern IntPtr NewEmpty();
 
-            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Fade_New")]
+            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_FadeTransition_New")]
             public static extern IntPtr New(HandleRef view, float opacity, HandleRef timePeriod);
 
-            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_delete_Fade")]
+            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_delete_FadeTransition")]
             public static extern void Delete(HandleRef fade);
 
-            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_Fade_Set")]
-            public static extern IntPtr NewFadeItem(HandleRef fade);
+            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_FadeTransition_Set")]
+            public static extern IntPtr NewFadeTransitionItem(HandleRef fade);
 
-            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Fade_Assign")]
+            [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_FadeTransition_Assign")]
             public static extern IntPtr Assign(HandleRef destination, HandleRef source);
         }
     }
old mode 100755 (executable)
new mode 100644 (file)
similarity index 66%
rename from src/Tizen.NUI/src/internal/Transition/FadeItem.cs
rename to src/Tizen.NUI/src/internal/Transition/FadeTransitionItem.cs
index 2ce9ed4..275d2a6
@@ -23,39 +23,39 @@ namespace Tizen.NUI
     using Tizen.NUI.BaseComponents;
 
     /// <summary>
-    /// FadeItem is an object to set Fade transition of a View that will appear or disappear.
-    /// FadeItem object is required to be added to the TransitionSet to play.
+    /// FadeTransitionItem is an object to set Fade transition of a View that will appear or disappear.
+    /// FadeTransitionItem object is required to be added to the TransitionSet to play.
     /// </summary>
-    internal class FadeItem : TransitionItemBase
+    internal class FadeTransitionItem : TransitionItemBase
     {
         /// <summary>
         /// Creates an initialized fade.<br />
         /// </summary>
         /// <remarks>DurationmSeconds must be greater than zero.</remarks>
-        public FadeItem(View view, float opacity, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.FadeItem.New(view.SwigCPtr, opacity, timePeriod.SwigCPtr), true)
+        public FadeTransitionItem(View view, float opacity, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.FadeTransitionItem.New(view.SwigCPtr, opacity, timePeriod.SwigCPtr), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             AppearingTransition = isAppearing;
             AlphaFunction = alphaFunction;
         }
 
-        internal FadeItem(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
+        internal FadeTransitionItem(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
         {
         }
 
-        internal static global::System.Runtime.InteropServices.HandleRef getCPtr(FadeItem obj)
+        internal static global::System.Runtime.InteropServices.HandleRef getCPtr(FadeTransitionItem obj)
         {
             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.SwigCPtr;
         }
 
-        internal FadeItem(FadeItem handle) : this(Interop.FadeItem.NewFadeItem(FadeItem.getCPtr(handle)), true)
+        internal FadeTransitionItem(FadeTransitionItem handle) : this(Interop.FadeTransitionItem.NewFadeTransitionItem(FadeTransitionItem.getCPtr(handle)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
-        internal FadeItem Assign(FadeItem rhs)
+        internal FadeTransitionItem Assign(FadeTransitionItem rhs)
         {
-            FadeItem ret = new FadeItem(Interop.FadeItem.Assign(SwigCPtr, FadeItem.getCPtr(rhs)), false);
+            FadeTransitionItem ret = new FadeTransitionItem(Interop.FadeTransitionItem.Assign(SwigCPtr, FadeTransitionItem.getCPtr(rhs)), false);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -78,10 +78,10 @@ namespace Tizen.NUI
         {
             if (swigCPtr.Handle == IntPtr.Zero || this.HasBody() == false)
             {
-                Tizen.Log.Fatal("NUI", $"[ERROR] FadeItem ReleaseSwigCPtr()! IntPtr=0x{swigCPtr.Handle:X} HasBody={this.HasBody()}");
+                Tizen.Log.Fatal("NUI", $"[ERROR] FadeTransitionItem ReleaseSwigCPtr()! IntPtr=0x{swigCPtr.Handle:X} HasBody={this.HasBody()}");
                 return;
             }
-            Interop.FadeItem.Delete(swigCPtr);
+            Interop.FadeTransitionItem.Delete(swigCPtr);
         }
     }
 }
@@ -22,18 +22,18 @@ namespace Tizen.NUI
     using Tizen.NUI.BaseComponents;
 
     /// <summary>
-    /// Fade class is a cluster of properties for the fade transition of a View.
+    /// FadeTransition class is a cluster of properties for the fade transition of a View.
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
-    public class Fade : TransitionBase
+    public class FadeTransition : TransitionBase
     {
         private float opacity = 0.0f;
 
         /// <summary>
-        /// Create a Fade for the View pair.
+        /// Create a FadeTransition for the View pair.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public Fade()
+        public FadeTransition()
         {
         }
 
@@ -41,6 +41,7 @@ namespace Tizen.NUI
         /// Set Opacity for this fade transition.
         /// If this transition is for appearing, the opacity of target View is animated from this property.
         /// If this transition is for disappearing, the opacity of target View is animated to this property.
+        /// Default Opacity is 0.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
         public float Opacity
@@ -57,7 +58,7 @@ namespace Tizen.NUI
 
         internal override TransitionItemBase CreateTransition(View view, bool isAppearing)
         {
-            FadeItem fade = new FadeItem(view, Opacity, isAppearing, TimePeriod, AlphaFunction);
+            FadeTransitionItem fade = new FadeTransitionItem(view, Opacity, isAppearing, GetTimePeriod(), GetAlphaFunction());
             return fade;
         }
     }
index 9cea5de..8d2f806 100644 (file)
@@ -37,8 +37,7 @@ namespace Tizen.NUI
 
         internal TransitionItem CreateTransition(View source, View destination)
         {
-            TransitionItem transition= new TransitionItem(source, destination, TimePeriod, AlphaFunction);
-            return transition;
+            return new TransitionItem(source, destination, GetTimePeriod(), GetAlphaFunction());
         }
     }
 }
index e5f41d4..ca7a690 100644 (file)
@@ -25,12 +25,14 @@ namespace Tizen.NUI
     /// TransitionBase class is a base class for all Transition.
     /// Each Transition child classes inherits this base class.
     /// </summary>
+    /// <remarks>
+    /// Transition changes propreties of View like Position, Scale, Orientation, and Opacity during transition.
+    /// </remarks>
     /// <since_tizen> 9 </since_tizen>
     public class TransitionBase : Disposable
     {
-        private static readonly int DefaultDuration = 500;
-        private AlphaFunction alphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default);
-        private TimePeriod timePeriod = new TimePeriod(DefaultDuration);
+        private AlphaFunction alphaFunction = null;
+        private TimePeriod timePeriod = null;
 
         /// <summary>
         /// Create a TransitionBase
@@ -72,9 +74,19 @@ namespace Tizen.NUI
             }
         }
 
+        internal TimePeriod GetTimePeriod()
+        {
+            return timePeriod ??= new TimePeriod(0);
+        }
+
+        internal AlphaFunction GetAlphaFunction()
+        {
+            return alphaFunction ??= new AlphaFunction(AlphaFunction.BuiltinFunctions.Default);
+        }
+
         internal virtual TransitionItemBase CreateTransition(View view, bool isAppearing)
         {
-            return new TransitionItemBase(view, isAppearing, timePeriod, alphaFunction);
+            return new TransitionItemBase(view, isAppearing, GetTimePeriod(), GetAlphaFunction());
         }
 
         [EditorBrowsable(EditorBrowsableState.Never)]
index 42f9115..3807c7a 100755 (executable)
@@ -85,6 +85,16 @@ namespace Tizen.NUI.Samples
             mainPage = new ContentPage()
             {
                 Content = mainRoot,
+                AppearingTransition = new FadeTransition()
+                {
+                    TimePeriod = new TimePeriod(500),
+                    AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+                },
+                DisappearingTransition = new FadeTransition()
+                {
+                    TimePeriod = new TimePeriod(500),
+                    AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+                },
             };
             navigator.Push(mainPage);
 
@@ -180,6 +190,16 @@ namespace Tizen.NUI.Samples
             totalPage = new ContentPage()
             {
                 Content = totalPageRoot,
+                AppearingTransition = new FadeTransition()
+                {
+                    TimePeriod = new TimePeriod(500),
+                    AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+                },
+                DisappearingTransition = new FadeTransition()
+                {
+                    TimePeriod = new TimePeriod(500),
+                    AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+                },
             };
         }
 
@@ -307,6 +327,16 @@ namespace Tizen.NUI.Samples
             Page page = new ContentPage()
             {
                 Content = pageRoot,
+                AppearingTransition = new FadeTransition()
+                {
+                    TimePeriod = new TimePeriod(500),
+                    AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+                },
+                DisappearingTransition = new FadeTransition()
+                {
+                    TimePeriod = new TimePeriod(500),
+                    AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+                },
             };
             return page;
         }