From 38a2cbf6029d1857e9a842e3b3462c09ef30e311 Mon Sep 17 00:00:00 2001 From: WonYoung Choi Date: Wed, 9 Mar 2016 15:22:34 +0900 Subject: [PATCH] Refactor Tizen.Applications Change-Id: Id05845647c03ee7041f6a095a2df62cc6019c822 --- AppFW.sln | 2 +- Tizen.Application/Tizen.Application/Actor.cs | 102 -------- Tizen.Application/Tizen.Application/Application.cs | 178 -------------- .../Tizen.Application/ApplicationContext.cs | 83 ------- Tizen.Application/Tizen.Application/Page.cs | 12 - Tizen.Application/Tizen.Application/Service.cs | 27 --- .../Tizen.Application/ServiceManager.cs | 87 ------- .../Interop/Interop.AppControl.cs | 0 .../Interop/Interop.Application.cs | 0 .../Interop/Interop.Aul.cs | 0 .../Interop/Interop.Glib.cs | 0 .../Interop/Interop.Libraries.cs | 0 .../Interop/Interop.Window.cs | 0 .../Properties/AssemblyInfo.cs | 4 +- .../Tizen.Applications.csproj | 31 ++- .../Tizen.Applications.csproj.user | 0 .../Tizen.Applications.snk | Bin Tizen.Applications/Tizen.Applications/Actor.cs | 43 ++++ .../Tizen.Applications}/AppControl.cs | 6 +- .../Tizen.Applications}/AppControlFilter.cs | 2 +- .../Tizen.Applications/Application.cs | 270 +++++++++++++++++++++ .../Tizen.Applications}/CodeExample.cs | 18 +- Tizen.Applications/Tizen.Applications/Context.cs | 70 ++++++ .../Tizen.Applications/ContextGroup.cs | 65 +++++ Tizen.Applications/Tizen.Applications/Service.cs | 17 ++ .../TizenSynchronizationContext.cs | 2 +- .../Tizen.Applications}/Window.cs | 36 ++- packaging/csapi-application.spec | 12 +- 28 files changed, 528 insertions(+), 539 deletions(-) delete mode 100755 Tizen.Application/Tizen.Application/Actor.cs delete mode 100755 Tizen.Application/Tizen.Application/Application.cs delete mode 100755 Tizen.Application/Tizen.Application/ApplicationContext.cs delete mode 100755 Tizen.Application/Tizen.Application/Page.cs delete mode 100755 Tizen.Application/Tizen.Application/Service.cs delete mode 100755 Tizen.Application/Tizen.Application/ServiceManager.cs rename {Tizen.Application => Tizen.Applications}/Interop/Interop.AppControl.cs (100%) rename {Tizen.Application => Tizen.Applications}/Interop/Interop.Application.cs (100%) rename {Tizen.Application => Tizen.Applications}/Interop/Interop.Aul.cs (100%) rename {Tizen.Application => Tizen.Applications}/Interop/Interop.Glib.cs (100%) rename {Tizen.Application => Tizen.Applications}/Interop/Interop.Libraries.cs (100%) rename {Tizen.Application => Tizen.Applications}/Interop/Interop.Window.cs (100%) rename {Tizen.Application => Tizen.Applications}/Properties/AssemblyInfo.cs (84%) rename Tizen.Application/Tizen.Application.csproj => Tizen.Applications/Tizen.Applications.csproj (74%) rename Tizen.Application/Tizen.Application.csproj.user => Tizen.Applications/Tizen.Applications.csproj.user (100%) rename Tizen.Application/Tizen.Application.snk => Tizen.Applications/Tizen.Applications.snk (100%) create mode 100755 Tizen.Applications/Tizen.Applications/Actor.cs rename {Tizen.Application/Tizen.Application => Tizen.Applications/Tizen.Applications}/AppControl.cs (97%) rename {Tizen.Application/Tizen.Application => Tizen.Applications/Tizen.Applications}/AppControlFilter.cs (98%) create mode 100755 Tizen.Applications/Tizen.Applications/Application.cs rename {Tizen.Application/Tizen.Application => Tizen.Applications/Tizen.Applications}/CodeExample.cs (71%) create mode 100755 Tizen.Applications/Tizen.Applications/Context.cs create mode 100755 Tizen.Applications/Tizen.Applications/ContextGroup.cs create mode 100755 Tizen.Applications/Tizen.Applications/Service.cs rename {Tizen.Application/Tizen.Application => Tizen.Applications/Tizen.Applications}/TizenSynchronizationContext.cs (98%) rename {Tizen.Application/Tizen.Application => Tizen.Applications/Tizen.Applications}/Window.cs (62%) diff --git a/AppFW.sln b/AppFW.sln index cb2ee73..a7f4b55 100755 --- a/AppFW.sln +++ b/AppFW.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.24720.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tizen.Application", "Tizen.Application\Tizen.Application.csproj", "{663C5A3D-E631-4987-AEE7-F498C56A40FC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tizen.Applications", "Tizen.Applications\Tizen.Applications.csproj", "{663C5A3D-E631-4987-AEE7-F498C56A40FC}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Tizen.Application/Tizen.Application/Actor.cs b/Tizen.Application/Tizen.Application/Actor.cs deleted file mode 100755 index c4d4548..0000000 --- a/Tizen.Application/Tizen.Application/Actor.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System; - -namespace Tizen.Application -{ - public abstract class Actor - { - private enum State - { - None, - Created, - Started, - Resumed, - Pasued - } - - private ApplicationContext _context; - private State _state = State.None; - private AppControl _appcontrol; - - protected Page MainPage { get; set; } - protected AppControl ReceivedAppControl { get { return _appcontrol; } } - protected ApplicationContext Context { get { return _context; } } - - protected virtual void OnCreate() { } - protected virtual void OnStart() { } - protected virtual void OnPause() { } - protected virtual void OnResume() { } - protected virtual void OnTerminate() { } - - internal void Create(ApplicationContext context) - { - if (_state != State.Created) - { - _context = context; - OnCreate(); - _state = State.Created; - } - } - - internal void Start(AppControl appControl) - { - if (_state != State.Started) - { - _appcontrol = appControl; - OnStart(); - _state = State.Started; - } - } - - internal void Pause() - { - if (_state != State.Pasued) - { - OnPause(); - _state = State.Pasued; - } - } - - internal void Resume() - { - if (_state != State.Resumed) - { - OnResume(); - _state = State.Resumed; - } - } - - internal void Terminate() - { - if (_state != State.None) - { - OnTerminate(); - _state = State.None; - } - } - - protected void StartActor(Type actorType, AppControl appControl) - { - _context.StartActor(actorType, appControl); - - } - - protected void StartActor(Actor actor, AppControl appControl) - { - _context.StartActor(actor, appControl); - } - - protected void StartService(Type serviceType, AppControl appControl) - { - Application.StartService(serviceType, appControl); - } - protected void StopService(Type serviceType) - { - Application.StopService(serviceType); - } - - public void Finish() - { - throw new NotImplementedException(); - } - } -} diff --git a/Tizen.Application/Tizen.Application/Application.cs b/Tizen.Application/Tizen.Application/Application.cs deleted file mode 100755 index 55d779a..0000000 --- a/Tizen.Application/Tizen.Application/Application.cs +++ /dev/null @@ -1,178 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Runtime.InteropServices; - -namespace Tizen.Application -{ - public static class Application - { - private static Dictionary _filterMap = new Dictionary(); - private static List _contextList = new List(); - private static Window _window = null; - private static ServiceManager _serviceManager = new ServiceManager(); - - public static event EventHandler ApplicationInit; - public static event EventHandler ApplicationExit; - - private static ApplicationContext CurrentContext { get { return _contextList.LastOrDefault(null); } } - - public static int Run(string[] args) - { - Interop.Application.UIAppLifecycleCallbacks ops; - ops.OnCreate = (userData) => - { - ApplicationInit(null, null); - return true; - }; - ops.OnPause = (userData) => - { - if (CurrentContext != null) - { - CurrentContext.Pause(); - } - }; - ops.OnResume = (userData) => - { - if (CurrentContext != null) - { - CurrentContext.Resume(); - } - }; - ops.OnAppControl = (appControlHandle, userData) => - { - AppControl appControl = new AppControl(appControlHandle); - if (appControl.isService) - { - _serviceManager.OnAppControl(appControl); - } else { - foreach (var item in _filterMap) - { - if (item.Key.IsMatch(appControl)) - { - // Window was created when the first UI Actor was created - if (_window == null) - _window = new Window(); - if (CurrentContext == null || !appControl.IsLaunchOperation()) - { - ApplicationContext ctx = new ApplicationContext(); - ctx.ReleaseContext += Ctx_ReleaseContext; - _contextList.Add(ctx); - Actor actor = ctx.StartActor(item.Value, appControl); - if (!_window.Visible) - { - _window.Active(); - _window.Show(); - ctx.Resume(); - } - } - break; - } - } - } - }; - ops.OnTerminate = (userData) => - { - Exit(); - }; - - TizenSynchronizationContext.Initialize(); - - int ret = Interop.Application.UIAppMain(args.Length, args, ref ops, IntPtr.Zero); - - return ret; - } - - public static void Hide() - { - if (_window != null) - _window.InActive(); - } - - public static void Exit() - { - ApplicationExit(null, null); - throw new NotImplementedException(); - } - - private static void Ctx_ReleaseContext(object sender, EventArgs e) - { - var ctx = sender as ApplicationContext; - if (ctx != null) - { - _contextList.Remove(ctx); - if (_contextList.Count > 0) - { - Hide(); - } else - { - // TODO. If running service was existed, application should not terminated, but Send the message to AUL(UI App terminate) - Exit(); - } - } - } - - public static void AddActor(Type clazz) - { - AddActor(clazz, new AppControlFilter[0] { }); - } - - public static void AddActor(Type clazz, AppControlFilter filter) - { - AddActor(clazz, new AppControlFilter[] { filter }); - } - - public static void AddActor(Type clazz, AppControlFilter[] filters) - { - if (!clazz.IsSubclassOf(typeof(Actor))) - throw new ArgumentException(clazz.FullName + " is not a subclass of Actor."); - - foreach (var prop in clazz.GetProperties()) - { - foreach (var attr in prop.GetCustomAttributes(false)) - { - var filter = attr as AppControlFilter; - if (filter != null) - { - _filterMap.Add(filter, clazz); - } - } - } - if (filters != null) - { - foreach (var filter in filters) - { - _filterMap.Add(filter, clazz); - } - } - } - - public static void AddServiceHandler(Type clazz) - { - AddServiceHandler(clazz, new AppControlFilter[0] { }); - } - - public static void AddServiceHandler(Type clazz, AppControlFilter filter) - { - AddServiceHandler(clazz, new AppControlFilter[] { filter }); - } - - public static void AddServiceHandler(Type clazz, AppControlFilter[] filters) - { - _serviceManager.AddServiceHandler(clazz, filters); - } - - internal static void StartService(Type clazz, AppControl appControl) - { - _serviceManager.StartService(clazz, appControl); - } - internal static void StopService(Type clazz) - { - _serviceManager.StopService(clazz); - } - } - - -} diff --git a/Tizen.Application/Tizen.Application/ApplicationContext.cs b/Tizen.Application/Tizen.Application/ApplicationContext.cs deleted file mode 100755 index 7165707..0000000 --- a/Tizen.Application/Tizen.Application/ApplicationContext.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tizen.Application -{ - public class ApplicationContext - { - private List _actorList; - - internal event EventHandler ReleaseContext; - - internal Actor TopActor { get { return _actorList.LastOrDefault(null); } } - - internal ApplicationContext() - { - _actorList = new List(); - } - - internal Actor StartActor(Type actorType, AppControl appControl) - { - Actor newActor = (Actor)Activator.CreateInstance(actorType); - _actorList.Add(newActor); - newActor.Create(this); - newActor.Start(appControl); - return newActor; - } - - internal Actor StartActor(Actor actor, AppControl appControl) - { - Actor found = _actorList.Find(s => s == actor); - if (found == null) - { - throw new ArgumentException("Could not found the actor in current context."); - } - _actorList.Remove(found); - _actorList.Add(found); - found.Start(appControl); - return found; - } - - internal void FinishActor(Actor actor) - { - Actor found = _actorList.Find(s => s == actor); - if (found == null) - { - throw new ArgumentException("Could not found the actor in current context."); - } - - found.Pause(); - found.Terminate(); - _actorList.Remove(found); - - if (IsEmpty()) - { - ReleaseContext(this, null); - } - } - - internal void Pause() - { - if (TopActor != null) - { - TopActor.Pause(); - } - } - - internal void Resume() - { - if (TopActor != null) - { - TopActor.Resume(); - } - } - - internal bool IsEmpty() - { - return _actorList.Count == 0; - } - } -} diff --git a/Tizen.Application/Tizen.Application/Page.cs b/Tizen.Application/Tizen.Application/Page.cs deleted file mode 100755 index afbed07..0000000 --- a/Tizen.Application/Tizen.Application/Page.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tizen.Application -{ - public class Page - { - } -} diff --git a/Tizen.Application/Tizen.Application/Service.cs b/Tizen.Application/Tizen.Application/Service.cs deleted file mode 100755 index 3ae207d..0000000 --- a/Tizen.Application/Tizen.Application/Service.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace Tizen.Application { - public class Service { - public Service() { } - - public void Terminate() - { - Application.StopService(GetType()); - } - - protected virtual void OnCreate() { } - protected virtual void OnTerminate() { } - protected virtual void OnAppControl(AppControl appControl) { } - - internal void DidCreate() - { - OnCreate(); - } - internal void DidTerminate() - { - OnTerminate(); - } - internal void DidAppControl(AppControl appControl) - { - OnAppControl(appControl); - } - } -} diff --git a/Tizen.Application/Tizen.Application/ServiceManager.cs b/Tizen.Application/Tizen.Application/ServiceManager.cs deleted file mode 100755 index 7e14327..0000000 --- a/Tizen.Application/Tizen.Application/ServiceManager.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Tizen.Application -{ - public class ServiceManager - { - private Dictionary _filterMap = new Dictionary(); - private Dictionary _runningService = new Dictionary(); - - public ServiceManager() { } - internal void AddServiceHandler(Type clazz, AppControlFilter[] filters) - { - if (!clazz.IsSubclassOf(typeof(Service))) - throw new ArgumentException(clazz.FullName + " is not a subclass of Service."); - - foreach (var prop in clazz.GetProperties()) - { - foreach (var attr in prop.GetCustomAttributes(false)) - { - var filter = attr as AppControlFilter; - if (filter != null) - { - _filterMap.Add(filter, clazz); - } - } - } - if (filters != null) - { - foreach (var filter in filters) - { - _filterMap.Add(filter, clazz); - } - } - } - internal void OnAppControl(AppControl appControl) - { - foreach (var item in _filterMap) - { - if (item.Key.IsMatch(appControl)) - { - StartService(item.Value, appControl); - break; - } - } - } - - internal void StartService(Type clazz, AppControl appControl) - { - lock (_runningService) - { - if (_runningService.ContainsKey(clazz)) - { - _runningService[clazz].DidAppControl(appControl); - } else - { - _runningService[clazz] = (Service)Activator.CreateInstance(clazz); - _runningService[clazz].DidCreate(); - _runningService[clazz].DidAppControl(appControl); - } - } - } - - internal void StopService(Type clazz) - { - lock (_runningService) - { - if (_runningService.ContainsKey(clazz)) - { - _runningService[clazz].DidTerminate(); - _runningService.Remove(clazz); - } - } - } - - internal bool ServiceAlived - { - get - { - lock (_runningService) - { - return _runningService.Count > 0; - } - } - } - } -} diff --git a/Tizen.Application/Interop/Interop.AppControl.cs b/Tizen.Applications/Interop/Interop.AppControl.cs similarity index 100% rename from Tizen.Application/Interop/Interop.AppControl.cs rename to Tizen.Applications/Interop/Interop.AppControl.cs diff --git a/Tizen.Application/Interop/Interop.Application.cs b/Tizen.Applications/Interop/Interop.Application.cs similarity index 100% rename from Tizen.Application/Interop/Interop.Application.cs rename to Tizen.Applications/Interop/Interop.Application.cs diff --git a/Tizen.Application/Interop/Interop.Aul.cs b/Tizen.Applications/Interop/Interop.Aul.cs similarity index 100% rename from Tizen.Application/Interop/Interop.Aul.cs rename to Tizen.Applications/Interop/Interop.Aul.cs diff --git a/Tizen.Application/Interop/Interop.Glib.cs b/Tizen.Applications/Interop/Interop.Glib.cs similarity index 100% rename from Tizen.Application/Interop/Interop.Glib.cs rename to Tizen.Applications/Interop/Interop.Glib.cs diff --git a/Tizen.Application/Interop/Interop.Libraries.cs b/Tizen.Applications/Interop/Interop.Libraries.cs similarity index 100% rename from Tizen.Application/Interop/Interop.Libraries.cs rename to Tizen.Applications/Interop/Interop.Libraries.cs diff --git a/Tizen.Application/Interop/Interop.Window.cs b/Tizen.Applications/Interop/Interop.Window.cs similarity index 100% rename from Tizen.Application/Interop/Interop.Window.cs rename to Tizen.Applications/Interop/Interop.Window.cs diff --git a/Tizen.Application/Properties/AssemblyInfo.cs b/Tizen.Applications/Properties/AssemblyInfo.cs similarity index 84% rename from Tizen.Application/Properties/AssemblyInfo.cs rename to Tizen.Applications/Properties/AssemblyInfo.cs index 2279397..fe35548 100755 --- a/Tizen.Application/Properties/AssemblyInfo.cs +++ b/Tizen.Applications/Properties/AssemblyInfo.cs @@ -2,11 +2,11 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -[assembly: AssemblyTitle("Tizen.Application")] +[assembly: AssemblyTitle("Tizen.Applications")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Samsung Electronics")] -[assembly: AssemblyProduct("Tizen.Application")] +[assembly: AssemblyProduct("Tizen.Applications")] [assembly: AssemblyCopyright("Copyright (c) 2015 Samsung Electronics Co., Ltd")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/Tizen.Application/Tizen.Application.csproj b/Tizen.Applications/Tizen.Applications.csproj similarity index 74% rename from Tizen.Application/Tizen.Application.csproj rename to Tizen.Applications/Tizen.Applications.csproj index 5fef059..325cbe8 100755 --- a/Tizen.Application/Tizen.Application.csproj +++ b/Tizen.Applications/Tizen.Applications.csproj @@ -7,8 +7,8 @@ {663C5A3D-E631-4987-AEE7-F498C56A40FC} Library Properties - Tizen.Application - Tizen.Application + + Tizen.Applications v4.5 512 @@ -33,7 +33,7 @@ true - Tizen.Application.snk + Tizen.Applications.snk @@ -53,23 +53,22 @@ - - - - - - - - - - - + + + + + + + + + + - + -