[ComponentBased] Add TimeZoneChanged EventHandler (#5537)
authorhjhun <36876573+hjhun@users.noreply.github.com>
Mon, 11 Sep 2023 04:17:59 +0000 (13:17 +0900)
committerGitHub <noreply@github.com>
Mon, 11 Sep 2023 04:17:59 +0000 (13:17 +0900)
This patch adds the TimeZoneChanged EventHandler. The component-based
application can monitors the time zone changed event using the event handler.

Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/Tizen.Applications.ComponentBased/Interop/Interop.CBApplication.cs
src/Tizen.Applications.ComponentBased/Tizen.Applications.ComponentBased.Common/BaseComponent.cs
src/Tizen.Applications.ComponentBased/Tizen.Applications.ComponentBased.Common/ComponentStateManger.cs
src/Tizen.Applications.ComponentBased/Tizen.Applications.ComponentBased.Common/FrameComponentStateManager.cs
src/Tizen.Applications.ComponentBased/Tizen.Applications.ComponentBased.Common/ServiceComponentStateManager.cs
src/Tizen.Applications.ComponentBased/Tizen.Applications.ComponentBased.Common/WidgetComponentStateManager.cs

index eaad727..4cf77ea 100644 (file)
@@ -84,6 +84,7 @@ internal static partial class Interop
         internal delegate void FrameLowBatteryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void FrameLowMemoryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void FrameSuspendedStateCallback(IntPtr context, int state, IntPtr userData);
+        internal delegate void FrameTimeZoneChangedCallback(IntPtr context, string timeZone, string timeZoneId, IntPtr userData);
 
         internal struct FrameLifecycleCallbacks
         {
@@ -102,6 +103,7 @@ internal static partial class Interop
             public FrameLowBatteryCallback OnLowBattery;
             public FrameLowMemoryCallback OnLowMemory;
             public FrameSuspendedStateCallback OnSuspendedState;
+            public FrameTimeZoneChangedCallback OnTimeZoneChanged;
         }
 
         internal delegate bool ServiceCreateCallback(IntPtr context, IntPtr userData);
@@ -116,6 +118,7 @@ internal static partial class Interop
         internal delegate void ServiceLowBatteryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void ServiceLowMemoryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void ServiceSuspendedStateCallback(IntPtr context, int state, IntPtr userData);
+        internal delegate void ServiceTimeZoneChangedCallback(IntPtr context, string timeZone, string timeZoneId, IntPtr userData);
 
         internal struct ServiceLifecycleCallbacks
         {
@@ -131,6 +134,7 @@ internal static partial class Interop
             public ServiceLowBatteryCallback OnLowBattery;
             public ServiceLowMemoryCallback OnLowMemory;
             public ServiceSuspendedStateCallback OnSuspendedState;
+            public ServiceTimeZoneChangedCallback OnTimeZoneChanged;
         }
 
         internal delegate IntPtr WidgetCreateCallback(IntPtr context, int width, int height, IntPtr userData);
@@ -147,6 +151,7 @@ internal static partial class Interop
         internal delegate void WidgetLowBatteryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void WidgetLowMemoryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void WidgetSuspendedStateCallback(IntPtr context, int state, IntPtr userData);
+        internal delegate void WidgetTimeZoneChangedCallback(IntPtr context, string timeZone, string timeZoneId, IntPtr userData);
 
         internal struct WidgetLifecycleCallbacks
         {
@@ -164,6 +169,7 @@ internal static partial class Interop
             public WidgetLowBatteryCallback OnLowBattery;
             public WidgetLowMemoryCallback OnLowMemory;
             public WidgetSuspendedStateCallback OnSuspendedState;
+            public WidgetTimeZoneChangedCallback OnTimeZoneChanged;
         }
 
         internal delegate IntPtr BaseCreateCallback(IntPtr context, IntPtr userData);
@@ -176,6 +182,7 @@ internal static partial class Interop
         internal delegate void BaseLowBatteryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void BaseLowMemoryCallback(IntPtr context, int status, IntPtr userData);
         internal delegate void BaseSuspendedStateCallback(IntPtr context, int state, IntPtr userData);
+        internal delegate void BaseTimeZoneChangedCallback(IntPtr context, string timeZone, string timeZoneId, IntPtr userData);
 
         [DllImport(Libraries.CompCoreBase, EntryPoint = "component_based_app_base_main")]
         internal static extern ErrorCode BaseMain(int argc, string[] argv, ref CBAppLifecycleCallbacks callback, IntPtr userData);
index 8724be0..1940a3f 100755 (executable)
@@ -69,6 +69,12 @@ namespace Tizen.Applications.ComponentBased.Common
         public event EventHandler<SuspendedStateEventArgs> SuspendedStateChanged;
 
         /// <summary>
+        /// Occurs when the time zone is changed.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public event EventHandler<TimeZoneChangedEventArgs> TimeZoneChanged;
+
+        /// <summary>
         /// A component instance ID.
         /// It will be created after OnCreate method is invoked.
         /// </summary>
@@ -169,6 +175,11 @@ namespace Tizen.Applications.ComponentBased.Common
             SuspendedStateChanged?.Invoke(this, new SuspendedStateEventArgs((SuspendedState)state));
         }
 
