From 0863182e6736bdbf1ecdd3a498b042394f89de45 Mon Sep 17 00:00:00 2001 From: Seungkeun Lee Date: Wed, 2 Mar 2016 16:44:09 +0900 Subject: [PATCH] Add Simple Window implements Change-Id: I5721231c714085e7e6789e7b55350f2e434ea67c --- Tizen.Application/Interop/Interop.Libraries.cs | 2 ++ Tizen.Application/Interop/Interop.Window.cs | 27 +++++++++++++++ Tizen.Application/Tizen.Application.csproj | 4 ++- Tizen.Application/Tizen.Application/Application.cs | 10 +++++- Tizen.Application/Tizen.Application/Window.cs | 38 ++++++++++++++++++++++ 5 files changed, 79 insertions(+), 2 deletions(-) create mode 100755 Tizen.Application/Interop/Interop.Window.cs create mode 100755 Tizen.Application/Tizen.Application/Window.cs diff --git a/Tizen.Application/Interop/Interop.Libraries.cs b/Tizen.Application/Interop/Interop.Libraries.cs index a911ded..6b961a7 100755 --- a/Tizen.Application/Interop/Interop.Libraries.cs +++ b/Tizen.Application/Interop/Interop.Libraries.cs @@ -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 index 0000000..4a8f00b --- /dev/null +++ b/Tizen.Application/Interop/Interop.Window.cs @@ -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); + } +} diff --git a/Tizen.Application/Tizen.Application.csproj b/Tizen.Application/Tizen.Application.csproj index 9176681..942d0f1 100755 --- a/Tizen.Application/Tizen.Application.csproj +++ b/Tizen.Application/Tizen.Application.csproj @@ -51,6 +51,7 @@ + @@ -59,6 +60,7 @@ + @@ -72,4 +74,4 @@ --> - \ No newline at end of file + diff --git a/Tizen.Application/Tizen.Application/Application.cs b/Tizen.Application/Tizen.Application/Application.cs index 5f88d8d..35fc114 100755 --- a/Tizen.Application/Tizen.Application/Application.cs +++ b/Tizen.Application/Tizen.Application/Application.cs @@ -12,6 +12,7 @@ namespace Tizen.Application private static Dictionary _actorMap = new Dictionary(); private static Dictionary _filterMap = new Dictionary(); private static List _contextList = new List(); + 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 index 0000000..4743fa8 --- /dev/null +++ b/Tizen.Application/Tizen.Application/Window.cs @@ -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; + } + } + } +} -- 2.7.4