2 using System.Collections.Generic;
5 namespace Tizen.Applications.ComponentBased.Common
7 internal class FrameComponentStateManager : ComponentStateManger
9 private Interop.CBApplication.FrameLifecycleCallbacks _callbacks;
10 private const string LogTag = "Tizen.Applications.FrameComponentStateManager";
12 internal FrameComponentStateManager(Type ctype, string id, ComponentBasedApplication parent) : base(ctype, id, parent)
14 _callbacks.OnAction = new Interop.CBApplication.FrameActionCallback(OnActionCallback);
15 _callbacks.OnDeviceOrientationChanged = new Interop.CBApplication.FrameDeviceOrientationChangedCallback(OnDeviceOrientationChangedCallback);
16 _callbacks.OnLanguageChanged = new Interop.CBApplication.FrameLanguageChangedCallback(OnLanguageChangedCallback);
17 _callbacks.OnLowBattery = new Interop.CBApplication.FrameLowBatteryCallback(OnLowBatteryCallback);
18 _callbacks.OnLowMemory = new Interop.CBApplication.FrameLowMemoryCallback(OnLowMemoryCallback);
19 _callbacks.OnRegionFormatChanged = new Interop.CBApplication.FrameRegionFormatChangedCallback(OnRegionFormatChangedCallback);
20 _callbacks.OnRestore = new Interop.CBApplication.FrameRestoreCallback(OnRestoreCallback);
21 _callbacks.OnSave = new Interop.CBApplication.FrameSaveCallback(OnSaveCallback);
22 _callbacks.OnSuspendedState = new Interop.CBApplication.FrameSuspendedStateCallback(OnSuspendedStateCallback);
23 _callbacks.OnCreate = new Interop.CBApplication.FrameCreateCallback(OnCreateCallback);
24 _callbacks.OnDestroy = new Interop.CBApplication.FrameDestroyCallback(OnDestroyCallback);
25 _callbacks.OnPause = new Interop.CBApplication.FramePauseCallback(OnPauseCallback);
26 _callbacks.OnResume = new Interop.CBApplication.FrameResumeCallback(OnResumeCallback);
27 _callbacks.OnStart = new Interop.CBApplication.FrameStartCallback(OnStartCallback);
28 _callbacks.OnStop = new Interop.CBApplication.FrameStopCallback(OnStopCallback);
32 private IntPtr OnCreateCallback(IntPtr context, IntPtr userData)
34 FrameComponent fc = Activator.CreateInstance(ComponentClassType) as FrameComponent;
37 Log.Error(LogTag, "Fail to create instance");
42 Interop.CBApplication.GetInstanceId(context, out id);
43 fc.Bind(context, ComponentId, id, Parent);
46 IWindowInfo win = fc.CreateWindowInfo();
52 Log.Error(LogTag, "OnCreate fail");
55 Interop.CBApplication.BaseFrameCreateWindow(out winHandle, win.ResourceId, IntPtr.Zero);
61 private void OnStartCallback(IntPtr context, IntPtr appControl, bool restarted, IntPtr userData)
63 foreach (FrameComponent fc in Instances)
65 if (fc.Handle == context)
67 SafeAppControlHandle handle = new SafeAppControlHandle(appControl, false);
68 AppControl control = new AppControl(handle);
69 fc.OnStart(control, restarted);
75 private void OnResumeCallback(IntPtr context, IntPtr userData)
77 foreach (FrameComponent fc in Instances)
79 if (fc.Handle == context)
87 private void OnPauseCallback(IntPtr context, IntPtr userData)
89 foreach (FrameComponent fc in Instances)
91 if (fc.Handle == context)
99 private void OnStopCallback(IntPtr context, IntPtr userData)
101 foreach (FrameComponent fc in Instances)
103 if (fc.Handle == context)
111 private void OnDestroyCallback(IntPtr context, IntPtr userData)
113 foreach (FrameComponent fc in Instances)
115 if (fc.Handle == context)
125 private void OnActionCallback(IntPtr context, string action, IntPtr appControl, IntPtr userData)
129 internal override IntPtr Bind(IntPtr h)
131 return Interop.CBApplication.BaseAddFrameComponent(h, ComponentId, ref _callbacks, IntPtr.Zero);