+        internal void OnTimeZoneChangedCallback(string timeZone, string timeZoneId)
+        {
+            TimeZoneChanged?.Invoke(this, new TimeZoneChangedEventArgs(timeZone, timeZoneId));
+        }
+
         /// <summary>
         /// Sends the launch request asynchronously.
         /// </summary>
index 936f23b..1653329 100644 (file)
@@ -114,6 +114,17 @@ namespace Tizen.Applications.ComponentBased.Common
             }
         }
 
+        protected void OnTimeZoneChangedCallback(IntPtr context, string timeZone, string timeZoneId, IntPtr userData)
+        {
+            foreach (BaseComponent com in ComponentInstances)
+            {
+                if (com.Handle == context)
+                {
+                    com.OnTimeZoneChangedCallback(timeZone, timeZoneId);
+                }
+            }
+        }
+
         protected void OnRestoreCallback(IntPtr context, IntPtr content, IntPtr userData)
         {
             foreach (BaseComponent com in ComponentInstances)
index b4c5de1..b332839 100644 (file)
@@ -42,6 +42,7 @@ namespace Tizen.Applications.ComponentBased.Common
             _callbacks.OnResume = new Interop.CBApplication.FrameResumeCallback(OnResumeCallback);
             _callbacks.OnStart = new Interop.CBApplication.FrameStartCallback(OnStartCallback);
             _callbacks.OnStop = new Interop.CBApplication.FrameStopCallback(OnStopCallback);
+            _callbacks.OnTimeZoneChanged = new Interop.CBApplication.FrameTimeZoneChangedCallback(OnTimeZoneChangedCallback);
             Parent = parent;
         }
 
@@ -81,7 +82,7 @@ namespace Tizen.Applications.ComponentBased.Common
             {
                 if (fc.Handle == context)
                 {
-                    SafeAppControlHandle handle = new SafeAppControlHandle(appControl, false);
+                    using SafeAppControlHandle handle = new SafeAppControlHandle(appControl, false);
                     AppControl control = new AppControl(handle);
                     fc.OnStart(control, restarted);
                     break;
index fc918a1..690fa7f 100644 (file)
@@ -36,6 +36,7 @@ namespace Tizen.Applications.ComponentBased.Common
             _callbacks.OnCreate = new Interop.CBApplication.ServiceCreateCallback(OnCreateCallback);
             _callbacks.OnDestroy = new Interop.CBApplication.ServiceDestroyCallback(OnDestroyCallback);
             _callbacks.OnStart = new Interop.CBApplication.ServiceStartCommandCallback(OnStartCallback);
+            _callbacks.OnTimeZoneChanged = new Interop.CBApplication.ServiceTimeZoneChangedCallback(OnTimeZoneChangedCallback);
             Parent = parent;
         }
 
@@ -64,7 +65,7 @@ namespace Tizen.Applications.ComponentBased.Common
             {
                 if (sc.Handle == context)
                 {
-                    SafeAppControlHandle handle = new SafeAppControlHandle(appControl, false);
+                    using SafeAppControlHandle handle = new SafeAppControlHandle(appControl, false);
                     AppControl control = new AppControl(handle);
                     sc.OnStartCommand(control, restarted);
                     break;
index 8e6512c..c0f4026 100644 (file)
@@ -41,6 +41,7 @@ namespace Tizen.Applications.ComponentBased.Common
             _callbacks.OnResume = new Interop.CBApplication.WidgetResumeCallback(OnResumeCallback);
             _callbacks.OnStart = new Interop.CBApplication.WidgetStartCallback(OnStartCallback);
             _callbacks.OnStop = new Interop.CBApplication.WidgetStopCallback(OnStopCallback);
+            _callbacks.OnTimeZoneChanged = new Interop.CBApplication.WidgetTimeZoneChangedCallback(OnTimeZoneChangedCallback);
             Parent = parent;
         }