Revert "[Tizen] Revert "Delete elementary dependency of ui_app_main"" 99/141699/1
authorminho.sun <minho.sun@samsung.com>
Tue, 1 Aug 2017 01:18:39 +0000 (10:18 +0900)
committerminho.sun <minho.sun@samsung.com>
Tue, 1 Aug 2017 01:18:40 +0000 (10:18 +0900)
This reverts commit a1024c90249fa288c76481aa1cb5b9b1bc244520.

Change-Id: I66f6d96b85c4d1633a36fcb33c9bd778dadd6065

Tizen.NUI/Tizen.NUI.csproj
Tizen.NUI/src/internal/Application.cs
Tizen.NUI/src/internal/NUICoreBackend.cs [new file with mode: 0755]
Tizen.NUI/src/internal/NUIEventType.cs [new file with mode: 0755]
Tizen.NUI/src/public/BaseComponents/View.cs
Tizen.NUI/src/public/NUIApplication.cs
packaging/csapi-nui.spec

index 63d87d8..99e5b91 100755 (executable)
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">\r
 \r
   <PropertyGroup>\r
-    <Version>0.2.49</Version>\r
+    <Version>0.2.48-pre1</Version>\r
     <Authors>Samsung Electronics</Authors>\r
     <Copyright>© Samsung Electronics Co., Ltd All Rights Reserved</Copyright>\r
     <Description>\r
@@ -25,7 +25,7 @@
 \r
   <ItemGroup>\r
     <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" PrivateAssets="All" />\r
-    <PackageReference Include="Tizen.Applications.UI" Version="1.5.8" />\r
+    <PackageReference Include="Tizen.Applications.Common" Version="1.5.8" />\r
   </ItemGroup>\r
 \r
 </Project>\r
index 105b893..4e68bfe 100755 (executable)
@@ -25,10 +25,10 @@ namespace Tizen.NUI
     {
         public const int ver1 = 1;
         public const int ver2 = 2;
-        public const int ver3 = 49;
+        public const int ver3 = 46;
         public const int nuiVer1 = 0;
         public const int nuiVer2 = 2;
-        public const int nuiVer3 = 49;
+        public const int nuiVer3 = 47;
         public const string nuiRelease = "";
     }
 
