Skip to content

Commit

Permalink
[ComponentBased] Add TimeZoneChanged EventHandler (#5537)
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
hjhun authored and JoogabYun committed Sep 11, 2023
1 parent 7148102 commit a2818fa
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ internal enum NativeDisplayStatus {
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
{
Expand All @@ -102,6 +103,7 @@ internal struct FrameLifecycleCallbacks
public FrameLowBatteryCallback OnLowBattery;
public FrameLowMemoryCallback OnLowMemory;
public FrameSuspendedStateCallback OnSuspendedState;
public FrameTimeZoneChangedCallback OnTimeZoneChanged;
}

internal delegate bool ServiceCreateCallback(IntPtr context, IntPtr userData);
Expand All @@ -116,6 +118,7 @@ internal struct FrameLifecycleCallbacks
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
{
Expand All @@ -131,6 +134,7 @@ internal struct ServiceLifecycleCallbacks
public ServiceLowBatteryCallback OnLowBattery;
public ServiceLowMemoryCallback OnLowMemory;
public ServiceSuspendedStateCallback OnSuspendedState;
public ServiceTimeZoneChangedCallback OnTimeZoneChanged;
}

internal delegate IntPtr WidgetCreateCallback(IntPtr context, int width, int height, IntPtr userData);
Expand All @@ -147,6 +151,7 @@ internal struct ServiceLifecycleCallbacks
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
{
Expand All @@ -164,6 +169,7 @@ internal struct WidgetLifecycleCallbacks
public WidgetLowBatteryCallback OnLowBattery;
public WidgetLowMemoryCallback OnLowMemory;
public WidgetSuspendedStateCallback OnSuspendedState;
public WidgetTimeZoneChangedCallback OnTimeZoneChanged;
}

internal delegate IntPtr BaseCreateCallback(IntPtr context, IntPtr userData);
Expand All @@ -176,6 +182,7 @@ internal struct WidgetLifecycleCallbacks
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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,12 @@ public abstract class BaseComponent
/// <since_tizen> 6 </since_tizen>
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.
Expand Down Expand Up @@ -169,6 +175,11 @@ internal void OnSuspendedStateCallback(int state)
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>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,17 @@ protected void OnSuspendedStateCallback(IntPtr context, int state, IntPtr userDa
}
}

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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ internal FrameComponentStateManager(Type ctype, string id, ComponentBasedApplica
_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;
}

Expand Down Expand Up @@ -81,7 +82,7 @@ private void OnStartCallback(IntPtr context, IntPtr appControl, bool restarted,
{
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ internal ServiceComponentStateManager(Type ctype, string id, ComponentBasedAppli
_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;
}

Expand Down Expand Up @@ -64,7 +65,7 @@ private void OnStartCallback(IntPtr context, IntPtr appControl, bool restarted,
{
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ internal WidgetComponentStateManager(Type ctype, string id, ComponentBasedApplic
_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;
}

Expand Down

0 comments on commit a2818fa

Please sign in to comment.