[NUI] Add SystemFontSizeChangedManager class
authorJaehyun Cho <jae_hyun.cho@samsung.com>
Mon, 28 Aug 2023 11:02:39 +0000 (20:02 +0900)
committerEunki Hong <h.pichulia@gmail.com>
Tue, 5 Sep 2023 13:41:07 +0000 (22:41 +0900)
SystemFontSizeChangedManager is a static class which adds user handlers
to the SystemSettings.FontSizeChanged event.

It is similar to SystemFontSizeChanged class but it is a static class
and it also provides Finished event handler invoked last after all
handlers added to the SystemSettings.FontSizeChanged event are invoked.

src/Tizen.NUI/src/internal/Common/SystemFontSizeChangedManager.cs [new file with mode: 0644]
src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs
src/Tizen.NUI/src/public/BaseComponents/TextField.cs
src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs

diff --git a/src/Tizen.NUI/src/internal/Common/SystemFontSizeChangedManager.cs b/src/Tizen.NUI/src/internal/Common/SystemFontSizeChangedManager.cs
new file mode 100644 (file)
index 0000000..52db736
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2023 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+extern alias TizenSystemSettings;
+using TizenSystemSettings.Tizen.System;
+
+using System;
+
+namespace Tizen.NUI
+{
+    /// <summary>
+    /// A static class which adds user handler to the SystemSettings.FontSizeChanged event.
+    /// This class also adds user handler to the last of the SystemSettings.FontSizeChanged event.
+    /// </summary>
+    internal static class SystemFontSizeChangedManager
+    {
+        static SystemFontSizeChangedManager()
+        {
+            SystemSettings.FontSizeChanged += SystemFontSizeChanged;
+        }
+
+        /// <summary>
+        /// The handler invoked last after all handlers added to the SystemSettings.FontSizeChanged event are invoked.
+        /// </summary>
+        public static event EventHandler<FontSizeChangedEventArgs> Finished;
+
+        /// <summary>
+        /// Adds the given handler to the SystemSettings.FontSizeChanged event.
+        /// </summary>
+        /// <param name="handler">A handler to be added to the event</param>
+        public static void Add(EventHandler<FontSizeChangedEventArgs> handler)
+        {
+            proxy.Add(handler);
+        }
+
+        /// <summary>
+        /// Removes the given handler from the SystemSettings.FontSizeChanged event.
+        /// </summary>
+        /// <param name="handler">A handler to be added to the event</param>
+        public static void Remove(EventHandler<FontSizeChangedEventArgs> handler)
+        {
+            proxy.Remove(handler);
+        }
+
+        private static void SystemFontSizeChanged(object sender, FontSizeChangedEventArgs args)
+        {
+            proxy.Invoke(sender, args);
+            Finished?.Invoke(sender, args);
+        }
+
+        private static WeakEvent<EventHandler<FontSizeChangedEventArgs>> proxy = new WeakEvent<EventHandler<FontSizeChangedEventArgs>>();
+    }
+}
\ No newline at end of file
index 0ba45ac..85f6d98 100755 (executable)
@@ -35,7 +35,6 @@ namespace Tizen.NUI.BaseComponents
         static private string defaultStyleName = "Tizen.NUI.BaseComponents.TextEditor";
         static private string defaultFontFamily = "TizenSans";
         private static SystemFontTypeChanged systemFontTypeChanged = new SystemFontTypeChanged();
-        private static SystemFontSizeChanged systemFontSizeChanged = new SystemFontSizeChanged();
         private static SystemLocaleLanguageChanged systemLocaleLanguageChanged = new SystemLocaleLanguageChanged();
         private string textEditorTextSid = null;
         private string textEditorPlaceHolderTextSid = null;
@@ -2615,7 +2614,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 try
                 {
-                    systemFontSizeChanged.Add(SystemSettingsFontSizeChanged);
+                    SystemFontSizeChangedManager.Add(SystemSettingsFontSizeChanged);
                     hasSystemFontSizeChanged = true;
                 }
                 catch (Exception e)
@@ -2632,7 +2631,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 try
                 {
-                    systemFontSizeChanged.Remove(SystemSettingsFontSizeChanged);
+                    SystemFontSizeChangedManager.Remove(SystemSettingsFontSizeChanged);
                     hasSystemFontSizeChanged = false;
                 }
                 catch (Exception e)
index cc4871c..36f50b0 100755 (executable)
@@ -34,7 +34,6 @@ namespace Tizen.NUI.BaseComponents
         static private string defaultStyleName = "Tizen.NUI.BaseComponents.TextField";
         static private string defaultFontFamily = "TizenSans";
         private static SystemFontTypeChanged systemFontTypeChanged = new SystemFontTypeChanged();
-        private static SystemFontSizeChanged systemFontSizeChanged = new SystemFontSizeChanged();
         private static SystemLocaleLanguageChanged systemLocaleLanguageChanged = new SystemLocaleLanguageChanged();
         private string textFieldTextSid = null;
         private string textFieldPlaceHolderTextSid = null;
@@ -2623,7 +2622,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 try
                 {
-                    systemFontSizeChanged.Add(SystemSettingsFontSizeChanged);
+                    SystemFontSizeChangedManager.Add(SystemSettingsFontSizeChanged);
                     hasSystemFontSizeChanged = true;
                 }
                 catch (Exception e)
@@ -2640,7 +2639,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 try
                 {
-                    systemFontSizeChanged.Remove(SystemSettingsFontSizeChanged);
+                    SystemFontSizeChangedManager.Remove(SystemSettingsFontSizeChanged);
                     hasSystemFontSizeChanged = false;
                 }
                 catch (Exception e)
index 59b1b4f..91e3659 100755 (executable)
@@ -85,7 +85,6 @@ namespace Tizen.NUI.BaseComponents
         static TextLabel() { }
 
         private static SystemFontTypeChanged systemFontTypeChanged = new SystemFontTypeChanged();
-        private static SystemFontSizeChanged systemFontSizeChanged = new SystemFontSizeChanged();
         private static SystemLocaleLanguageChanged systemLocaleLanguageChanged = new SystemLocaleLanguageChanged();
         static private string defaultStyleName = "Tizen.NUI.BaseComponents.TextLabel";
         static private string defaultFontFamily = "BreezeSans";
@@ -1640,7 +1639,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 try
                 {
-                    systemFontSizeChanged.Add(SystemSettingsFontSizeChanged);
+                    SystemFontSizeChangedManager.Add(SystemSettingsFontSizeChanged);
                     hasSystemFontSizeChanged = true;
                 }
                 catch (Exception e)
@@ -1657,7 +1656,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 try
                 {
-                    systemFontSizeChanged.Remove(SystemSettingsFontSizeChanged);
+                    SystemFontSizeChangedManager.Remove(SystemSettingsFontSizeChanged);
                     hasSystemFontSizeChanged = false;
                 }
                 catch (Exception e)