Add Simple Window implements
authorSeungkeun Lee <sngn.lee@samsung.com>
Wed, 2 Mar 2016 07:44:09 +0000 (16:44 +0900)
committerWonYoung Choi <wy80.choi@samsung.com>
Fri, 4 Mar 2016 05:47:40 +0000 (14:47 +0900)
Change-Id: I5721231c714085e7e6789e7b55350f2e434ea67c

Tizen.Application/Interop/Interop.Libraries.cs
Tizen.Application/Interop/Interop.Window.cs [new file with mode: 0755]
Tizen.Application/Tizen.Application.csproj
Tizen.Application/Tizen.Application/Application.cs
Tizen.Application/Tizen.Application/Window.cs [new file with mode: 0755]

index a911ded..6b961a7 100755 (executable)
@@ -13,5 +13,7 @@ internal static partial class Interop
         public const string Aul = "libaul.so.0";
         public const string Application = "libcapi-appfw-application.so.0";
         public const string Glib = "libglib-2.0.so.0";
+        public const string Elementary = "libelementary.so.1";
+        public const string Evas = "libevas.so.1";
     }
 }
diff --git a/Tizen.Application/Interop/Interop.Window.cs b/Tizen.Application/Interop/Interop.Window.cs
new file mode 100755 (executable)
index 0000000..4a8f00b
--- /dev/null
@@ -0,0 +1,27 @@
+using System;
+using System.Runtime.InteropServices;
+
+internal static partial class Interop {
+    internal static partial class Window {
+        [DllImport(Libraries.Elementary, CallingConvention = CallingConvention.Cdecl)]
+        internal static extern IntPtr elm_win_add(IntPtr parent, string name, int type);
+
+        [DllImport(Libraries.Evas, CallingConvention = CallingConvention.Cdecl)]
+        internal static extern void evas_object_show(IntPtr obj);
+
+        [DllImport(Libraries.Evas, CallingConvention = CallingConvention.Cdecl)]
+        internal static extern void evas_object_hide(IntPtr obj);
+
+        [DllImport(Libraries.Evas, CallingConvention = CallingConvention.Cdecl)]
+        internal static extern bool evas_object_visible_get(IntPtr obj);
+
+        [DllImport(Libraries.Evas, CallingConvention = CallingConvention.Cdecl)]
+        internal static extern void evas_object_unref(IntPtr obj);
+
+        [DllImport(Libraries.Evas, CallingConvention = CallingConvention.Cdecl)]
+        internal static extern void elm_win_activate(IntPtr obj);
+
+        [DllImport(Libraries.Evas, CallingConvention = CallingConvention.Cdecl)]
+        internal static extern void elm_win_lower(IntPtr obj);
+    }
+}
index 9176681..942d0f1 100755 (executable)
@@ -51,6 +51,7 @@
     <Compile Include="Interop\Interop.Aul.cs" />
     <Compile Include="Interop\Interop.Glib.cs" />
     <Compile Include="Interop\Interop.Libraries.cs" />
+    <Compile Include="Interop\Interop.Window.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Tizen.Application\Actor.cs" />
     <Compile Include="Tizen.Application\AppControl.cs" />
@@ -59,6 +60,7 @@
     <Compile Include="Tizen.Application\ApplicationContext.cs" />
     <Compile Include="Tizen.Application\CodeExample.cs" />
     <Compile Include="Tizen.Application\Page.cs" />
+    <Compile Include="Tizen.Application\Window.cs" />
     <Compile Include="Tizen.Application\TizenSynchronizationContext.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -72,4 +74,4 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
index 5f88d8d..35fc114 100755 (executable)
@@ -12,6 +12,7 @@ namespace Tizen.Application
         private static Dictionary<string, Type> _actorMap = new Dictionary<string, Type>();
         private static Dictionary<AppControlFilter, Type> _filterMap = new Dictionary<AppControlFilter, Type>();
         private static List<ApplicationContext> _contextList = new List<ApplicationContext>();
+        private static Window _window = null;
 
         public static event EventHandler ApplicationInit;
         public static event EventHandler ApplicationExit;
@@ -25,6 +26,8 @@ namespace Tizen.Application
             {
                 _contextList.Add(new ApplicationContext());
                 ApplicationInit(null, null);
+                if (_window == null)
+                    _window = new Window();
                 return true;
             };
             ops.OnPause = (userData) =>
@@ -60,8 +63,13 @@ namespace Tizen.Application
                             ApplicationContext ctx = new ApplicationContext();
                             _contextList.Add(ctx);
                             Actor actor = ctx.StartActor(item.Value, appControl);
+
                             // TODO: Resume should be called by windows event
-                            actor.Resume();
+                            if (!_window.Visible) {
+                                _window.Active();
+                                _window.Show();
+                                actor.Resume();
+                            }
                         }
                         break;
                     }
diff --git a/Tizen.Application/Tizen.Application/Window.cs b/Tizen.Application/Tizen.Application/Window.cs
new file mode 100755 (executable)
index 0000000..4743fa8
--- /dev/null
@@ -0,0 +1,38 @@
+using System;
+
+namespace Tizen.Application {
+    class Window : IDisposable {
+        private IntPtr _native_window = IntPtr.Zero;
+
+        public bool Visible {
+            get {
+                return _native_window != IntPtr.Zero ? Interop.Window.evas_object_visible_get(_native_window) : false;
+            }
+        }
+        public Window() {
+            _native_window = Interop.Window.elm_win_add(IntPtr.Zero, "Window", 0);
+        }
+        ~Window() {
+            Dispose();
+        }
+        public void Show() {
+            Interop.Window.evas_object_show(_native_window);
+        }
+        public void Hide() {
+            Interop.Window.evas_object_hide(_native_window);
+        }
+        public void Active() {
+            Interop.Window.elm_win_activate(_native_window);
+        }
+        public void InActive() {
+            Interop.Window.elm_win_lower(_native_window);
+        }
+
+        public void Dispose() {
+            if (_native_window != IntPtr.Zero) {
+                Interop.Window.evas_object_unref(_native_window);
+                _native_window = IntPtr.Zero;
+            }
+        }
+    }
+}