[NUI] Add XamlLoaded event for NUIApplication
authorXianbing Teng <xb.teng@samsung.com>
Tue, 7 Dec 2021 09:07:45 +0000 (17:07 +0800)
committerSeoyeon2Kim <34738918+Seoyeon2Kim@users.noreply.github.com>
Tue, 14 Dec 2021 09:04:07 +0000 (18:04 +0900)
src/Tizen.NUI/src/internal/Xaml/XamlLoader.cs
src/Tizen.NUI/src/public/Application/NUIApplication.cs
src/Tizen.NUI/src/public/EXaml/EXamlExtensions.cs

index 676e2c4..e3b803e 100755 (executable)
@@ -93,6 +93,7 @@ namespace Tizen.NUI.Xaml
                 if (string.IsNullOrEmpty(xaml))
                     throw new XamlParseException(string.Format("Can't get xaml from type {0}", callingType), new XmlLineInfo());
                 Load(view, xaml);
+                NUIApplication.CurrentLoadedXaml = callingType.FullName;
             }
             catch (XamlParseException e)
             {
index 7ea1d71..1caabde 100755 (executable)
@@ -37,6 +37,13 @@ namespace Tizen.NUI
         /// The instance of ResourceManager.
         /// </summary>
         private static System.Resources.ResourceManager resourceManager = null;
+        private static string currentLoadedXaml = null;
+
+        /// <summary>
+        /// Xaml loaded delegate.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public delegate void XamlLoadedHandler(XamlLoadedEventArgs args);
 
         static NUIApplication()
         {
@@ -183,6 +190,12 @@ namespace Tizen.NUI
         public event EventHandler Paused;
 
         /// <summary>
+        /// Xaml loaded event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static event XamlLoadedHandler XamlLoaded;
+
+        /// <summary>
         /// Enumeration for deciding whether a NUI application window is opaque or transparent.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
@@ -229,6 +242,25 @@ namespace Tizen.NUI
         };
 
         /// <summary>
+        /// Current loaded xaml's full name.
+        /// </summary>
+        public static string CurrentLoadedXaml
+        {
+            get
+            {
+                return currentLoadedXaml;
+            }
+            set
+            {
+                if (currentLoadedXaml != value)
+                {
+                    currentLoadedXaml = value;
+                    XamlLoaded?.Invoke(new XamlLoadedEventArgs(){XamlName = value});
+                }
+            }
+        }
+
+        /// <summary>
         /// ResourceManager to handle multilingual.
         /// </summary>
         /// <since_tizen> 4 </since_tizen>
@@ -508,4 +540,13 @@ namespace Tizen.NUI
         internal const string GlesCSharpBinder = NDalicPINVOKE.Lib;
         internal const string VulkanCSharpBinder = "libdali-csharp-binder-vk.so";
     }
+
+    /// <summary>
+    /// Xaml loaded event args.
+    /// </summary>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public class XamlLoadedEventArgs : EventArgs
+    {
+        public string XamlName {get; set;}
+    }
 }
index c933798..c1fb942 100755 (executable)
@@ -136,6 +136,12 @@ namespace Tizen.NUI.EXaml
                 reader.Dispose();
 
                 LoadEXaml.Load(view, xaml, out eXamlData);
+                var filePath = likelyResourcePath.Replace("\\", "/");
+                if (filePath.Contains("/"))
+                {
+                    var xamlName = filePath.Substring(filePath.LastIndexOf("/") + 1, filePath.LastIndexOf(".") - filePath.LastIndexOf("/") - 1);
+                    NUIApplication.CurrentLoadedXaml = xamlName;
+                }
             }
             else
             {