diff --git a/Tizen.NUI/src/internal/NUICoreBackend.cs b/Tizen.NUI/src/internal/NUICoreBackend.cs
new file mode 100755 (executable)
index 0000000..20dff95
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * Copyright (c) 2017 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.
+ *
+ */
+
+using System;
+using System.Collections.Generic;
+
+using Tizen.Applications.CoreBackend;
+using Tizen.Applications;
+using Tizen.NUI;
+
+namespace Tizen.NUI
+{
+    class NUICoreBackend : ICoreBackend
+    {
+        /// <summary>
+        /// Application instance to connect event.
+        /// </summary>
+        protected Application _application;
+
+        /// <summary>
+        /// Dictionary to contain each type of event callback.
+        /// </summary>
+        protected IDictionary<EventType, object> Handlers = new Dictionary<EventType, object>();
+
+        /// <summary>
+        /// The default Constructor.
+        /// </summary>
+        public NUICoreBackend()
+        {
+            _application = Application.NewApplication();
+        }
+
+        /// <summary>
+        /// The constructor with stylesheet.
+        /// </summary>
+        public NUICoreBackend(string stylesheet)
+        {
+            _application = Application.NewApplication(stylesheet);
+        }
+
+        /// <summary>
+        /// The constructor with stylesheet and window mode.
+        /// </summary>
+        public NUICoreBackend(string stylesheet, NUIApplication.WindowMode windowMode)
+        {
+            _application = Application.NewApplication(stylesheet, (Application.WindowMode)windowMode );
+        }
+
+        /// <summary>
+        /// Add NUIApplication event to Application.
+        /// Put each type of event callback in Dictionary.
+        /// </summary>
+        /// <param name="evType">Type of event</param>
+        /// <param name="handler">Event callback</param>
+        public void AddEventHandler(EventType evType, Action handler)
+        {
+            Handlers.Add(evType, handler);
+        }
+
+        /// <summary>
+        /// Add NUIApplication event to Application.
+        /// Put each type of event callback in Dictionary.
+        /// </summary>
+        /// <typeparam name="TEventArgs">Argument type for the event</typeparam>
+        /// <param name="evType">Type of event</param>
+        /// <param name="handler">Event callback</param>
+        public void AddEventHandler<TEventArgs>(EventType evType, Action<TEventArgs> handler) where TEventArgs : EventArgs
+        {
+            Handlers.Add(evType, handler);
+        }
+
+
+        /// <summary>
+        /// Dispose function.
+        /// </summary>
+        public void Dispose()
+        {
+            _application.Dispose();
+        }
+
+        /// <summary>
+        /// Exit Application.
+        /// </summary>
+        public void Exit()
+        {
+            _application.Quit();
+        }
+
+        /// <summary>
+        /// Run Application.
+        /// </summary>
+        /// <param name="args">Arguments from commandline.</param>
+        public void Run(string[] args)
+        {
+            _application.BatteryLow += OnBatteryLow;
+            _application.LanguageChanged += OnLanguageChanged;
+            _application.MemoryLow += OnMemoryLow;
+            _application.RegionChanged += OnRegionChanged;
+
+            _application.Initialized += OnInitialized;
+            _application.Resumed += OnResumed;
+            _application.Terminating += OnTerminated;
+            _application.Paused += OnPaused;
+            _application.AppControl += OnAppControl;
+
+            _application.MainLoop();
+        }
+
+        /// <summary>
+        /// Region changed event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for RegionChanged</param>
+        private void OnRegionChanged(object source, NUIApplicationRegionChangedEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnRegionChanged Called");
+            var handler = Handlers[EventType.RegionFormatChanged] as Action<RegionFormatChangedEventArgs>;
+            // Need to make new signal return in native to return right value.
+            handler?.Invoke( new RegionFormatChangedEventArgs(""));
+        }
+
+        /// <summary>
+        /// Memory Low event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for MemoryLow</param>
+        private void OnMemoryLow(object source, NUIApplicationMemoryLowEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnMemoryLow Called");
+            var handler = Handlers[EventType.LowMemory] as Action<LowMemoryEventArgs>;
+            // Need to make new signal return in native to return right value.
+            handler?.Invoke( new LowMemoryEventArgs(LowMemoryStatus.None));
+        }
+
+        /// <summary>
+        /// Language changed event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for LanguageChanged</param>
+        private void OnLanguageChanged(object source, NUIApplicationLanguageChangedEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnLanguageChanged Called");
+            var handler = Handlers[EventType.LocaleChanged] as Action<LocaleChangedEventArgs>;
+            // Need to make new signal return in native to return right value.
+            handler?.Invoke( new LocaleChangedEventArgs(""));
+        }
+
+        /// <summary>
+        /// Battery low event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for BatteryLow</param>
+        private void OnBatteryLow(object source, NUIApplicationBatteryLowEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnBatteryLow Called");
+            var handler = Handlers[EventType.LowBattery] as Action<LowBatteryEventArgs>;
+            // Need to make new signal return in native to return right value.
+            handler?.Invoke(new LowBatteryEventArgs(LowBatteryStatus.None));
+        }
+
+        /// <summary>
+        /// Initialized event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for Initialized</param>
+        private void OnInitialized(object source, NUIApplicationInitEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnInitialized Called");
+            var handler = Handlers[EventType.Created] as Action;
+            handler?.Invoke();
+        }
+
+        /// <summary>
+        /// Terminated event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for Terminated</param>
+        private void OnTerminated(object source, NUIApplicationTerminatingEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnTerminated Called");
+            var handler = Handlers[EventType.Terminated] as Action;
+            handler?.Invoke();
+        }
+
+        /// <summary>
+        /// Resumed event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for Resumed</param>
+        private void OnResumed(object source, NUIApplicationResumedEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnResumed Called");
+            var handler = Handlers[EventType.Resumed] as Action;
+            handler?.Invoke();
+        }
+
+        /// <summary>
+        /// App control event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for AppControl</param>
+        private void OnAppControl(object source, NUIApplicationAppControlEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnAppControl Called");
+            /* can invoke after making new api which getting control handle at application.
+            var handler = Handlers[EventType.AppControlReceived] as Action<AppControlReceivedEventArgs>;
+            handler?.Invoke();
+            */
+        }
+
+        /// <summary>
+        /// Paused event callback function.
+        /// </summary>
+        /// <param name="source">Application instance</param>
+        /// <param name="e">Event argument for Paused</param>
+        private void OnPaused(object source, NUIApplicationPausedEventArgs e)
+        {
+            Log.Debug("NUI", "NUICorebackend OnPaused Called");
+            var handler = Handlers[EventType.Paused] as Action;
+            handler?.Invoke();
+        }
+
+
+       internal Application ApplicationHandle
+       {
+               get
+               {
+                       return _application;
+               }
+       }
+
+    }
+}
diff --git a/Tizen.NUI/src/internal/NUIEventType.cs b/Tizen.NUI/src/internal/NUIEventType.cs
new file mode 100755 (executable)
index 0000000..a9ee287
--- /dev/null
@@ -0,0 +1,47 @@
+/* Copyright(c) 2017 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.
+ *
+ */
+
+using Tizen.Applications.CoreBackend;
+
+namespace Tizen.NUI
+{
+    /// <summary>
+    /// Class that represents the type of NUI event for backends. This class can be converted from string type.
+    /// </summary>
+    public class NUIEventType : EventType
+    {
+        /// <summary>
+        /// Initializes the EventType class.
+        /// </summary>
+        /// <param name="name">The name of event type.</param>
+        public NUIEventType(string name) : base(name)
+        {
+        }
+
+        /// <summary>
+        /// Pre-defined event type. "Reset"
+        /// </summary>
+        public static readonly NUIEventType Reset = "Reset";
+
+        /// <summary>
+        /// Converts a string to NUIEventType instance.
+        /// </summary>
+        public static implicit operator NUIEventType(string value)
+        {
+            return new NUIEventType(value);
+        }
+    }
+}
index 7646242..b9ff096 100755 (executable)
@@ -2125,9 +2125,19 @@ namespace Tizen.NUI.BaseComponents
 
         /*internal View GetParent()
         {
+            View ret;
             IntPtr cPtr = NDalicPINVOKE.Actor_GetParent(swigCPtr);
 
-            View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+            BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(cPtr);
+
+            if(basehandle is Layer)
+            {
+                ret = new View(cPtr,false);
+            }
+            else
+            {
+                ret = basehandle as View;
+            }
 
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
index 6f2fda0..b5bdacb 100755 (executable)
@@ -17,6 +17,7 @@
 
 using System;
 using Tizen.Applications;
+using Tizen.Applications.CoreBackend;
 using Tizen.NUI;
 
 namespace Tizen.NUI
@@ -25,203 +26,145 @@ namespace Tizen.NUI
     /// <summary>
     /// Represents an application that have UI screen. The NUIApplication class has a default stage.
     /// </summary>
-    public class NUIApplication : CoreUIApplication
+    public class NUIApplication : CoreApplication
     {
         /// <summary>
-        /// The instance of the Application.
-        /// </summary>
-        /// <remarks>
-        /// This application is created before OnCreate() or created event. And the NUIApplication will be terminated when this application is closed.
-        /// </remarks>
-        private Application _application;
-
-        /// <summary>
-        /// The instance of the Dali Application extension.
-        /// </summary>
-        private ApplicationExtensions _applicationExt;
-
-        /// <summary>
-        /// Store the stylesheet value.
-        /// </summary>
-        private string _stylesheet;
-
-        /// <summary>
-        /// Store the window mode value.
-        /// </summary>
-        private Application.WindowMode _windowMode;
-
-        /// <summary>
-        /// Store the app mode value.
-        /// </summary>
-        private AppMode _appMode;
-
-        /// <summary>
-        /// The instance of the Dali Stage.
-        /// </summary>
-        private Window _window;
-
-        /// <summary>
         /// The default constructor.
         /// </summary>
-        public NUIApplication() : base()
+        public NUIApplication() : base(new NUICoreBackend())
         {
-            _appMode = AppMode.Default;
         }
 
         /// <summary>
         /// The constructor with stylesheet.
         /// </summary>
-        public NUIApplication(string stylesheet) : base()
+        public NUIApplication(string stylesheet) : base(new NUICoreBackend(stylesheet))
         {
-            //handle the stylesheet
-            _appMode = AppMode.StyleSheetOnly;
-            _stylesheet = stylesheet;
         }
 
         /// <summary>
         /// The constructor with stylesheet and window mode.
         /// </summary>
-        public NUIApplication(string stylesheet, WindowMode windowMode) : base()
+        public NUIApplication(string stylesheet, WindowMode windowMode) : base(new NUICoreBackend(stylesheet,windowMode))
         {
-            //handle the stylesheet and windowMode
-            _appMode = AppMode.StyleSheetWithWindowMode;
-            _stylesheet = stylesheet;
-            _windowMode = (Application.WindowMode)windowMode;
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnPause()
+        protected override void OnLocaleChanged(LocaleChangedEventArgs e)
         {
-            base.OnPause();
-            _applicationExt.Pause();
-            NUILog.Debug("OnPause() is called!");
         }
 
         /// <summary>
-        /// Overrides this method if want to handle behavior before calling OnCreate().<br>
-        /// stage property is initialized in this overrided method.<br>
+        /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnPreCreate()
+        protected override void OnLowBattery(LowBatteryEventArgs e)
         {
-            // Initialize DisposeQueue Singleton class.
-            DisposeQueue disposeQ = DisposeQueue.Instance;
-            NUILog.Debug("1) DisposeQueue.Instance.Initialize()!");
-            switch (_appMode)
-            {
-                case AppMode.Default:
-                    _application = Tizen.NUI.Application.NewApplication();
-                    break;
-                case AppMode.StyleSheetOnly:
-                    _application = Tizen.NUI.Application.NewApplication(_stylesheet);
-                    break;
-                case AppMode.StyleSheetWithWindowMode:
-                    _application = Tizen.NUI.Application.NewApplication(_stylesheet, _windowMode);
-                    break;
-                default:
-                    break;
-            }
-            _applicationExt = new ApplicationExtensions(_application);
-            _applicationExt.Init();
-            _applicationExt.Start();
-
-            // This is also required to create DisposeQueue on main thread.
-            disposeQ.Initialize();
-            NUILog.Debug("2) DisposeQueue.Instance.Initialize()!");
-            _window = Window.Instance;
-            _window.SetBackgroundColor(Color.White);
-            NUILog.Debug("OnPreCreate() is called!");
+            Log.Debug("NUI", "OnLowBattery() is called!");
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnResume()
+        protected override void OnLowMemory(LowMemoryEventArgs e)
         {
-            base.OnResume();
-            _applicationExt.Resume();
-            NUILog.Debug("OnResume() is called!");
+            Log.Debug("NUI", "OnLowMemory() is called!");
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnAppControlReceived(AppControlReceivedEventArgs e)
+        protected override void OnRegionFormatChanged(RegionFormatChangedEventArgs e)
         {
-            base.OnAppControlReceived(e);
-            NUILog.Debug("OnAppControlReceived() is called!");
-            if (e != null)
-            {
-                NUILog.Debug("OnAppControlReceived() is called! ApplicationId=" + e.ReceivedAppControl.ApplicationId);
-                NUILog.Debug("CallerApplicationId=" + e.ReceivedAppControl.CallerApplicationId + "   IsReplyRequest=" + e.ReceivedAppControl.IsReplyRequest);
-            }
+            Log.Debug("NUI", "OnRegionFormatChanged() is called!");
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnCreate()
+        protected override void OnTerminate()
         {
-            base.OnCreate();
-            NUILog.Debug("OnCreate() is called!");
+            Log.Debug("NUI", "OnTerminate() is called!");
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnLocaleChanged(LocaleChangedEventArgs e)
+        protected void OnPause()
         {
-            base.OnLocaleChanged(e);
-            _applicationExt.LanguageChange();
-            NUILog.Debug("OnLocaleChanged() is called!");
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnLowBattery(LowBatteryEventArgs e)
+        protected void OnResume()
         {
-            base.OnLowBattery(e);
-            NUILog.Debug("OnLowBattery() is called!");
+            Log.Debug("NUI", "OnResume() is called!");
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnLowMemory(LowMemoryEventArgs e)
+        protected override void OnAppControlReceived(AppControlReceivedEventArgs e)
         {
-            base.OnLowMemory(e);
-            NUILog.Debug("OnLowMemory() is called!");
+            Log.Debug("NUI", "OnAppControlReceived() is called!");
+            if (e != null)
+            {
+                Log.Debug("NUI", "OnAppControlReceived() is called! ApplicationId=" + e.ReceivedAppControl.ApplicationId);
+                Log.Debug("NUI", "CallerApplicationId=" + e.ReceivedAppControl.CallerApplicationId + "   IsReplyRequest=" + e.ReceivedAppControl.IsReplyRequest);
+            }
         }
 
         /// <summary>
         /// Overrides this method if want to handle behavior.
         /// </summary>
-        protected override void OnRegionFormatChanged(RegionFormatChangedEventArgs e)
+        protected override void OnCreate()
         {
-            base.OnRegionFormatChanged(e);
-            NUILog.Debug("OnRegionFormatChanged() is called!");
+            // This is also required to create DisposeQueue on main thread.
+            DisposeQueue disposeQ = DisposeQueue.Instance;
+            disposeQ.Initialize();
+            Log.Debug("NUI","OnCreate() is called!");
         }
 
         /// <summary>
-        /// Overrides this method if want to handle behavior.
+        /// Run NUIApplication.
         /// </summary>
-        protected override void OnTerminate()
+        /// <param name="args">Arguments from commandline.</param>
+        public override void Run(string[] args)
         {
-            base.OnTerminate();
-            _applicationExt.Terminate();
-            NUILog.Debug("OnTerminate() is called!");
+            string[] argsClone = null;
+
+            if (args == null)
+            {
+                argsClone = new string[1];
+            }
+            else
+            {
+                argsClone = new string[args.Length + 1];
+                args.CopyTo(argsClone, 1);
+            }
+            argsClone[0] = string.Empty;
+
+            Backend.AddEventHandler(EventType.Resumed, OnResume);
+            Backend.AddEventHandler<AppControlReceivedEventArgs>(EventType.AppControlReceived, OnAppControlReceived);
+            Backend.AddEventHandler(EventType.Paused, OnPause);
+            Backend.AddEventHandler(EventType.Terminated, OnTerminate);
+            Backend.AddEventHandler<RegionFormatChangedEventArgs>(EventType.RegionFormatChanged, OnRegionFormatChanged);
+            Backend.AddEventHandler<LowMemoryEventArgs>(EventType.LowMemory, OnLowMemory);
+            Backend.AddEventHandler<LowBatteryEventArgs>(EventType.LowBattery, OnLowBattery);
+            Backend.AddEventHandler<LocaleChangedEventArgs>(EventType.LocaleChanged, OnLocaleChanged);
+            Backend.AddEventHandler(EventType.Created, OnCreate);
+
+            Backend.Run(argsClone);
         }
 
         /// <summary>
-        /// The mode of creating NUI application.
+        /// Exit NUIApplication.
         /// </summary>
-        private enum AppMode
+        public override void Exit()
         {
-            Default = 0,
-            StyleSheetOnly = 1,
-            StyleSheetWithWindowMode = 2
+            Backend.Exit();
         }
 
         /// <summary>
@@ -233,23 +176,14 @@ namespace Tizen.NUI
             Transparent = 1
         }
 
-        /// <summary>
-        /// Get the window instance.
-        /// </summary>
-        public Window Window
-        {
-            get
-            {
-                return _application.GetWindow();
-            }
-        }
 
         internal Application ApplicationHandle
         {
             get
             {
-                return _application;
+                return ((NUICoreBackend)this.Backend).ApplicationHandle;
             }
         }
+
     }
 }
index c59f6d7..3f444eb 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       csapi-nui
 Summary:    dali-NUI
-Version:    0.2.49
+Version:    0.2.48.pre1
 Release:    1
 Group:      Development/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT