diff --git a/src/Tizen.Applications.Common/AssemblyAttr.cs b/src/Tizen.Applications.Common/AssemblyAttr.cs new file mode 100644 index 00000000000..7de83ac117c --- /dev/null +++ b/src/Tizen.Applications.Common/AssemblyAttr.cs @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Tizen.Applications.Team, " + PublicKey.Value)] + +internal static class PublicKey +{ + internal const string Value = + "PublicKey=0024000004800000940000000602000000240000525341310004000001000100d115b100424841" + + "6b12d21b626cfb17149c9303fe394693fd3b32d7872e89559a4fa96c98110c2e62eea48aca693b" + + "ddbe17094ca8ea2e2cd79970ca590fb672b9b371b5d7002076817321f62d6483ea50c56dbd1f37" + + "b185a4c24c47718876e6ae6d266508c551170d4cbdda3f82edaff9405ee3d7857282d8269e8e518d2f0fb2"; +} \ No newline at end of file diff --git a/src/Tizen.Applications.Common/Tizen.Applications.CoreBackend/IUICoreBackend.cs b/src/Tizen.Applications.Common/Tizen.Applications.CoreBackend/IUICoreBackend.cs new file mode 100644 index 00000000000..4da1ff371a4 --- /dev/null +++ b/src/Tizen.Applications.Common/Tizen.Applications.CoreBackend/IUICoreBackend.cs @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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.ComponentModel; +using Tizen.Applications.CoreBackend; + +namespace Tizen.Applications.CoreBackend +{ + /// + /// Defines the common contract for NUI-based application backends. + /// + /// + /// This interface abstracts the shared functionality between NUICoreBackend + /// and TeamUICoreBackend, enabling polymorphic access to event handler registration. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public interface IUICoreBackend : IDisposable + { + /// + /// Adds an event handler for the specified event type. + /// + /// The type of event. + /// The handler method without arguments. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void AddEventHandler(EventType evType, Action handler); + + /// + /// Adds an event handler for the specified event type with typed event arguments. + /// + /// The type used in the handler method. + /// The type of event. + /// The handler method with a type argument. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void AddEventHandler(EventType evType, Action handler) where TEventArgs : EventArgs; + } +} \ No newline at end of file diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs index 24e060cb0b8..23352250d90 100644 --- a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs @@ -24,7 +24,7 @@ namespace Tizen.Applications /// This class provides methods and properties to get information of the application. /// /// 3 - public class ApplicationInfo : IDisposable + public class ApplicationInfo : IDisposable, IApplicationInfo { private const string LogTag = "Tizen.Applications"; private bool _disposed = false; diff --git a/src/Tizen.Applications.Common/Tizen.Applications/DirectoryInfo.cs b/src/Tizen.Applications.Common/Tizen.Applications/DirectoryInfo.cs index d9ba67bdf8f..b47333ad551 100644 --- a/src/Tizen.Applications.Common/Tizen.Applications/DirectoryInfo.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/DirectoryInfo.cs @@ -24,7 +24,7 @@ namespace Tizen.Applications /// Represents directory information of the application. /// /// 3 - public class DirectoryInfo + public class DirectoryInfo : IDirectoryInfo { private string _dataPath; private string _cachePath; diff --git a/src/Tizen.Applications.Common/Tizen.Applications/IApplicationInfo.cs b/src/Tizen.Applications.Common/Tizen.Applications/IApplicationInfo.cs new file mode 100644 index 00000000000..cfc9952265c --- /dev/null +++ b/src/Tizen.Applications.Common/Tizen.Applications/IApplicationInfo.cs @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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 System.ComponentModel; + +namespace Tizen.Applications +{ + /// + /// Defines the common contract for application information. + /// + /// + /// This interface abstracts the shared properties between + /// and . + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public interface IApplicationInfo : IDisposable + { + /// + /// Gets the application ID. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ApplicationId { get; } + + /// + /// Gets the package ID of the application. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string PackageId { get; } + + /// + /// Gets the label of the application. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string Label { get; } + + /// + /// Gets the executable path of the application. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ExecutablePath { get; } + + /// + /// Gets the absolute path to the icon image. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string IconPath { get; } + + /// + /// Gets the application type name. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ApplicationType { get; } + + /// + /// Gets the application component type. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + ApplicationComponentType ComponentType { get; } + + /// + /// Gets the application's metadata. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IDictionary Metadata { get; } + + /// + /// Gets a value indicating whether the application is not displayed on the launcher. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + bool IsNoDisplay { get; } + + /// + /// Gets a value indicating whether the application is launched automatically on system boot. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + bool IsOnBoot { get; } + + /// + /// Gets a value indicating whether the application is preloaded on the device. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + bool IsPreload { get; } + + /// + /// Gets the categories the application belongs to. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IEnumerable Categories { get; } + + /// + /// Gets the shared data path. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string SharedDataPath { get; } + + /// + /// Gets the shared resource path. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string SharedResourcePath { get; } + + /// + /// Gets the shared trusted path. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string SharedTrustedPath { get; } + + /// + /// Gets the external shared data path. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ExternalSharedDataPath { get; } + + /// + /// Gets the resource controls. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IEnumerable ResourceControls { get; } + + /// + /// Gets the common shared data path. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string CommonSharedDataPath { get; } + + /// + /// Gets the common shared trusted path. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string CommonSharedTrustedPath { get; } + + /// + /// Gets the localized label of the application for the given locale. + /// + /// The locale string. + /// The localized label string. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string GetLocalizedLabel(string locale); + } +} \ No newline at end of file diff --git a/src/Tizen.Applications.Common/Tizen.Applications/IDirectoryInfo.cs b/src/Tizen.Applications.Common/Tizen.Applications/IDirectoryInfo.cs new file mode 100644 index 00000000000..7e7afc491ad --- /dev/null +++ b/src/Tizen.Applications.Common/Tizen.Applications/IDirectoryInfo.cs @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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.ComponentModel; + +namespace Tizen.Applications +{ + /// + /// Defines the common contract for directory information. + /// + /// + /// This interface abstracts the shared properties between + /// and . + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public interface IDirectoryInfo + { + /// + /// Gets the absolute path to the application's data directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string Data { get; } + + /// + /// Gets the absolute path to the application's cache directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string Cache { get; } + + /// + /// Gets the absolute path to the application resource directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string Resource { get; } + + /// + /// Gets the absolute path to the application's shared data directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string SharedData { get; } + + /// + /// Gets the absolute path to the application's shared resource directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string SharedResource { get; } + + /// + /// Gets the absolute path to the application's shared trusted directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string SharedTrusted { get; } + + /// + /// Gets the absolute path to the application's external data directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ExternalData { get; } + + /// + /// Gets the absolute path to the application's external cache directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ExternalCache { get; } + + /// + /// Gets the absolute path to the application's external shared data directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ExternalSharedData { get; } + + /// + /// Gets the absolute path to the application's TEP(Tizen Expansion Package) directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string ExpansionPackageResource { get; } + + /// + /// Gets the absolute path to the application's common data directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string CommonData { get; } + + /// + /// Gets the absolute path to the application's common cache directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string CommonCache { get; } + + /// + /// Gets the absolute path to the application's common shared data directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string CommonSharedData { get; } + + /// + /// Gets the absolute path to the application's common shared trusted directory. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string CommonSharedTrusted { get; } + + /// + /// Gets the absolute path to the resource directory allowed by resource control for the given resource type. + /// + /// The resource type. + /// The path to the allowed resource directory. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string GetResourceControlAllowedResource(string resourceType); + + /// + /// Gets the absolute path to the global resource directory by resource control for the given resource type. + /// + /// The resource type. + /// The path to the global resource directory. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + string GetResourceControlGlobalResource(string resourceType); + } +} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/CultureInfoHelper.cs b/src/Tizen.Applications.Team/CultureInfoHelper.cs deleted file mode 100644 index 5ca0e624ac1..00000000000 --- a/src/Tizen.Applications.Team/CultureInfoHelper.cs +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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.IO; -using System.Runtime.InteropServices; - -namespace Tizen.Applications -{ - /// - /// Resolves culture names from the platform-provided CultureInfo INI file. - /// - internal static class CultureInfoHelper - { - private const string _pathCultureInfoIni = "/usr/share/dotnet.tizen/framework/i18n/CultureInfo.ini"; - private static bool _fileExists = File.Exists(_pathCultureInfoIni); - - public static string GetCultureName(string locale) - { - if (!_fileExists) - { - return string.Empty; - } - - IntPtr dictionary = Interop.LibIniParser.Load(_pathCultureInfoIni); - if (dictionary == IntPtr.Zero) - { - return string.Empty; - } - - string cultureName = string.Empty; -#pragma warning disable CA1308 - string key = "CultureInfo:" + locale.ToLowerInvariant(); -#pragma warning restore CA1308 - IntPtr value = Interop.LibIniParser.GetString(dictionary, key, IntPtr.Zero); - if (value != IntPtr.Zero) - { - cultureName = Marshal.PtrToStringAnsi(value); - } - - Interop.LibIniParser.FreeDict(dictionary); - return cultureName; - } - } -} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/GSourceManager.cs b/src/Tizen.Applications.Team/GSourceManager.cs deleted file mode 100644 index d7b1358621e..00000000000 --- a/src/Tizen.Applications.Team/GSourceManager.cs +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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.Concurrent; - -namespace Tizen.Applications -{ - /// - /// Posts actions onto the GLib main loop used by the Team application. - /// - internal static class GSourceManager - { - private static readonly GSourceContext _tizenContext = new GSourceContext(); - private static readonly GSourceContext _tizenUIContext = new GSourceContext(); - private static readonly Interop.Glib.GSourceFunc _wrapperHandler = new Interop.Glib.GSourceFunc(Handler); - - public static void Post(Action action) - { - IntPtr context = IntPtr.Zero; - var sourceContext = context == IntPtr.Zero ? _tizenContext : _tizenUIContext; - sourceContext.Post(action, context, _wrapperHandler); - } - - private static bool Handler(IntPtr userData) - { - var sourceContext = userData == IntPtr.Zero ? _tizenContext : _tizenUIContext; - return sourceContext.ProcessQueue(); - } - } - - /// - /// Holds the GLib source state and action queue for a single main loop context. - /// - internal class GSourceContext - { - private readonly ConcurrentQueue _actionQueue = new ConcurrentQueue(); - private readonly object _lock = new object(); - private IntPtr _source = IntPtr.Zero; - - public void Post(Action action, IntPtr context, Interop.Glib.GSourceFunc handler) - { - _actionQueue.Enqueue(action); - - lock (_lock) - { - if (_source != IntPtr.Zero) - { - return; - } - - _source = Interop.Glib.IdleSourceNew(); - Interop.Glib.SourceSetCallback(_source, handler, context, IntPtr.Zero); - _ = Interop.Glib.SourceAttach(_source, context); - Interop.Glib.SourceUnref(_source); - } - } - - public bool ProcessQueue() - { - if (_actionQueue.TryDequeue(out var action)) - { - action?.Invoke(); - } - - lock (_lock) - { - if (!_actionQueue.IsEmpty) - { - return true; - } - - _source = IntPtr.Zero; - } - - return false; - } - } -} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.ApplicationManager.cs b/src/Tizen.Applications.Team/Interop/Interop.ApplicationManager.cs index 24d37b61319..3fd89a07227 100755 --- a/src/Tizen.Applications.Team/Interop/Interop.ApplicationManager.cs +++ b/src/Tizen.Applications.Team/Interop/Interop.ApplicationManager.cs @@ -16,389 +16,105 @@ using System; using System.Runtime.InteropServices; - using Tizen.Internals; -internal static partial class Interop -{ - internal static partial class ApplicationManager +namespace Tizen.Applications { + internal static partial class Interop { - internal enum ErrorCode - { - None = Tizen.Internals.Errors.ErrorCode.None, - InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter, - OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory, - IoError = Tizen.Internals.Errors.ErrorCode.IoError, - NoSuchApp = -0x01110000 | 0x01, - DbFailed = -0x01110000 | 0x03, - InvalidPackage = -0x01110000 | 0x04, - AppNoRunning = -0x01110000 | 0x05, - RequestFailed = -0x01110000 | 0x06, - PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied - } - - internal enum AppContextEvent - { - Launched = 0, - Terminated = 1 - } - - internal enum AppManagerEventStatusType - { - All = 0x00, - Enable = 0x01, - Disable = 0x02 - } - - internal enum AppManagerEventType - { - Enable = 0, - Disable = 1 - } - - internal enum AppManagerEventState + internal static partial class ApplicationManager { - Started = 0, - Completed = 1, - Failed = 2 + internal enum ErrorCode + { + None = Tizen.Internals.Errors.ErrorCode.None, + InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter, + OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory, + IoError = Tizen.Internals.Errors.ErrorCode.IoError, + NoSuchApp = -0x01110000 | 0x01, + DbFailed = -0x01110000 | 0x03, + InvalidPackage = -0x01110000 | 0x04, + AppNoRunning = -0x01110000 | 0x05, + RequestFailed = -0x01110000 | 0x06, + PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied + } + + internal enum AppInfoAppComponentType + { + UiApp = 0, + ServiceApp = 1, + WidgetApp = 2, + WatchApp = 3 + } + + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + internal delegate bool AppInfoMetadataCallback(string key, string value, IntPtr userData); + //bool(* app_info_metadata_cb )(const char *metadata_key, const char *metadata_value, void *user_data) + + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + internal delegate bool AppInfoCategoryCallback(string category, IntPtr userData); + //bool (*app_info_category_cb) (const char *category, void *user_data) + + internal delegate bool AppInfoResControlCallback(string resType, string minResVersion, string maxResVersion, string autoClose, IntPtr userUdata); + //bool (*app_info_res_control_cb) (const char *res_type, const char *min_res_version, const char *max_res_version, const char *auto_close, void *user_data); + + [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_info")] + internal static extern ErrorCode AppManagerGetAppInfo(string applicationId, out IntPtr handle); + //int app_manager_get_app_info(const char * app_id, app_info_h * app_info) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_destroy")] + internal static extern ErrorCode AppInfoDestroy(IntPtr handle); + //int app_info_destroy (app_info_h app_info); + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_package")] + internal static extern ErrorCode AppInfoGetPackage(IntPtr handle, out string package); + //int app_info_get_package (app_info_h app_info, char **package) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_label")] + internal static extern ErrorCode AppInfoGetLabel(IntPtr handle, out string label); + //int app_info_get_label (app_info_h app_info, char **label); + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_exec")] + internal static extern ErrorCode AppInfoGetExec(IntPtr handle, out string exec); + //int app_info_get_exec (app_info_h app_info, char **exec); + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_icon")] + internal static extern ErrorCode AppInfoGetIcon(IntPtr handle, out string path); + //int app_info_get_icon (app_info_h app_info, char **path) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_type")] + internal static extern ErrorCode AppInfoGetType(IntPtr handle, out string type); + //int app_info_get_type (app_info_h app_info, char **type) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_app_component_type")] + internal static extern ErrorCode AppInfoGetAppComponentType(IntPtr handle, out AppInfoAppComponentType type); + //int app_info_get_app_component_type(app_info_h app_info, app_info_app_component_type_e *type) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_foreach_metadata")] + internal static extern ErrorCode AppInfoForeachMetadata(IntPtr handle, AppInfoMetadataCallback callback, IntPtr userData); + //int app_info_foreach_metadata(app_info_h app_info, app_info_metadata_cb callback, void *user_data) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_nodisplay")] + internal static extern ErrorCode AppInfoIsNodisplay(IntPtr handle, out bool noDisplay); + //int app_info_is_nodisplay (app_info_h app_info, bool *nodisplay) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_onboot")] + internal static extern ErrorCode AppInfoIsOnBoot(IntPtr handle, out bool onBoot); + //int app_info_is_onboot (app_info_h app_info, bool *onboot) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_preload")] + internal static extern ErrorCode AppInfoIsPreLoad(IntPtr handle, out bool preLoaded); + //int app_info_is_preload (app_info_h app_info, bool *preload) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_foreach_category")] + internal static extern ErrorCode AppInfoForeachCategory(IntPtr handle, AppInfoCategoryCallback callback, IntPtr userData); + //int app_info_foreach_category(app_info_h app_info, app_info_category_cb callback, void *user_data) + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_localed_label")] + internal static extern ErrorCode AppInfoGetLocaledLabel(string applicationId, string locale, out string label); + //int app_info_get_localed_label (const char *app_id, const char *locale, char **label); + + [DllImport(Libraries.AppManager, EntryPoint = "app_info_foreach_res_control")] + internal static extern ErrorCode AppInfoForeachResControl(IntPtr handle, AppInfoResControlCallback callback, IntPtr userData); } - - internal enum AppInfoAppComponentType - { - UiApp = 0, - ServiceApp = 1, - WidgetApp = 2, - WatchApp = 3 - } - - internal enum AppLifecycleState - { - Initialized = 0, - Created = 1, - Resumed = 2, - Paused = 3, - Destroyed = 4 - } - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate void AppManagerLifecycleStateChangedCallback(string appId, int pid, AppLifecycleState state, bool hasFocus, IntPtr userData); - //void (*app_manager_lifecycle_state_changed_cb)(const char *app_id, pid_t pid, app_manager_lifecycle_state_e state, bool has_focus, void *user_data) - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate void AppManagerEventCallback(string appType, string appId, AppManagerEventType eventType, AppManagerEventState eventState, IntPtr eventHandle, IntPtr userData); - //void(* app_manager_event_cb)(const char *type, const char *app_id, app_manager_event_type_e event_type, app_manager_event_state_e event_state, app_manager_event_h handle, void *user_data) - - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate void AppManagerAppContextEventCallback(IntPtr handle, AppContextEvent state, IntPtr userData); - //void(* app_manager_app_context_event_cb)(app_context_h app_context, app_context_event_e event, void *user_data) - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool AppManagerAppInfoCallback(IntPtr handle, IntPtr userData); - //bool(* app_manager_app_info_cb )(app_info_h app_info, void *user_data) - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool AppManagerAppContextCallback(IntPtr handle, IntPtr userData); - //bool(* app_manager_app_context_cb)(app_context_h app_context, void *user_data) - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool AppInfoFilterCallback(IntPtr handle, IntPtr userData); - //bool(* app_info_filter_cb )(app_info_h app_info, void *user_data) - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool AppInfoMetadataCallback(string key, string value, IntPtr userData); - //bool(* app_info_metadata_cb )(const char *metadata_key, const char *metadata_value, void *user_data) - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool AppInfoCategoryCallback(string category, IntPtr userData); - //bool (*app_info_category_cb) (const char *category, void *user_data) - - internal delegate bool AppInfoResControlCallback(string resType, string minResVersion, string maxResVersion, string autoClose, IntPtr userUdata); - //bool (*app_info_res_control_cb) (const char *res_type, const char *min_res_version, const char *max_res_version, const char *auto_close, void *user_data); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_set_app_context_event_cb")] - internal static extern ErrorCode AppManagerSetAppContextEvent(AppManagerAppContextEventCallback callback, IntPtr userData); - //int app_manager_set_app_context_event_cb( app_manager_app_context_event_cb callback, void * user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_unset_app_context_event_cb")] - internal static extern void AppManagerUnSetAppContextEvent(); - //void app_manager_unset_app_context_event_cb (void); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_set_lifecycle_state_changed_cb")] - internal static extern ErrorCode AppManagerSetLifecycleStateChangedCb(AppManagerLifecycleStateChangedCallback callback, IntPtr userData); - //int app_manager_set_lifecycle_state_changed_cb(app_manager_lifecycle_state_changed_cb callback, void *user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_unset_lifecycle_state_changed_cb")] - internal static extern void AppManagerUnsetLifecycleStateChangedCb(); - //void app_manager_unset_lifecycle_state_changed_cb(void) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_add_lifecycle_state_changed_cb")] - internal static extern ErrorCode AppManagerAddLifecycleStateChangedCb( - AppManagerLifecycleStateChangedCallback callback, IntPtr userData, out IntPtr handle); - // int app_manager_add_lifecycle_state_changed_cb(app_manager_lifecycle_state_changed_cb callback, - // void *user_data, app_manager_lifecycle_noti_h *handle) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_remove_lifecycle_state_changed_cb")] - internal static extern ErrorCode AppManagerRemoveLifecycleStateChangedCb(IntPtr handle); - // int app_manager_remove_lifecycle_state_changed_cb(app_manager_lifecycle_noti_h handle) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_foreach_running_app_context")] - internal static extern ErrorCode AppManagerForeachRunningAppContext(AppManagerAppContextCallback callback, IntPtr userData); - //int app_manager_foreach_running_app_context(app_manager_app_context_cb callback, void *user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_foreach_app_context")] - internal static extern ErrorCode AppManagerForeachAppContext(AppManagerAppContextCallback callback, IntPtr userData); - //int app_manager_foreach_app_context(app_manager_app_context_cb callback, void *user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_context")] - internal static extern ErrorCode AppManagerGetAppContext(string applicationId, out IntPtr handle); - //int app_manager_get_app_context(const char* app_id, app_context_h *app_context); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_id")] - internal static extern ErrorCode AppManagerGetAppId(int processId, out string applicationId); - //int app_manager_get_app_id (pid_t pid, char **appid); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_is_running")] - internal static extern ErrorCode AppManagerIsRunning(string applicationId, out bool running); - //int app_manager_is_running (const char *appid, bool *running); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_resume_app")] - internal static extern ErrorCode AppManagerResumeApp(IntPtr handle); - //int app_manager_resume_app (app_context_h handle); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_request_terminate_bg_app")] - internal static extern ErrorCode AppManagerRequestTerminateBgApp(IntPtr handle); - //int app_manager_request_terminate_bg_app (app_context_h handle); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_foreach_app_info")] - internal static extern ErrorCode AppManagerForeachAppInfo(AppManagerAppInfoCallback callback, IntPtr userData); - //int app_manager_foreach_app_info(app_manager_app_info_cb callback, void *user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_info")] - internal static extern ErrorCode AppManagerGetAppInfo(string applicationId, out IntPtr handle); - //int app_manager_get_app_info(const char * app_id, app_info_h * app_info) - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_shared_data_path")] - internal static extern ErrorCode AppManagerGetSharedDataPath(string applicationId, out string path); - //int app_manager_get_shared_data_path (const char *appid, char **path); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_shared_resource_path")] - internal static extern ErrorCode AppManagerGetSharedResourcePath(string applicationId, out string path); - //int app_manager_get_shared_resource_path (const char *appid, char **path); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_shared_trusted_path")] - internal static extern ErrorCode AppManagerGetSharedTrustedPath(string applicationId, out string path); - //int app_manager_get_shared_trusted_path (const char *appid, char **path); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_common_shared_data_path")] - internal static extern ErrorCode AppManagerGetCommonSharedDataPath(string applicationId, out string path); - //int app_manager_get_common_shared_data_path (const char *appid, char **path); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_common_shared_trusted_path")] - internal static extern ErrorCode AppManagerGetCommonSharedTrustedPath(string applicationId, out string path); - //int app_manager_get_common_shared_trusted_path (const char *appid, char **path); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_external_shared_data_path")] - internal static extern ErrorCode AppManagerGetExternalSharedDataPath(string applicationId, out string path); - //int app_manager_get_external_shared_data_path (const char *appid, char **path); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_event_create")] - internal static extern ErrorCode AppManagerEventCreate(out IntPtr handle); - //int app_manager_event_create (app_manager_event_h *handle); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_event_set_status")] - internal static extern ErrorCode AppManagerEventSetStatus(IntPtr handle, AppManagerEventStatusType statusType); - //int app_manager_event_set_status (app_manager_event_h handle, int status_type); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_set_event_cb")] - internal static extern ErrorCode AppManagerSetEventCallback(IntPtr handle, AppManagerEventCallback callback, IntPtr userData); - //int app_manager_set_event_cb (app_manager_event_h handle, app_manager_event_cb callback, void *user_data); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_unset_event_cb")] - internal static extern ErrorCode AppManagerUnSetEventCallback(IntPtr handle); - //int app_manager_unset_event_cb (app_manager_event_h handle); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_event_destroy")] - internal static extern ErrorCode AppManagerEventDestroy(IntPtr handle); - //int app_manager_event_destroy (app_manager_event_h handle); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_terminate_app")] - internal static extern ErrorCode AppManagerTerminateApp(IntPtr handle); - //int app_manager_terminate_app (app_context_h app_context); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_terminate_app_without_restarting")] - internal static extern ErrorCode AppManagerTerminateAppWithoutRestarting(IntPtr handle); - //int app_manager_terminate_app_without_restarting (app_context_h app_context); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_context_by_instance_id")] - internal static extern ErrorCode AppManagerGetAppContextByInstanceId(string applicationId, string instanceId, out IntPtr handle); - //int app_manager_get_app_context_by_instance_id (const char *app_id, const char *instance_id, app_context_h *app_context); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_attach_window")] - internal static extern ErrorCode AppManagerAttachWindow(string parentAppId, string childAppId); - //int app_manager_attach_window(const char *parent_app_id, const char *child_app_id); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_detach_window")] - internal static extern ErrorCode AppManagerDetachWindow(string applicationId); - //int app_manager_detach_window(const char *app_id); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_attach_window_below")] - internal static extern ErrorCode AppManagerAttachWindowBelow(string parentAppId, string childAppId); - //int app_manager_attach_window_below(const char *parent_app_id, const char *child_app_id); - - [DllImport(Libraries.AppManager, EntryPoint = "app_manager_request_remount_subsession")] - internal static extern ErrorCode AppManagerRequestRemountSubsession(string subsessionId); - //int app_manager_request_remount_subsession(const char *subsession_id); - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_destroy")] - internal static extern ErrorCode AppContextDestroy(IntPtr handle); - //int app_context_destroy(app_context_h app_context) - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_get_app_id")] - internal static extern ErrorCode AppContextGetAppId(IntPtr handle, out string applicationId); - //int app_context_get_app_id(app_context_h app_context, char **app_id) - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_get_package_id")] - internal static extern ErrorCode AppContextGetPackageId(IntPtr handle, out string packageId); - //int app_context_get_package_id(app_context_h app_context, char **package_id) - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_get_pid")] - internal static extern ErrorCode AppContextGetPid(IntPtr handle, out int processId); - //int app_context_get_pid (app_context_h app_context, pid_t *pid) - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_get_app_state")] - internal static extern ErrorCode AppContextGetAppState(IntPtr handle, out int state); - //int app_context_get_app_state (app_context_h app_context, app_state_e *state) - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_is_terminated")] - internal static extern ErrorCode AppContextIsTerminated(IntPtr handle, out bool terminated); - //int app_context_is_terminated (app_context_h app_context, bool *terminated); - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_is_equal")] - internal static extern ErrorCode AppContextIsEqual(IntPtr first, IntPtr second, out bool equal); - //int app_context_is_equal (app_context_h lhs, app_context_h rhs, bool *equal); - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_is_sub_app")] - internal static extern ErrorCode AppContextIsSubApp(IntPtr handle, out bool is_sub_app); - //int app_context_is_sub_app (app_context_h app_context, bool *is_sub_app); - - [DllImport(Libraries.AppManager, EntryPoint = "app_context_clone")] - internal static extern ErrorCode AppContextClone(out IntPtr destination, IntPtr source); - //int app_context_clone (app_context_h *clone, app_context_h app_context); - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_create")] - internal static extern ErrorCode AppInfoCreate(string applicationId, out IntPtr handle); - //int app_info_create (const char *app_id, app_info_h *app_info); - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_destroy")] - internal static extern ErrorCode AppInfoDestroy(IntPtr handle); - //int app_info_destroy (app_info_h app_info); - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_app_id")] - internal static extern ErrorCode AppInfoGetAppId(IntPtr handle, out string applicationId); - //int app_info_get_app_id (app_info_h app_info, char **app_id); - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_exec")] - internal static extern ErrorCode AppInfoGetExec(IntPtr handle, out string exec); - //int app_info_get_exec (app_info_h app_info, char **exec); - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_label")] - internal static extern ErrorCode AppInfoGetLabel(IntPtr handle, out string label); - //int app_info_get_label (app_info_h app_info, char **label); - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_localed_label")] - internal static extern ErrorCode AppInfoGetLocaledLabel(string applicationId, string locale, out string label); - //int app_info_get_localed_label (const char *app_id, const char *locale, char **label); - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_icon")] - internal static extern ErrorCode AppInfoGetIcon(IntPtr handle, out string path); - //int app_info_get_icon (app_info_h app_info, char **path) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_package")] - internal static extern ErrorCode AppInfoGetPackage(IntPtr handle, out string package); - //int app_info_get_package (app_info_h app_info, char **package) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_type")] - internal static extern ErrorCode AppInfoGetType(IntPtr handle, out string type); - //int app_info_get_type (app_info_h app_info, char **type) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_app_component_type")] - internal static extern ErrorCode AppInfoGetAppComponentType(IntPtr handle, out AppInfoAppComponentType type); - //int app_info_get_app_component_type(app_info_h app_info, app_info_app_component_type_e *type) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_foreach_metadata")] - internal static extern ErrorCode AppInfoForeachMetadata(IntPtr handle, AppInfoMetadataCallback callback, IntPtr userData); - //int app_info_foreach_metadata(app_info_h app_info, app_info_metadata_cb callback, void *user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_nodisplay")] - internal static extern ErrorCode AppInfoIsNodisplay(IntPtr handle, out bool noDisplay); - //int app_info_is_nodisplay (app_info_h app_info, bool *nodisplay) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_equal")] - internal static extern ErrorCode AppInfoIsEqual(IntPtr first, IntPtr second, out bool equal); - //int app_info_is_equal (app_info_h lhs, app_info_h rhs, bool *equal) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_enabled")] - internal static extern ErrorCode AppInfoIsEnabled(IntPtr handle, out bool enabled); - //int app_info_is_enabled (app_info_h app_info, bool *enabled) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_onboot")] - internal static extern ErrorCode AppInfoIsOnBoot(IntPtr handle, out bool onBoot); - //int app_info_is_onboot (app_info_h app_info, bool *onboot) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_preload")] - internal static extern ErrorCode AppInfoIsPreLoad(IntPtr handle, out bool preLoaded); - //int app_info_is_preload (app_info_h app_info, bool *preload) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_clone")] - internal static extern ErrorCode AppInfoClone(out IntPtr destination, IntPtr source); - //int app_info_clone(app_info_h * clone, app_info_h app_info) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_foreach_category")] - internal static extern ErrorCode AppInfoForeachCategory(IntPtr handle, AppInfoCategoryCallback callback, IntPtr userData); - //int app_info_foreach_category(app_info_h app_info, app_info_category_cb callback, void *user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_create")] - internal static extern ErrorCode AppInfoFilterCreate(out IntPtr handle); - //int app_info_filter_create(app_info_filter_h * handle) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_destroy")] - internal static extern ErrorCode AppInfoFilterDestroy(IntPtr handle); - //int app_info_filter_destroy(app_info_filter_h handle) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_add_bool")] - internal static extern ErrorCode AppInfoFilterAddBool(IntPtr handle, string property, bool value); - //int app_info_filter_add_bool(app_info_filter_h handle, const char *property, const bool value) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_add_string")] - internal static extern ErrorCode AppInfoFilterAddString(IntPtr handle, string property, string value); - //int app_info_filter_add_string(app_info_filter_h handle, const char *property, const char *value) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_count_appinfo")] - internal static extern ErrorCode AppInfoFilterCountAppinfo(IntPtr handle, out int count); - //int app_info_filter_count_appinfo(app_info_filter_h handle, int *count) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_foreach_appinfo")] - internal static extern ErrorCode AppInfoFilterForeachAppinfo(IntPtr handle, AppInfoFilterCallback callback, IntPtr userData); - //int app_info_filter_foreach_appinfo(app_info_filter_h handle, app_info_filter_cb callback, void * user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_create")] - internal static extern ErrorCode AppInfoMetadataFilterCreate(out IntPtr handle); - //int app_info_metadata_filter_create (app_info_metadata_filter_h *handle) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_destroy")] - internal static extern ErrorCode AppInfoMetadataFilterDestroy(IntPtr handle); - //int app_info_metadata_filter_destroy (app_info_metadata_filter_h handle) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_add")] - internal static extern ErrorCode AppInfoMetadataFilterAdd(IntPtr handle, string key, string value); - //int app_info_metadata_filter_add (app_info_metadata_filter_h handle, const char *key, const char *value) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_foreach")] - internal static extern ErrorCode AppInfoMetadataFilterForeach(IntPtr handle, AppInfoFilterCallback callback, IntPtr userData); - //int app_info_metadata_filter_foreach (app_info_metadata_filter_h handle, app_info_filter_cb callback, void *user_data) - - [DllImport(Libraries.AppManager, EntryPoint = "app_info_foreach_res_control")] - internal static extern ErrorCode AppInfoForeachResControl(IntPtr handle, AppInfoResControlCallback callback, IntPtr userData); } -} + +} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.BaseUtilsi18n.cs b/src/Tizen.Applications.Team/Interop/Interop.BaseUtilsi18n.cs deleted file mode 100644 index 1bf2e6b9c32..00000000000 --- a/src/Tizen.Applications.Team/Interop/Interop.BaseUtilsi18n.cs +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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 System.Runtime.InteropServices; -using System.Text; - -internal static partial class Interop -{ - internal static partial class BaseUtilsi18n - { - [DllImport(Libraries.BaseUtilsi18n, EntryPoint = "i18n_ulocale_canonicalize")] - internal static extern Int32 Canonicalize(string localeID, [Out] StringBuilder name, Int32 nameCapacity); - // int32_t i18n_ulocale_canonicalize(const char *locale_id, char *name, int32_t name_capacity); - - [DllImport(Libraries.BaseUtilsi18n, EntryPoint = "i18n_ulocale_get_language")] - internal static extern int GetLanguage(string localeID, [Out] StringBuilder language, Int32 languageCapacity, out int bufSizeLanguage); - // int i18n_ulocale_get_language(const char *locale_id, char *language, int32_t language_capacity, int32_t *buf_size_language); - - [DllImport(Libraries.BaseUtilsi18n, EntryPoint = "i18n_ulocale_get_script")] - internal static extern Int32 GetScript(string localeID, [Out] StringBuilder script, Int32 scriptCapacity); - // int32_t i18n_ulocale_get_script(const char *locale_id, char *script, int32_t script_capacity); - - [DllImport(Libraries.BaseUtilsi18n, EntryPoint = "i18n_ulocale_get_country")] - internal static extern Int32 GetCountry(string localeID, [Out] StringBuilder country, Int32 countryCapacity, out int err); - // int32_t i18n_ulocale_get_country(const char *locale_id, char *country, int32_t country_capacity, int *error); - - [DllImport(Libraries.BaseUtilsi18n, EntryPoint = "i18n_ulocale_get_variant")] - internal static extern Int32 GetVariant(string localeID, [Out] StringBuilder variant, Int32 variantCapacity); - // int32_t i18n_ulocale_get_variant(const char *locale_id, char *variant, int32_t variant_capacity); - - [DllImport(Libraries.BaseUtilsi18n, EntryPoint = "i18n_ulocale_get_lcid")] - internal static extern UInt32 GetLCID(string localeID); - // uint32_t i18n_ulocale_get_lcid(const char *locale_id); - - [DllImport(Libraries.BaseUtilsi18n, EntryPoint = "i18n_ulocale_get_default")] - internal static extern int GetDefault(out IntPtr localeID); - // int i18n_ulocale_get_default(const char **locale); - } -} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.Glib.cs b/src/Tizen.Applications.Team/Interop/Interop.Glib.cs deleted file mode 100644 index 79e4cbc98cf..00000000000 --- a/src/Tizen.Applications.Team/Interop/Interop.Glib.cs +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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.Runtime.InteropServices; - -internal static partial class Interop -{ - internal static partial class Glib - { - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool GSourceFunc(IntPtr userData); - - [DllImport(Libraries.Glib, EntryPoint = "g_idle_source_new", CallingConvention = CallingConvention.Cdecl)] - internal static extern IntPtr IdleSourceNew(); - - [DllImport(Libraries.Glib, EntryPoint = "g_source_set_callback", CallingConvention = CallingConvention.Cdecl)] - internal static extern void SourceSetCallback(IntPtr source, GSourceFunc func, IntPtr data, IntPtr notify); - - [DllImport(Libraries.Glib, EntryPoint = "g_source_attach", CallingConvention = CallingConvention.Cdecl)] - internal static extern uint SourceAttach(IntPtr source, IntPtr context); - - [DllImport(Libraries.Glib, EntryPoint = "g_source_unref", CallingConvention = CallingConvention.Cdecl)] - internal static extern void SourceUnref(IntPtr source); - } -} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.IniParser.cs b/src/Tizen.Applications.Team/Interop/Interop.IniParser.cs deleted file mode 100644 index 7173a2ee185..00000000000 --- a/src/Tizen.Applications.Team/Interop/Interop.IniParser.cs +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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.Runtime.InteropServices; - -internal static partial class Interop -{ - internal static partial class LibIniParser - { - [DllImport(Libraries.IniParser, EntryPoint = "iniparser_getstring", CallingConvention = CallingConvention.Cdecl)] - internal static extern IntPtr GetString(IntPtr d, string key, IntPtr def); - - [DllImport(Libraries.IniParser, EntryPoint = "iniparser_load", CallingConvention = CallingConvention.Cdecl)] - internal static extern IntPtr Load(string iniName); - - [DllImport(Libraries.IniParser, EntryPoint = "iniparser_freedict", CallingConvention = CallingConvention.Cdecl)] - internal static extern void FreeDict(IntPtr d); - } -} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.Libc.cs b/src/Tizen.Applications.Team/Interop/Interop.Libc.cs deleted file mode 100644 index e7609f1f25d..00000000000 --- a/src/Tizen.Applications.Team/Interop/Interop.Libc.cs +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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.Runtime.InteropServices; - -internal static partial class Interop -{ - internal static partial class Libc - { - [DllImport(Libraries.Libc, EntryPoint = "getenv")] - internal static extern IntPtr GetEnvironmentVariable(string name); - } -} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.Libraries.cs b/src/Tizen.Applications.Team/Interop/Interop.Libraries.cs index c049ed10861..c1328c2d382 100755 --- a/src/Tizen.Applications.Team/Interop/Interop.Libraries.cs +++ b/src/Tizen.Applications.Team/Interop/Interop.Libraries.cs @@ -14,15 +14,14 @@ * limitations under the License. */ -internal static partial class Interop -{ - internal static partial class Libraries +namespace Tizen.Applications { + internal static partial class Interop { - public const string TeamLib = "libteam-application.so.1"; - public const string Glib = "libglib-2.0.so.0"; - public const string Libc = "libc.so.6"; - public const string BaseUtilsi18n = "libbase-utils-i18n.so.0"; - public const string IniParser = "libiniparser.so.1"; - public const string AppManager = "libcapi-appfw-app-manager.so.0"; + internal static partial class Libraries + { + public const string TeamLib = "libteam-application.so.1"; + public const string AppManager = "libcapi-appfw-app-manager.so.0"; + } } -} + +} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.TeamLoop.cs b/src/Tizen.Applications.Team/Interop/Interop.TeamLoop.cs index 6a1119295a6..41275ed761a 100644 --- a/src/Tizen.Applications.Team/Interop/Interop.TeamLoop.cs +++ b/src/Tizen.Applications.Team/Interop/Interop.TeamLoop.cs @@ -18,46 +18,43 @@ using System.Runtime.InteropServices; using Tizen.Internals; -internal static partial class Interop -{ - internal static partial class TeamLoop +namespace Tizen.Applications { + internal static partial class Interop { - internal delegate IntPtr TeamLoopOpsLoad([MarshalAs(UnmanagedType.LPStr)] string path); - - internal delegate void TeamLoopOpsUnload(IntPtr loadObj); - - internal delegate IntPtr TeamLoopOpsCreateArgs(IntPtr loadObj); + internal static partial class TeamLoop + { + internal delegate IntPtr TeamLoopOpsLoad([MarshalAs(UnmanagedType.LPStr)] string path); - internal delegate void TeamLoopOpsCreateLibPath([MarshalAs(UnmanagedType.LPStr)] string path, ref IntPtr output); + internal delegate void TeamLoopOpsUnload(IntPtr loadObj); - internal delegate void TeamLoopOpsOnLoopCreate(); + internal delegate IntPtr TeamLoopOpsCreateArgs(IntPtr loadObj); - internal delegate void TeamLoopOpsOnLoopTerminate(); + internal delegate void TeamLoopOpsOnLoopCreate(); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_main")] - internal static extern int Main(int argc, string[] argv, TeamLoopOperations ops); + internal delegate void TeamLoopOpsOnLoopTerminate(); - [NativeStruct("team_launcher_operation_s", Include="team_common.h", PkgConfig="team-application")] - [StructLayout(LayoutKind.Sequential)] - internal struct TeamLoopOperations - { - [MarshalAs(UnmanagedType.FunctionPtr)] - public TeamLoopOpsLoad Load; + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_main")] + internal static extern int Main(int argc, string[] argv, TeamLoopOperations ops); - [MarshalAs(UnmanagedType.FunctionPtr)] - public TeamLoopOpsUnload Unload; + [NativeStruct("team_launcher_operation_s", Include="team_common.h", PkgConfig="team-application")] + [StructLayout(LayoutKind.Sequential)] + internal struct TeamLoopOperations + { + [MarshalAs(UnmanagedType.FunctionPtr)] + public TeamLoopOpsLoad Load; - [MarshalAs(UnmanagedType.FunctionPtr)] - public TeamLoopOpsCreateArgs CreateArgs; + [MarshalAs(UnmanagedType.FunctionPtr)] + public TeamLoopOpsUnload Unload; - [MarshalAs(UnmanagedType.FunctionPtr)] - public TeamLoopOpsCreateLibPath CreateLibPath; + [MarshalAs(UnmanagedType.FunctionPtr)] + public TeamLoopOpsCreateArgs CreateArgs; - [MarshalAs(UnmanagedType.FunctionPtr)] - public TeamLoopOpsOnLoopCreate OnLoopCreate; + [MarshalAs(UnmanagedType.FunctionPtr)] + public TeamLoopOpsOnLoopCreate OnLoopCreate; - [MarshalAs(UnmanagedType.FunctionPtr)] - public TeamLoopOpsOnLoopTerminate OnLoopTerminate; + [MarshalAs(UnmanagedType.FunctionPtr)] + public TeamLoopOpsOnLoopTerminate OnLoopTerminate; + } } } } \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.TeamManager.cs b/src/Tizen.Applications.Team/Interop/Interop.TeamManager.cs index a4663a1da20..c5908dca27b 100644 --- a/src/Tizen.Applications.Team/Interop/Interop.TeamManager.cs +++ b/src/Tizen.Applications.Team/Interop/Interop.TeamManager.cs @@ -19,100 +19,103 @@ using Tizen.Internals; using Tizen.Internals.Errors; -internal static partial class Interop -{ - internal static partial class TeamManager + +namespace Tizen.Applications { + internal static partial class Interop { - internal enum TeamAppErrorCode + internal static partial class TeamManager { - None = ErrorCode.None, - InvalidParameter = ErrorCode.InvalidParameter, - OutOfMemory = ErrorCode.OutOfMemory, - InvalidContext = -0x01100000 | 0x01, - AlreadyExist = ErrorCode.FileExists, - AlreadyRunning = ErrorCode.AlreadyInProgress, - NoSuchMember = ErrorCode.NoSuchFile, - IOError = ErrorCode.IoError, - NotSupported = ErrorCode.NotSupported, - } + internal enum TeamAppErrorCode + { + None = ErrorCode.None, + InvalidParameter = ErrorCode.InvalidParameter, + OutOfMemory = ErrorCode.OutOfMemory, + InvalidContext = -0x01100000 | 0x01, + AlreadyExist = ErrorCode.FileExists, + AlreadyRunning = ErrorCode.AlreadyInProgress, + NoSuchMember = ErrorCode.NoSuchFile, + IOError = ErrorCode.IoError, + NotSupported = ErrorCode.NotSupported, + } - [DllImport(Libraries.TeamLib, EntryPoint = "create_wl2_window_by_id")] - internal static extern IntPtr CreateWl2WindowById(int wl2WinId); + [DllImport(Libraries.TeamLib, EntryPoint = "create_wl2_window_by_id")] + internal static extern IntPtr CreateWl2WindowById(int wl2WinId); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_data_path")] - internal static extern TeamAppErrorCode TeamAppGetDataPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_data_path")] + internal static extern TeamAppErrorCode TeamAppGetDataPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_cache_path")] - internal static extern TeamAppErrorCode TeamAppGetCachePath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_cache_path")] + internal static extern TeamAppErrorCode TeamAppGetCachePath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_resource_path")] - internal static extern TeamAppErrorCode TeamAppGetResourcePath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_resource_path")] + internal static extern TeamAppErrorCode TeamAppGetResourcePath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_tep_resource_path")] - internal static extern TeamAppErrorCode TeamAppGetTepResourcePath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_tep_resource_path")] + internal static extern TeamAppErrorCode TeamAppGetTepResourcePath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_shared_data_path")] - internal static extern TeamAppErrorCode TeamAppGetSharedDataPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_shared_data_path")] + internal static extern TeamAppErrorCode TeamAppGetSharedDataPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_shared_resource_path")] - internal static extern TeamAppErrorCode TeamAppGetSharedResourcePath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_shared_resource_path")] + internal static extern TeamAppErrorCode TeamAppGetSharedResourcePath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_shared_trusted_path")] - internal static extern TeamAppErrorCode TeamAppGetSharedTrustedPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_shared_trusted_path")] + internal static extern TeamAppErrorCode TeamAppGetSharedTrustedPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_res_control_allowed_path")] - internal static extern TeamAppErrorCode TeamAppGetResControlAllowedPath(IntPtr memberHandle, string resType, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_res_control_allowed_path")] + internal static extern TeamAppErrorCode TeamAppGetResControlAllowedPath(IntPtr memberHandle, string resType, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_res_control_global_path")] - internal static extern TeamAppErrorCode TeamAppGetResControlGlobalPath(IntPtr memberHandle, string resType, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_res_control_global_path")] + internal static extern TeamAppErrorCode TeamAppGetResControlGlobalPath(IntPtr memberHandle, string resType, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_data_path")] - internal static extern TeamAppErrorCode TeamAppGetCommonDataPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_data_path")] + internal static extern TeamAppErrorCode TeamAppGetCommonDataPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_cache_path")] - internal static extern TeamAppErrorCode TeamAppGetCommonCachePath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_cache_path")] + internal static extern TeamAppErrorCode TeamAppGetCommonCachePath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_shared_data_path")] - internal static extern TeamAppErrorCode TeamAppGetCommonSharedDataPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_shared_data_path")] + internal static extern TeamAppErrorCode TeamAppGetCommonSharedDataPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_shared_trusted_path")] - internal static extern TeamAppErrorCode TeamAppGetCommonSharedTrustedPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_common_shared_trusted_path")] + internal static extern TeamAppErrorCode TeamAppGetCommonSharedTrustedPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_app_id")] - internal static extern TeamAppErrorCode TeamAppGetAppId(IntPtr memberHandle, out string appId); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_app_id")] + internal static extern TeamAppErrorCode TeamAppGetAppId(IntPtr memberHandle, out string appId); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_package_id")] - internal static extern TeamAppErrorCode TeamAppGetPackageId(IntPtr memberHandle, out string packageId); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_package_id")] + internal static extern TeamAppErrorCode TeamAppGetPackageId(IntPtr memberHandle, out string packageId); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_instance_id")] - internal static extern TeamAppErrorCode TeamAppGetInstanceId(IntPtr memberHandle, out string instId); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_instance_id")] + internal static extern TeamAppErrorCode TeamAppGetInstanceId(IntPtr memberHandle, out string instId); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_app_instance_id")] - internal static extern TeamAppErrorCode TeamAppGetAppInstanceId(IntPtr memberHandle, out string appInstId); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_app_instance_id")] + internal static extern TeamAppErrorCode TeamAppGetAppInstanceId(IntPtr memberHandle, out string appInstId); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_name")] - internal static extern TeamAppErrorCode TeamAppGetName(IntPtr memberHandle, out string name); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_name")] + internal static extern TeamAppErrorCode TeamAppGetName(IntPtr memberHandle, out string name); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_version")] - internal static extern TeamAppErrorCode TeamAppGetVersion(IntPtr memberHandle, out string version); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_version")] + internal static extern TeamAppErrorCode TeamAppGetVersion(IntPtr memberHandle, out string version); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_extern_data_path")] - internal static extern TeamAppErrorCode TeamAppGetExternDataPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_extern_data_path")] + internal static extern TeamAppErrorCode TeamAppGetExternDataPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_extern_cache_path")] - internal static extern TeamAppErrorCode TeamAppGetExternCachePath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_extern_cache_path")] + internal static extern TeamAppErrorCode TeamAppGetExternCachePath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_extern_shared_data_path")] - internal static extern TeamAppErrorCode TeamAppGetExternSharedDataPath(IntPtr memberHandle, out string path); + [DllImport(Libraries.TeamLib, EntryPoint = "team_app_get_extern_shared_data_path")] + internal static extern TeamAppErrorCode TeamAppGetExternSharedDataPath(IntPtr memberHandle, out string path); - [DllImport(Libraries.TeamLib, EntryPoint = "invoke_view_visibility_event")] - internal static extern void InvokeViewVisibilityEvent(int viewId, bool visible); + [DllImport(Libraries.TeamLib, EntryPoint = "invoke_view_visibility_event")] + internal static extern void InvokeViewVisibilityEvent(int viewId, bool visible); - [DllImport(Libraries.TeamLib, EntryPoint = "create_view_by_view_id")] - internal static extern IntPtr CreateViewByViewId(int viewId); + [DllImport(Libraries.TeamLib, EntryPoint = "create_view_by_view_id")] + internal static extern IntPtr CreateViewByViewId(int viewId); - [DllImport(Libraries.TeamLib, EntryPoint = "destroy_view_by_view_id")] - internal static extern void DestroyViewByViewId(int viewId); + [DllImport(Libraries.TeamLib, EntryPoint = "destroy_view_by_view_id")] + internal static extern void DestroyViewByViewId(int viewId); + } } -} +} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/Interop/Interop.TeamMember.cs b/src/Tizen.Applications.Team/Interop/Interop.TeamMember.cs index d99752fa8ab..1ba489fe01b 100644 --- a/src/Tizen.Applications.Team/Interop/Interop.TeamMember.cs +++ b/src/Tizen.Applications.Team/Interop/Interop.TeamMember.cs @@ -18,93 +18,95 @@ using System.Runtime.InteropServices; using Tizen.Internals; -internal static partial class Interop -{ - internal static partial class TeamMember +namespace Tizen.Applications { + internal static partial class Interop { - internal delegate void AppTerminateCallback(IntPtr context, IntPtr userdata); - internal delegate void AppControlCallback(IntPtr context, IntPtr appControl, IntPtr userdata); - internal delegate void AppResumeCallback(IntPtr context, IntPtr userdata); - internal delegate void AppPauseCallback(IntPtr context, IntPtr userdata); - internal delegate void AppLowMemoryCallback(IntPtr context, int status, IntPtr userdata); - internal delegate void AppLowBatteryCallback(IntPtr context, int status, IntPtr userdata); - internal delegate void AppLanguageChangedCallback(IntPtr context, - [MarshalAs(UnmanagedType.LPStr)] string language, IntPtr userdata); - internal delegate void AppDeviceOrientationChangedCallback(IntPtr context, int status, IntPtr userdata); - internal delegate void AppRegionFormatChangedCallback(IntPtr context, - [MarshalAs(UnmanagedType.LPStr)] string region, IntPtr userdata); - internal delegate void AppSuspendStateChangedCallback(IntPtr context, int status, IntPtr userdata); - internal delegate void AppTimeZoneChangedCallback(IntPtr context, - [MarshalAs(UnmanagedType.LPStr)] string timeZone, - [MarshalAs(UnmanagedType.LPStr)] string timeZoneId, - IntPtr userdata); - internal delegate IntPtr UIAppCreateCallback(IntPtr context, IntPtr userdata); - internal delegate IntPtr ViewAppCreateCallback(IntPtr context, IntPtr userdata); - internal delegate bool ServiceAppCreateCallback(IntPtr context, IntPtr userdata); - [StructLayout(LayoutKind.Sequential)] - internal struct UIMemberLifecycleCallbacks + internal static partial class TeamMember { - public UIAppCreateCallback Create; - public AppTerminateCallback Terminate; - public AppControlCallback Control; - public AppResumeCallback Resume; - public AppPauseCallback Pause; - public AppLowMemoryCallback LowMemory; - public AppLowBatteryCallback LowBattery; - public AppLanguageChangedCallback LanguageChanged; - public AppDeviceOrientationChangedCallback DeviceOrientationChanged; - public AppRegionFormatChangedCallback RegionFormatChanged; - public AppSuspendStateChangedCallback SuspendStateChanged; - public AppTimeZoneChangedCallback TimezoneChanged; - } - [StructLayout(LayoutKind.Sequential)] - internal struct ServiceMemberLifecycleCallbacks - { - public ServiceAppCreateCallback Create; - public AppTerminateCallback Terminate; - public AppControlCallback Control; - public AppLowMemoryCallback LowMemory; - public AppLowBatteryCallback LowBattery; - public AppLanguageChangedCallback LanguageChanged; - public AppDeviceOrientationChangedCallback DeviceOrientationChanged; - public AppRegionFormatChangedCallback RegionFormatChanged; - public AppSuspendStateChangedCallback SuspendStateChanged; - public AppTimeZoneChangedCallback TimezoneChanged; - } + internal delegate void AppTerminateCallback(IntPtr context, IntPtr userdata); + internal delegate void AppControlCallback(IntPtr context, IntPtr appControl, IntPtr userdata); + internal delegate void AppResumeCallback(IntPtr context, IntPtr userdata); + internal delegate void AppPauseCallback(IntPtr context, IntPtr userdata); + internal delegate void AppLowMemoryCallback(IntPtr context, int status, IntPtr userdata); + internal delegate void AppLowBatteryCallback(IntPtr context, int status, IntPtr userdata); + internal delegate void AppLanguageChangedCallback(IntPtr context, + [MarshalAs(UnmanagedType.LPStr)] string language, IntPtr userdata); + internal delegate void AppDeviceOrientationChangedCallback(IntPtr context, int status, IntPtr userdata); + internal delegate void AppRegionFormatChangedCallback(IntPtr context, + [MarshalAs(UnmanagedType.LPStr)] string region, IntPtr userdata); + internal delegate void AppSuspendStateChangedCallback(IntPtr context, int status, IntPtr userdata); + internal delegate void AppTimeZoneChangedCallback(IntPtr context, + [MarshalAs(UnmanagedType.LPStr)] string timeZone, + [MarshalAs(UnmanagedType.LPStr)] string timeZoneId, + IntPtr userdata); + internal delegate IntPtr UIAppCreateCallback(IntPtr context, IntPtr userdata); + internal delegate IntPtr ViewAppCreateCallback(IntPtr context, IntPtr userdata); + internal delegate bool ServiceAppCreateCallback(IntPtr context, IntPtr userdata); + [StructLayout(LayoutKind.Sequential)] + internal struct UIMemberLifecycleCallbacks + { + public UIAppCreateCallback Create; + public AppTerminateCallback Terminate; + public AppControlCallback Control; + public AppResumeCallback Resume; + public AppPauseCallback Pause; + public AppLowMemoryCallback LowMemory; + public AppLowBatteryCallback LowBattery; + public AppLanguageChangedCallback LanguageChanged; + public AppDeviceOrientationChangedCallback DeviceOrientationChanged; + public AppRegionFormatChangedCallback RegionFormatChanged; + public AppSuspendStateChangedCallback SuspendStateChanged; + public AppTimeZoneChangedCallback TimezoneChanged; + } + [StructLayout(LayoutKind.Sequential)] + internal struct ServiceMemberLifecycleCallbacks + { + public ServiceAppCreateCallback Create; + public AppTerminateCallback Terminate; + public AppControlCallback Control; + public AppLowMemoryCallback LowMemory; + public AppLowBatteryCallback LowBattery; + public AppLanguageChangedCallback LanguageChanged; + public AppDeviceOrientationChangedCallback DeviceOrientationChanged; + public AppRegionFormatChangedCallback RegionFormatChanged; + public AppSuspendStateChangedCallback SuspendStateChanged; + public AppTimeZoneChangedCallback TimezoneChanged; + } - [DllImport(Libraries.TeamLib, EntryPoint = "team_ui_app_teamup")] - internal static extern IntPtr UIMemberTeamup(UIMemberLifecycleCallbacks callbacks, IntPtr userdata); + [DllImport(Libraries.TeamLib, EntryPoint = "team_ui_app_teamup")] + internal static extern IntPtr UIMemberTeamup(UIMemberLifecycleCallbacks callbacks, IntPtr userdata); - [DllImport(Libraries.TeamLib, EntryPoint = "team_ui_app_quit")] - internal static extern void UIMemberQuit(IntPtr member); + [DllImport(Libraries.TeamLib, EntryPoint = "team_ui_app_quit")] + internal static extern void UIMemberQuit(IntPtr member); - [DllImport(Libraries.TeamLib, EntryPoint = "team_service_app_teamup")] - internal static extern IntPtr ServiceMemberTeamup(ServiceMemberLifecycleCallbacks callbacks, IntPtr userdata); + [DllImport(Libraries.TeamLib, EntryPoint = "team_service_app_teamup")] + internal static extern IntPtr ServiceMemberTeamup(ServiceMemberLifecycleCallbacks callbacks, IntPtr userdata); - [DllImport(Libraries.TeamLib, EntryPoint = "team_service_app_quit")] - internal static extern void ServiceMemberQuit(IntPtr member); + [DllImport(Libraries.TeamLib, EntryPoint = "team_service_app_quit")] + internal static extern void ServiceMemberQuit(IntPtr member); - [StructLayout(LayoutKind.Sequential)] - internal struct ViewMemberLifecycleCallbacks - { - public ViewAppCreateCallback Create; - public AppTerminateCallback Terminate; - public AppControlCallback Control; - public AppResumeCallback Resume; - public AppPauseCallback Pause; - public AppLowMemoryCallback LowMemory; - public AppLowBatteryCallback LowBattery; - public AppLanguageChangedCallback LanguageChanged; - public AppDeviceOrientationChangedCallback DeviceOrientationChanged; - public AppRegionFormatChangedCallback RegionFormatChanged; - public AppSuspendStateChangedCallback SuspendStateChanged; - public AppTimeZoneChangedCallback TimezoneChanged; - } + [StructLayout(LayoutKind.Sequential)] + internal struct ViewMemberLifecycleCallbacks + { + public ViewAppCreateCallback Create; + public AppTerminateCallback Terminate; + public AppControlCallback Control; + public AppResumeCallback Resume; + public AppPauseCallback Pause; + public AppLowMemoryCallback LowMemory; + public AppLowBatteryCallback LowBattery; + public AppLanguageChangedCallback LanguageChanged; + public AppDeviceOrientationChangedCallback DeviceOrientationChanged; + public AppRegionFormatChangedCallback RegionFormatChanged; + public AppSuspendStateChangedCallback SuspendStateChanged; + public AppTimeZoneChangedCallback TimezoneChanged; + } - [DllImport(Libraries.TeamLib, EntryPoint = "team_view_app_teamup")] - internal static extern IntPtr ViewMemberTeamup(ViewMemberLifecycleCallbacks callbacks, IntPtr userdata); + [DllImport(Libraries.TeamLib, EntryPoint = "team_view_app_teamup")] + internal static extern IntPtr ViewMemberTeamup(ViewMemberLifecycleCallbacks callbacks, IntPtr userdata); - [DllImport(Libraries.TeamLib, EntryPoint = "team_view_app_quit")] - internal static extern void ViewMemberQuit(IntPtr member); + [DllImport(Libraries.TeamLib, EntryPoint = "team_view_app_quit")] + internal static extern void ViewMemberQuit(IntPtr member); + } } -} +} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/ResourceControl.cs b/src/Tizen.Applications.Team/ResourceControl.cs deleted file mode 100644 index 070070d02a7..00000000000 --- a/src/Tizen.Applications.Team/ResourceControl.cs +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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 System.ComponentModel; -using System.Text; - -namespace Tizen.Applications -{ - /// - /// Represents the resource control information for a Team application. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public class ResourceControl - { - internal ResourceControl(string resourceType, string minResourceVersion, string maxResourceVersion, bool isAutoClose) - { - ResourceType = resourceType; - MinResourceVersion = minResourceVersion ?? null; - MaxResourceVersion = maxResourceVersion ?? null; - IsAutoClose = isAutoClose; - } - - /// - /// Gets the resource type. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public string ResourceType { get; } - - /// - /// Gets the minimum version of the required resource package. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public string MinResourceVersion { get; } - - /// - /// Gets the maximum version of the required resource package. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public string MaxResourceVersion { get; } - - /// - /// Gets a value indicating whether the resource is auto-closed. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public bool IsAutoClose { get; } - } -} diff --git a/src/Tizen.Applications.Team/SystemLocaleConverter.cs b/src/Tizen.Applications.Team/SystemLocaleConverter.cs deleted file mode 100644 index 72d710622cc..00000000000 --- a/src/Tizen.Applications.Team/SystemLocaleConverter.cs +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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 System.Globalization; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; - -namespace Tizen.Applications -{ - /// - /// Converts Tizen system locale strings into values with ICU fallback. - /// - internal class SystemLocaleConverter - { - private static readonly string LogTag = "DN_TAM"; - public SystemLocaleConverter() - { - } - - public CultureInfo Convert(string locale) - { - ULocale pLocale = new ULocale(locale); - string cultureName = CultureInfoHelper.GetCultureName(pLocale.Locale.Replace("_", "-")); - - if (!string.IsNullOrEmpty(cultureName)) - { - try - { - return new CultureInfo(cultureName); - } - catch (CultureNotFoundException) - { - Log.Error(LogTag, "CultureNotFoundException occurs. CultureName: " + cultureName); - } - } - - try - { - return new CultureInfo(pLocale.LCID); - } - catch (ArgumentOutOfRangeException) - { - return GetFallback(pLocale); - } - catch (CultureNotFoundException) - { - return GetFallback(pLocale); - } - } - - public string Convert(CultureInfo cultureInfo) - { - if (cultureInfo == null || string.IsNullOrEmpty(cultureInfo.Name)) - { - return string.Empty; - } - return $"{cultureInfo.Name.Replace("-", "_")}.UTF-8"; - } - - private CultureInfo GetFallback(ULocale uLocale) - { - CultureInfo fallbackCultureInfo = null; - string locale = string.Empty; - - if (uLocale.Locale != null) - { - locale = uLocale.Locale.Replace("_", "-"); - fallbackCultureInfo = GetCultureInfo(locale); - } - - if (fallbackCultureInfo == null && uLocale.Language != null && uLocale.Script != null && uLocale.Country != null) - { - locale = uLocale.Language + "-" + uLocale.Script + "-" + uLocale.Country; - fallbackCultureInfo = GetCultureInfo(locale); - } - - if (fallbackCultureInfo == null && uLocale.Language != null && uLocale.Script != null) - { - locale = uLocale.Language + "-" + uLocale.Script; - fallbackCultureInfo = GetCultureInfo(locale); - } - - if (fallbackCultureInfo == null && uLocale.Language != null && uLocale.Country != null) - { - locale = uLocale.Language + "-" + uLocale.Country; - fallbackCultureInfo = GetCultureInfo(locale); - } - - if (fallbackCultureInfo == null && uLocale.Language != null) - { - locale = uLocale.Language; - fallbackCultureInfo = GetCultureInfo(locale); - } - - if (fallbackCultureInfo == null) - { - try - { - fallbackCultureInfo = new CultureInfo("en"); - } - catch (CultureNotFoundException e) - { - Log.Error(LogTag, "Failed to create CultureInfo. err = " + e.Message); - } - } - - return fallbackCultureInfo; - } - - private CultureInfo GetCultureInfo(string locale) - { - if (!Exist(locale)) - { - return null; - } - - try - { - return new CultureInfo(locale); - } - catch (CultureNotFoundException) - { - return null; - } - } - - private bool Exist(string locale) - { - foreach (var cultureInfo in CultureInfo.GetCultures(CultureTypes.AllCultures)) - { - if (cultureInfo.Name == locale) - { - return true; - } - } - return false; - } - - - /// - /// Wraps ICU uloc_* interop for parsing and canonicalizing locale strings. - /// - internal class ULocale - { - private const int ULOC_FULLNAME_CAPACITY = 157; - private const int ULOC_LANG_CAPACITY = 12; - private const int ULOC_SCRIPT_CAPACITY = 6; - private const int ULOC_COUNTRY_CAPACITY = 4; - private const int ULOC_VARIANT_CAPACITY = ULOC_FULLNAME_CAPACITY; - private string locale; - private string _locale; - private string _language; - private string _script; - private string _country; - private string _variant; - private int _lcid; - - internal ULocale(string locale) - { - this.locale = locale; - _locale = _language = _script = _country = _variant = null; - _lcid = -1; - } - - internal string Locale - { - get - { - if (string.IsNullOrEmpty(_locale)) - { - _locale = Canonicalize(locale); - } - return _locale; - } - private set - { - _locale = value; - } - } - internal string Language { - get - { - if (string.IsNullOrEmpty(_language)) - { - _language = GetLanguage(Locale); - } - return _language; - } - private set - { - _language = value; - } - } - internal string Script - { - get - { - if (string.IsNullOrEmpty(_script)) - { - _script = GetScript(Locale); - } - return _script; - } - private set - { - _script = value; - } - } - internal string Country { - get - { - if (string.IsNullOrEmpty(_country)) - { - _country = GetCountry(Locale); - } - return _country; - } - private set - { - _country = value; - } - } - internal string Variant - { - get - { - if (string.IsNullOrEmpty(_variant)) - { - _variant = GetVariant(Locale); - } - return _variant; - } - private set - { - _variant = value; - } - } - internal int LCID { - get - { - if (_lcid == -1) { - _lcid = GetLCID(Locale); - } - return _lcid; - } - private set { - _lcid = value; - } - } - - private string Canonicalize(string localeName) - { - // Get the locale name from ICU - StringBuilder sb = new StringBuilder(ULOC_FULLNAME_CAPACITY); - if (Interop.BaseUtilsi18n.Canonicalize(localeName, sb, sb.Capacity) <= 0) - { - return null; - } - - return sb.ToString(); - } - - private string GetLanguage(string locale) - { - // Get the language name from ICU - StringBuilder sb = new StringBuilder(ULOC_LANG_CAPACITY); - if (Interop.BaseUtilsi18n.GetLanguage(locale, sb, sb.Capacity, out int bufSizeLanguage) != 0) - { - return null; - } - - return sb.ToString(); - } - - private string GetScript(string locale) - { - // Get the script name from ICU - StringBuilder sb = new StringBuilder(ULOC_SCRIPT_CAPACITY); - if (Interop.BaseUtilsi18n.GetScript(locale, sb, sb.Capacity) <= 0) - { - return null; - } - - return sb.ToString(); - } - - private string GetCountry(string locale) - { - int err = 0; - - // Get the country name from ICU - StringBuilder sb = new StringBuilder(ULOC_COUNTRY_CAPACITY); - if (Interop.BaseUtilsi18n.GetCountry(locale, sb, sb.Capacity, out err) <= 0) - { - return null; - } - - return sb.ToString(); - } - - private string GetVariant(string locale) - { - // Get the variant name from ICU - StringBuilder sb = new StringBuilder(ULOC_VARIANT_CAPACITY); - if (Interop.BaseUtilsi18n.GetVariant(locale, sb, sb.Capacity) <= 0) - { - return null; - } - - return sb.ToString(); - } - - private int GetLCID(string locale) - { - // Get the LCID from ICU - uint lcid = Interop.BaseUtilsi18n.GetLCID(locale); - return (int)lcid; - } - - internal static string GetDefaultLocale() - { - IntPtr stringPtr = Interop.Libc.GetEnvironmentVariable("LANG"); - if (stringPtr == IntPtr.Zero) - { - return string.Empty; - } - - return Marshal.PtrToStringAnsi(stringPtr); - } - } - } -} \ No newline at end of file diff --git a/src/Tizen.Applications.Team/TeamCoreUiApplication.cs b/src/Tizen.Applications.Team/TeamCoreUiApplication.cs deleted file mode 100644 index bcd068b4879..00000000000 --- a/src/Tizen.Applications.Team/TeamCoreUiApplication.cs +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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.ComponentModel; -using Tizen.Applications.CoreBackend; -using Tizen.NUI; - -namespace Tizen.Applications -{ - /// - /// Represents a base class for Team UI applications that own a NUI and expose - /// and lifecycle events. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public class TeamCoreUiApplication : TeamCoreApplication - { - /// - /// Initializes the class. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public TeamCoreUiApplication() : base(new TeamUICoreBackend()) - { - } - - /// - /// Gets the default window of this application. - /// - /// The default associated with this application. - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public Window GetDefaultWindow() - { - return ((TeamUICoreBackend)Backend).GetDefaultWindow(); - } - - /// - /// Occurs whenever the application is resumed. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public event EventHandler Resumed; - - /// - /// Occurs whenever the application is paused. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public event EventHandler Paused; - - /// - /// Runs the Team UI application's main loop. - /// - /// Arguments from commandline. - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - public override void Run(string[] args) - { - Backend.AddEventHandler(EventType.Resumed, OnResume); - Backend.AddEventHandler(EventType.Paused, OnPause); - - base.Run(args); - } - - /// - /// Invoked when the application is created. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - protected override void OnCreate() - { - base.OnCreate(); - } - - /// - /// Invoked when the application is resumed. Raises the event. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - protected virtual void OnResume() - { - Resumed?.Invoke(this, EventArgs.Empty); - } - - /// - /// Invoked when the application is paused. Raises the event. - /// - /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) - [EditorBrowsable(EditorBrowsableState.Never)] - protected virtual void OnPause() - { - Paused?.Invoke(this, EventArgs.Empty); - } - } -} diff --git a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamCoreBackend.cs b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamCoreBackend.cs index 473bad48ea3..efe2babdfd4 100644 --- a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamCoreBackend.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamCoreBackend.cs @@ -16,8 +16,10 @@ using System; using System.ComponentModel; +using Tizen.Applications.CoreBackend; -namespace Tizen.Applications.CoreBackend + +namespace Tizen.Applications { /// /// Represents the abstract base backend that drives a Team application instance. diff --git a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamServiceCoreBackend.cs b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamServiceCoreBackend.cs index 4f688e29708..b27854a85bb 100644 --- a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamServiceCoreBackend.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamServiceCoreBackend.cs @@ -16,8 +16,9 @@ using System; using Tizen.Internals; +using Tizen.Applications.CoreBackend; -namespace Tizen.Applications.CoreBackend +namespace Tizen.Applications { /// /// Backend implementation for Team service applications that run without a graphical UI. @@ -81,15 +82,7 @@ public override void Run(string[] args) // base.Run() is not required. if (!TeamManager.IsInit()) { - string[] argsClone = new string[args == null ? 1 : args.Length + 1]; - if (args != null && args.Length > 1) - { - args.CopyTo(argsClone, 1); - } - argsClone[0] = "Tizen.Applications.Team.dll"; - - TeamManager.Init(argsClone); - Log.Info("DN_TAM", $"Launching Team Loop."); + Log.Error("DN_TAM", $"Team Loop is not running!. Launch app via launcher."); return; } @@ -146,6 +139,7 @@ private bool OnCreateNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Created handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); return false; } } @@ -167,6 +161,7 @@ private void OnTerminateNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Terminated handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -185,6 +180,7 @@ private void OnAppControlNative(IntPtr context, IntPtr appControl, IntPtr userda catch (Exception ex) { Log.Error(LogTag, $"Error in AppControlReceived handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -203,6 +199,7 @@ private void OnLowMemoryNative(IntPtr context, int status, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in LowMemory handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -220,6 +217,7 @@ private void OnLowBatteryNative(IntPtr context, int status, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in LowBattery handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -236,6 +234,7 @@ private void OnLanguageChangedNative(IntPtr context, string language, IntPtr use catch (Exception ex) { Log.Error(LogTag, $"Error in LocaleChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -253,6 +252,7 @@ private void OnDeviceOrientationChangedNative(IntPtr context, int status, IntPtr catch (Exception ex) { Log.Error(LogTag, $"Error in DeviceOrientationChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -269,6 +269,7 @@ private void OnRegionFormatChangedNative(IntPtr context, string region, IntPtr u catch (Exception ex) { Log.Error(LogTag, $"Error in RegionFormatChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -286,6 +287,7 @@ private void OnSuspendStateChangedNative(IntPtr context, int status, IntPtr user catch (Exception ex) { Log.Error(LogTag, $"Error in SuspendedStateChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -302,6 +304,7 @@ private void OnTimeZoneChangedNative(IntPtr context, string timeZone, string tim catch (Exception ex) { Log.Error(LogTag, $"Error in TimeZoneChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } diff --git a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamUICoreBackend.cs b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamUICoreBackend.cs index 45e06f4f7d7..889dbeb8a52 100644 --- a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamUICoreBackend.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamUICoreBackend.cs @@ -17,19 +17,22 @@ using System; using Tizen.Internals; using Tizen.NUI; +using Tizen.Applications.CoreBackend; -namespace Tizen.Applications.CoreBackend + +namespace Tizen.Applications { /// /// Backend implementation for Team UI applications that own a default . /// - internal class TeamUICoreBackend : TeamCoreBackend + internal class TeamUICoreBackend : TeamCoreBackend, IUICoreBackend { internal new static string LogTag = "DN_TAM"; private Interop.TeamMember.UIMemberLifecycleCallbacks _callbacks; private bool _disposedValue = false; private int DefaultWindowId = 0; internal Window defaultWindow; + internal WindowData initWindowData; internal override IntPtr MemberHandle => _memberHandle; internal override IntPtr LoadObjId => _loadObjId; internal override IntPtr ArgHandle => _argHandle; @@ -48,6 +51,19 @@ internal class TeamUICoreBackend : TeamCoreBackend private Interop.TeamMember.AppTimeZoneChangedCallback _onTimeZoneChangedNative; public TeamUICoreBackend() + { + initWindowData = null; + SetUpCallback(); + } + + + public TeamUICoreBackend(WindowData windowdata) + { + initWindowData = windowdata; + SetUpCallback(); + } + + internal void SetUpCallback() { _onCreateNative = new Interop.TeamMember.UIAppCreateCallback(OnCreateNative); _onTerminateNative = new Interop.TeamMember.AppTerminateCallback(OnTerminateNative); @@ -93,6 +109,28 @@ internal void SetDefaultWindow(Window window) { defaultWindow = window; SetDefaultWindowId(window.GetNativeId()); + + // Register window with appid to TeamManager + var err = Interop.TeamManager.TeamAppGetAppId(MemberHandle, out string appid); + if (err == Interop.TeamManager.TeamAppErrorCode.None && !string.IsNullOrEmpty(appid)) + { + TeamManager.RegisterDefaultWindow(window, appid); + } + else + { + Log.Warn(LogTag, $"Failed to get AppId for RegisterDefaultWindow. err = {err}"); + } + } + + internal void UnsetDefaultWindow() + { + if (defaultWindow != null) + { + TeamManager.UnregisterDefaultWindow(defaultWindow); + } + defaultWindow?.Hide(); + DefaultWindowId = -1; + defaultWindow = null; } public override void Exit() { @@ -108,15 +146,7 @@ public override void Run(string[] args) // base.Run() is not required. if (!TeamManager.IsInit()) { - string[] argsClone = new string[args == null ? 1 : args.Length + 1]; - if (args != null && args.Length > 1) - { - args.CopyTo(argsClone, 1); - } - argsClone[0] = "Tizen.Applications.Team.dll"; - - TeamManager.Init(argsClone); - Log.Info("DN_TAM", $"Launching Team Loop."); + Log.Error("DN_TAM", $"Team Loop is not running!. Launch app via launcher."); return; } @@ -151,6 +181,32 @@ protected override void Dispose(bool disposing) } } + internal void CreateDefaultWindow() + { + if(GetDefaultWindow() == null) { + + Window window = null; + var err = Interop.TeamManager.TeamAppGetName(MemberHandle, out string name); + if (err != Interop.TeamManager.TeamAppErrorCode.None) + { + Log.Warn(LogTag, $"Failed to get Name. err = {err}"); + name = ""; + } + + if(initWindowData != null) + { + window = new Window(name, initWindowData); + } + else + { + window = new Window(); + window.Title = name; + } + + SetDefaultWindow(window); + window.Hide(); + } + } private IntPtr OnCreateNative(IntPtr context, IntPtr userdata) { if (_memberHandle != IntPtr.Zero) @@ -159,32 +215,55 @@ private IntPtr OnCreateNative(IntPtr context, IntPtr userdata) } _memberHandle = context; + CreateDefaultWindow(); + + if (Handlers.ContainsKey(EventType.PreCreated)) + { + var handler = Handlers[EventType.PreCreated] as Action; + if (handler != null) + { + try + { + handler?.Invoke(); + } + catch (Exception ex) + { + Log.Error(LogTag, $"Error in User PreCreated handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); + } + } + else + { + Log.Error(LogTag, "Invalid OnPreCreate Callback type"); + return IntPtr.Zero; + } + } + if (Handlers.ContainsKey(EventType.Created)) { var handler = Handlers[EventType.Created] as Action; if (handler != null) { - // This function will set default window try { - var window = new Window(); - SetDefaultWindow(window); - window.Hide(); - - try { - handler?.Invoke(); - } - catch (Exception ex) - { - Log.Error(LogTag, $"Error in User Created handler: {ex.Message}"); - } + handler?.Invoke(); + } + catch (Exception ex) + { + Log.Error(LogTag, $"Error in User Created handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); + return IntPtr.Zero; + } + try + { IntPtr window_h = Interop.TeamManager.CreateWl2WindowById(GetDefaultWindowId()); return window_h; } catch (Exception ex) { Log.Error(LogTag, $"Error in Internal Created handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); return IntPtr.Zero; } } @@ -211,12 +290,10 @@ private void OnTerminateNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Terminated handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } - - defaultWindow?.Hide(); - DefaultWindowId = -1; - defaultWindow = null; } + UnsetDefaultWindow(); } private void OnAppControlNative(IntPtr context, IntPtr appControl, IntPtr userdata) @@ -233,6 +310,7 @@ private void OnAppControlNative(IntPtr context, IntPtr appControl, IntPtr userda catch (Exception ex) { Log.Error(LogTag, $"Error in AppControlReceived handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -250,6 +328,7 @@ private void OnResumeNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Resumed handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -266,6 +345,7 @@ private void OnPauseNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Paused handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -283,6 +363,7 @@ private void OnLowMemoryNative(IntPtr context, int status, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in LowMemory handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -300,6 +381,7 @@ private void OnLowBatteryNative(IntPtr context, int status, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in LowBattery handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -316,6 +398,7 @@ private void OnLanguageChangedNative(IntPtr context, string language, IntPtr use catch (Exception ex) { Log.Error(LogTag, $"Error in LocaleChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -333,6 +416,7 @@ private void OnDeviceOrientationChangedNative(IntPtr context, int status, IntPtr catch (Exception ex) { Log.Error(LogTag, $"Error in DeviceOrientationChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -349,6 +433,7 @@ private void OnRegionFormatChangedNative(IntPtr context, string region, IntPtr u catch (Exception ex) { Log.Error(LogTag, $"Error in RegionFormatChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -366,6 +451,7 @@ private void OnSuspendStateChangedNative(IntPtr context, int status, IntPtr user catch (Exception ex) { Log.Error(LogTag, $"Error in SuspendedStateChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -382,6 +468,7 @@ private void OnTimeZoneChangedNative(IntPtr context, string timeZone, string tim catch (Exception ex) { Log.Error(LogTag, $"Error in TimeZoneChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } diff --git a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamViewCoreBackend.cs b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamViewCoreBackend.cs index dbffc71a4bb..cd83c455d82 100644 --- a/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamViewCoreBackend.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamViewCoreBackend.cs @@ -18,8 +18,9 @@ using Tizen.Internals; using Tizen.NUI; using Tizen.NUI.BaseComponents; +using Tizen.Applications.CoreBackend; -namespace Tizen.Applications.CoreBackend +namespace Tizen.Applications { /// /// Backend implementation for Team view applications that render into a shared host-provided . @@ -108,15 +109,7 @@ public override void Run(string[] args) // base.Run() is not required. if (!TeamManager.IsInit()) { - string[] argsClone = new string[args == null ? 1 : args.Length + 1]; - if (args != null && args.Length > 1) - { - args.CopyTo(argsClone, 1); - } - argsClone[0] = "Tizen.Applications.Team.dll"; - - TeamManager.Init(argsClone); - Log.Info("DN_TAM", $"Launching Team Loop."); + Log.Error("DN_TAM", $"Team Loop is not running!. Launch app via launcher."); return; } @@ -177,6 +170,7 @@ private IntPtr OnCreateNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in User Created handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } IntPtr view_h = Interop.TeamManager.CreateViewByViewId(GetDefaultViewId()); @@ -195,6 +189,7 @@ private IntPtr OnCreateNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Internal Created handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); return IntPtr.Zero; } } @@ -221,6 +216,7 @@ private void OnTerminateNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Terminated handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } @@ -242,6 +238,7 @@ private void OnAppControlNative(IntPtr context, IntPtr appControl, IntPtr userda catch (Exception ex) { Log.Error(LogTag, $"Error in AppControlReceived handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -259,6 +256,7 @@ private void OnResumeNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Resumed handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -275,6 +273,7 @@ private void OnPauseNative(IntPtr context, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in Paused handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -292,6 +291,7 @@ private void OnLowMemoryNative(IntPtr context, int status, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in LowMemory handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -309,6 +309,7 @@ private void OnLowBatteryNative(IntPtr context, int status, IntPtr userdata) catch (Exception ex) { Log.Error(LogTag, $"Error in LowBattery handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -325,6 +326,7 @@ private void OnLanguageChangedNative(IntPtr context, string language, IntPtr use catch (Exception ex) { Log.Error(LogTag, $"Error in LocaleChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -342,6 +344,7 @@ private void OnDeviceOrientationChangedNative(IntPtr context, int status, IntPtr catch (Exception ex) { Log.Error(LogTag, $"Error in DeviceOrientationChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -358,6 +361,7 @@ private void OnRegionFormatChangedNative(IntPtr context, string region, IntPtr u catch (Exception ex) { Log.Error(LogTag, $"Error in RegionFormatChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -375,6 +379,7 @@ private void OnSuspendStateChangedNative(IntPtr context, int status, IntPtr user catch (Exception ex) { Log.Error(LogTag, $"Error in SuspendedStateChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } @@ -391,6 +396,7 @@ private void OnTimeZoneChangedNative(IntPtr context, string timeZone, string tim catch (Exception ex) { Log.Error(LogTag, $"Error in TimeZoneChanged handler: {ex.Message}"); + Log.Error(LogTag, $"{ex.StackTrace}"); } } } diff --git a/src/Tizen.Applications.Team/Tizen.Applications.Team.csproj b/src/Tizen.Applications.Team/Tizen.Applications.Team.csproj index 5809df03c80..5589c169ae8 100755 --- a/src/Tizen.Applications.Team/Tizen.Applications.Team.csproj +++ b/src/Tizen.Applications.Team/Tizen.Applications.Team.csproj @@ -12,6 +12,7 @@ + diff --git a/src/Tizen.Applications.Team/Tizen.Applications.Team.sln b/src/Tizen.Applications.Team/Tizen.Applications.Team.sln new file mode 100644 index 00000000000..52f361e690b --- /dev/null +++ b/src/Tizen.Applications.Team/Tizen.Applications.Team.sln @@ -0,0 +1,45 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Team", "Tizen.Applications.Team.csproj", "{54AE6422-3D17-4D5A-8392-4BFCCFE71BDD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\Tizen\Tizen.csproj", "{D5621542-406E-4B7B-B75C-162433403320}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{F1A2C4CA-DF9B-48C9-9F57-1D586BF2E241}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Common", "..\Tizen.Applications.Common\Tizen.Applications.Common.csproj", "{58A951BB-598C-47F2-B195-22F9219AF1F1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI", "..\Tizen.NUI\Tizen.NUI.csproj", "{0D063CB9-E7BA-4A47-892D-F1B72EE7E8AB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {54AE6422-3D17-4D5A-8392-4BFCCFE71BDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54AE6422-3D17-4D5A-8392-4BFCCFE71BDD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54AE6422-3D17-4D5A-8392-4BFCCFE71BDD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54AE6422-3D17-4D5A-8392-4BFCCFE71BDD}.Release|Any CPU.Build.0 = Release|Any CPU + {D5621542-406E-4B7B-B75C-162433403320}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D5621542-406E-4B7B-B75C-162433403320}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D5621542-406E-4B7B-B75C-162433403320}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D5621542-406E-4B7B-B75C-162433403320}.Release|Any CPU.Build.0 = Release|Any CPU + {F1A2C4CA-DF9B-48C9-9F57-1D586BF2E241}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1A2C4CA-DF9B-48C9-9F57-1D586BF2E241}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1A2C4CA-DF9B-48C9-9F57-1D586BF2E241}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1A2C4CA-DF9B-48C9-9F57-1D586BF2E241}.Release|Any CPU.Build.0 = Release|Any CPU + {58A951BB-598C-47F2-B195-22F9219AF1F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58A951BB-598C-47F2-B195-22F9219AF1F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58A951BB-598C-47F2-B195-22F9219AF1F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58A951BB-598C-47F2-B195-22F9219AF1F1}.Release|Any CPU.Build.0 = Release|Any CPU + {0D063CB9-E7BA-4A47-892D-F1B72EE7E8AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D063CB9-E7BA-4A47-892D-F1B72EE7E8AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D063CB9-E7BA-4A47-892D-F1B72EE7E8AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D063CB9-E7BA-4A47-892D-F1B72EE7E8AB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal \ No newline at end of file diff --git a/src/Tizen.Applications.Team/TeamApplication.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamApplication.cs similarity index 100% rename from src/Tizen.Applications.Team/TeamApplication.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamApplication.cs diff --git a/src/Tizen.Applications.Team/TeamApplicationInfo.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamApplicationInfo.cs similarity index 99% rename from src/Tizen.Applications.Team/TeamApplicationInfo.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamApplicationInfo.cs index 9d704ff1ff5..5013dc9bf3e 100644 --- a/src/Tizen.Applications.Team/TeamApplicationInfo.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications/TeamApplicationInfo.cs @@ -31,7 +31,7 @@ namespace Tizen.Applications /// /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) [EditorBrowsable(EditorBrowsableState.Never)] - public class TeamApplicationInfo : IDisposable + public class TeamApplicationInfo : IDisposable, IApplicationInfo { private const string LogTag = "DN_TAMS"; private bool _disposed = false; diff --git a/src/Tizen.Applications.Team/TeamCoreApplication.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamCoreApplication.cs similarity index 96% rename from src/Tizen.Applications.Team/TeamCoreApplication.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamCoreApplication.cs index c3c7460c8d0..715ffd4517b 100644 --- a/src/Tizen.Applications.Team/TeamCoreApplication.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications/TeamCoreApplication.cs @@ -315,25 +315,6 @@ public static async Task Post(Func runner) } } - internal static class GlobalizationMode - { - private static int _invariant = -1; - - internal static bool Invariant - { - get - { - if (_invariant == -1) - { - string value = Environment.GetEnvironmentVariable("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT"); - _invariant = value != null ? (value.Equals("1") ? 1 : 0) : 0; - } - - return _invariant != 0; - } - } - } - internal static class TeamLocaleManager { private static readonly string LogTag = "DN_TAM"; diff --git a/src/Tizen.Applications.Team/Tizen.Applications/TeamCoreUiApplication.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamCoreUiApplication.cs new file mode 100644 index 00000000000..e86128ebe4d --- /dev/null +++ b/src/Tizen.Applications.Team/Tizen.Applications/TeamCoreUiApplication.cs @@ -0,0 +1,269 @@ +/* + * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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.ComponentModel; +using Tizen.Applications; +using Tizen.Applications.CoreBackend; +using Tizen.NUI; + +namespace Tizen.Applications +{ + /// + /// Represents a base class for Team UI applications that own a NUI and expose + /// and lifecycle events. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public class TeamCoreUiApplication : TeamCoreApplication, IUIApplication + { + /// + /// Initializes the class. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public TeamCoreUiApplication(TeamCoreBackend backend) : base(backend) + { + } + + /// + /// Gets the default window of this application. + /// + /// The default associated with this application. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Window GetDefaultWindow() + { + return ((TeamUICoreBackend)Backend).GetDefaultWindow(); + } + + /// + /// Occurs before the application is created. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public event EventHandler PreCreated; + + /// + /// Occurs whenever the application is resumed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public event EventHandler Resumed; + + /// + /// Occurs whenever the application is paused. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public event EventHandler Paused; + + /// + /// Adds a delegate to be called when the main loop is idle. + /// + /// The delegate to call. + /// true if the delegate was added successfully; otherwise, false. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public bool AddIdle(Delegate func) + { + return UIContext.Instance?.AddIdle(func) ?? false; + } + + /// + /// Removes a previously added idle delegate. + /// + /// The delegate to remove. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public void RemoveIdle(Delegate func) + { + UIContext.Instance?.RemoveIdle(func); + } + + /// + /// Runs the Team UI application's main loop. + /// + /// Arguments from commandline. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public override void Run(string[] args) + { + Backend.AddEventHandler(EventType.Resumed, ResumeHandler); + Backend.AddEventHandler(EventType.Paused, PauseHandler); + Backend.AddEventHandler(EventType.PreCreated, OnPreCreate); + + base.Run(args); + } + + /// + /// Invoked before the application is created. Raises the event. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + protected virtual void OnPreCreate() + { + PreCreated?.Invoke(this, EventArgs.Empty); + } + + /// + /// Invoked when the application is resumed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + protected virtual void OnResume() + { + + } + + /// + /// Invoked when the application is resumed. Raises the event after OnResume() + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + private void ResumeHandler() + { + OnResume(); + Resumed?.Invoke(this, EventArgs.Empty); + } + + /// + /// Invoked when the application is paused. Raises the event. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + protected virtual void OnPause() + { + } + + /// + /// Invoked when the application is paused. Raises the event after OnPause() + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + private void PauseHandler() + { + OnPause(); + Paused?.Invoke(this, EventArgs.Empty); + } + + #region IUIApplication Interface + + /// + /// Gets the backend associated with this application as . + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IUICoreBackend IUIApplication.Backend => (TeamUICoreBackend)_backend; + + /// + /// Gets the application information as . + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IApplicationInfo IUIApplication.ApplicationInfo => ApplicationInfo; + + /// + /// Gets the directory information as . + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IDirectoryInfo IUIApplication.DirectoryInfo => DirectoryInfo; + + /// + /// Gets the default window as interface. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + TWindow IUIApplication.GetDefaultWindow() => (TWindow)(object)GetDefaultWindow(); + + // Methods - explicit interface implementation + /// + /// Invoked before the application is created. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnPreCreate() => OnPreCreate(); + + /// + /// Invoked when the application is created. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnCreate() => OnCreate(); + + /// + /// Invoked when the application is terminated. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnTerminate() => OnTerminate(); + + /// + /// Invoked when the application is paused. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnPause() => OnPause(); + + /// + /// Invoked when the application is resumed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnResume() => OnResume(); + + /// + /// Invoked when the application receives an app control request. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnAppControlReceived(AppControlReceivedEventArgs e) => OnAppControlReceived(e); + + /// + /// Invoked when a low memory event is reported by the system. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnLowMemory(LowMemoryEventArgs e) => OnLowMemory(e); + + /// + /// Invoked when a low battery event is reported by the system. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnLowBattery(LowBatteryEventArgs e) => OnLowBattery(e); + + /// + /// Invoked when the system language is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnLocaleChanged(LocaleChangedEventArgs e) => OnLocaleChanged(e); + + /// + /// Invoked when the region format is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnRegionFormatChanged(RegionFormatChangedEventArgs e) => OnRegionFormatChanged(e); + + /// + /// Invoked when the device orientation is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnDeviceOrientationChanged(DeviceOrientationEventArgs e) => OnDeviceOrientationChanged(e); + + /// + /// Invoked when the system time zone is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnTimeZoneChanged(TimeZoneChangedEventArgs e) => OnTimeZoneChanged(e); + + #endregion + } +} diff --git a/src/Tizen.Applications.Team/TeamDirectoryInfo.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamDirectoryInfo.cs similarity index 99% rename from src/Tizen.Applications.Team/TeamDirectoryInfo.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamDirectoryInfo.cs index 8f2541f0be9..c8e3fed969c 100644 --- a/src/Tizen.Applications.Team/TeamDirectoryInfo.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications/TeamDirectoryInfo.cs @@ -31,7 +31,7 @@ namespace Tizen.Applications /// /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) [EditorBrowsable(EditorBrowsableState.Never)] - public class TeamDirectoryInfo + public class TeamDirectoryInfo : IDirectoryInfo { private IntPtr _memberHandle; private string _dataPath; diff --git a/src/Tizen.Applications.Team/TeamLoop.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamLoop.cs similarity index 78% rename from src/Tizen.Applications.Team/TeamLoop.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamLoop.cs index 09b62f6d4c0..b20a1994d06 100644 --- a/src/Tizen.Applications.Team/TeamLoop.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications/TeamLoop.cs @@ -44,7 +44,6 @@ static TeamLoop() _ops.Load = new Interop.TeamLoop.TeamLoopOpsLoad(DoLoad); _ops.Unload = new Interop.TeamLoop.TeamLoopOpsUnload(DoUnload); _ops.CreateArgs = new Interop.TeamLoop.TeamLoopOpsCreateArgs(DoCreateArgs); - _ops.CreateLibPath = new Interop.TeamLoop.TeamLoopOpsCreateLibPath(DoCreateLibPath); _ops.OnLoopCreate = new Interop.TeamLoop.TeamLoopOpsOnLoopCreate(DoOnLoopCreate); _ops.OnLoopTerminate = new Interop.TeamLoop.TeamLoopOpsOnLoopTerminate(DoOnLoopTerminate); } @@ -65,10 +64,7 @@ public static void Run(string[] args) _isRunning = true; _systemArgs = args; - Log.Info("NUI", "[NUI] NUIApplicationInitializer: StaticInitialize"); - Registry.Instance.SavedApplicationThread = Thread.CurrentThread; - PropertyBridge.RegisterStringGetter(); - Log.Info("NUI", "[NUI] NUIApplicationInitializer: StaticInitialize done"); + NUIApplicationInitializer.StaticInitialize(); var err = Interop.TeamLoop.Main(args.Length, args, _ops); if (err != 0) @@ -177,7 +173,7 @@ internal static IntPtr DoCreateArgs(IntPtr loadObj) try { var mainMethod = assemblyInfo.Assembly.EntryPoint; - Log.Info(LogTag, $"Main method {mainMethod.Name}"); + Log.Info(LogTag, $"Main method {mainMethod?.Name}"); if (mainMethod == null) { @@ -206,41 +202,6 @@ internal static IntPtr DoCreateArgs(IntPtr loadObj) } } - internal static void DoCreateLibPath(string path, ref IntPtr output) - { - if (string.IsNullOrEmpty(path)) - { - Log.Error(LogTag, "Invalid path: null or empty"); - output = IntPtr.Zero; - return; - } - - int lastDotIndex = path.LastIndexOf('.'); - if (lastDotIndex < 0) - { - Log.Error(LogTag, $"Invalid path format: {path}. Expected format: org.appfw.csteam.{{member_id}}"); - output = IntPtr.Zero; - return; - } - - string memberId = path.Substring(lastDotIndex + 1); - if (string.IsNullOrEmpty(memberId)) - { - Log.Error(LogTag, $"Empty member_id extracted from: {path}"); - output = IntPtr.Zero; - return; - } - - string libPath = $"/usr/share/csteam/dll/{memberId}.dll"; - Log.Info(LogTag, $"Created lib path: {libPath} from {path}"); - - output = Marshal.StringToHGlobalAnsi(libPath); - - if (output == IntPtr.Zero) { - Log.Error(LogTag, "Failed to allocate memory for lib path"); - } - } - /// /// Gets the command line arguments that were passed to . /// @@ -256,17 +217,10 @@ public static string[] GetSystemArgs() internal static void DoOnLoopCreate() { Log.Info(LogTag, "DoOnLoopCreate() called"); - - Log.Info("NUI", "[NUI] NUIApplicationInitializer: ProcessorController Initialize"); - Tracer.Begin("[NUI] NUIApplicationInitializer: ProcessorController Initialize"); - ProcessorController.Instance.Initialize(); - Tracer.End(); - - // Initialize DisposeQueue Singleton class. This is also required to create DisposeQueue on main thread. - Log.Info("NUI", "[NUI] NUIApplicationInitializer: DisposeQueue Initialize"); - Tracer.Begin("[NUI] NUIApplicationInitializer: DisposeQueue Initialize"); - DisposeQueue.Instance.Initialize(); - Tracer.End(); + NUIApplicationInitializer.Initialize(); + UIContext.Instance?.GetDefaultWindow()?.SetPositionSize(new Rectangle(0, 0, 1, 1)); + UIContext.Instance?.GetDefaultWindow()?.SetTransparency(true); + UIContext.Instance?.GetDefaultWindow()?.Hide(); // Empty implementation for C# launcher } diff --git a/src/Tizen.Applications.Team/TeamManager.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamManager.cs similarity index 73% rename from src/Tizen.Applications.Team/TeamManager.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamManager.cs index 76ae8d60082..771d2e708f2 100644 --- a/src/Tizen.Applications.Team/TeamManager.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications/TeamManager.cs @@ -19,6 +19,7 @@ using System.ComponentModel; using System.Reflection; using System.Runtime.Loader; +using Tizen.NUI; using Tizen.NUI.BaseComponents; namespace Tizen.Applications @@ -70,6 +71,8 @@ public static class TeamManager private static readonly Dictionary _viewByAppId = new Dictionary(); private static int _viewIdCounter = 1; + private static readonly Dictionary _windowToAppId = new Dictionary(); + internal static IntPtr RegisterAssemblyInfo(AssemblyInfo info) { lock (_lock) @@ -318,5 +321,110 @@ public static void DisownViewApp(string appid) } } + /// + /// Gets the TeamApplication instance by application id. + /// + /// The application id to search for. + /// The matching , or null if not found. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static TeamApplication GetApplication(string appid) + { + if (string.IsNullOrEmpty(appid)) + return null; + + lock (_lock) + { + foreach (var app in _runningApps) + { + if (app.ApplicationInfo?.ApplicationId == appid) + { + return app; + } + } + } + return null; + } + + /// + /// Registers a default window with its associated application id. + /// + /// The window to register. + /// The application id associated with the window. + /// Thrown when is null or is null or empty. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static void RegisterDefaultWindow(Window window, string appid) + { + if (window == null) + throw new ArgumentNullException(nameof(window)); + if (string.IsNullOrEmpty(appid)) + throw new ArgumentNullException(nameof(appid)); + + lock (_lock) + { + _windowToAppId[window] = appid; + Log.Info(LogTag, $"DefaultWindow registered - AppId: {appid}"); + } + } + + /// + /// Unregisters a default window. + /// + /// The window to unregister. + /// true if the window was unregistered; false if the window was not found. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static bool UnregisterDefaultWindow(Window window) + { + if (window == null) + return false; + + lock (_lock) + { + if (_windowToAppId.Remove(window, out var appid)) + { + Log.Info(LogTag, $"DefaultWindow unregistered - AppId: {appid}"); + return true; + } + } + return false; + } + + /// + /// Gets the TeamApplication instance by window. + /// + /// The window to search for. + /// The matching , or null if not found. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static TeamApplication GetApplication(Window window) + { + if (window == null) + return null; + + lock (_lock) + { + if (_windowToAppId.TryGetValue(window, out var appid)) + { + return GetApplication(appid); + } + } + return null; + } + + /// + /// Gets All the NUI Window in this process via UiContext API + /// + /// The Window List, or null if not found. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + + [EditorBrowsable(EditorBrowsableState.Never)] + public static List GetWindowList() + { + return UIContext.Instance?.GetWindowList(); + } + + } } diff --git a/src/Tizen.Applications.Team/TeamServiceApplication.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamServiceApplication.cs similarity index 100% rename from src/Tizen.Applications.Team/TeamServiceApplication.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamServiceApplication.cs diff --git a/src/Tizen.Applications.Team/TeamUiApplication.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamUiApplication.cs similarity index 86% rename from src/Tizen.Applications.Team/TeamUiApplication.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamUiApplication.cs index 4ae9daaaad1..748c1b3d793 100644 --- a/src/Tizen.Applications.Team/TeamUiApplication.cs +++ b/src/Tizen.Applications.Team/Tizen.Applications/TeamUiApplication.cs @@ -17,6 +17,7 @@ using System; using System.ComponentModel; using Tizen.NUI; +using Tizen.Applications.CoreBackend; namespace Tizen.Applications { @@ -32,7 +33,13 @@ public class TeamUiApplication : TeamCoreUiApplication /// /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) [EditorBrowsable(EditorBrowsableState.Never)] - public TeamUiApplication() + public TeamUiApplication() : base (new TeamUICoreBackend()) + { + } + + [EditorBrowsable(EditorBrowsableState.Never)] + public TeamUiApplication(WindowData windowdata) + : base (new TeamUICoreBackend(windowdata)) { } diff --git a/src/Tizen.Applications.Team/TeamViewApplication.cs b/src/Tizen.Applications.Team/Tizen.Applications/TeamViewApplication.cs similarity index 100% rename from src/Tizen.Applications.Team/TeamViewApplication.cs rename to src/Tizen.Applications.Team/Tizen.Applications/TeamViewApplication.cs diff --git a/src/Tizen.Applications.TeamLauncher/TeamLauncher.cs b/src/Tizen.Applications.TeamLauncher/TeamLauncher.cs new file mode 100644 index 00000000000..9f400dc7945 --- /dev/null +++ b/src/Tizen.Applications.TeamLauncher/TeamLauncher.cs @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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 System.ComponentModel; +using System.Reflection; +using Tizen.NUI.BaseComponents; + +namespace Tizen.Applications +{ + internal static class TeamLauncher{ + static void Main(string[] args) + { + if(!TeamManager.IsInit()) + { + Log.Info("TeamLauncher", $"Loop Start"); + string[] argsClone = new string[args == null ? 1 : args.Length + 1]; + if (args != null && args.Length > 0) + { + args.CopyTo(argsClone, 1); + } + argsClone[0] = "Tizen.Applications.TeamLauncher.dll"; + TeamManager.Init(argsClone); + } + else + { + Log.Info("TeamLauncher", $"Loop is already running"); + } + } + } +} \ No newline at end of file diff --git a/src/Tizen.Applications.TeamLauncher/Tizen.Applications.TeamLauncher.csproj b/src/Tizen.Applications.TeamLauncher/Tizen.Applications.TeamLauncher.csproj new file mode 100644 index 00000000000..2c65066ba36 --- /dev/null +++ b/src/Tizen.Applications.TeamLauncher/Tizen.Applications.TeamLauncher.csproj @@ -0,0 +1,12 @@ + + + + net8.0 + Exe + + + + + + + \ No newline at end of file diff --git a/src/Tizen.Applications.TeamLauncher/Tizen.Applications.TeamLauncher.sln b/src/Tizen.Applications.TeamLauncher/Tizen.Applications.TeamLauncher.sln new file mode 100644 index 00000000000..0b3a8b9eaf3 --- /dev/null +++ b/src/Tizen.Applications.TeamLauncher/Tizen.Applications.TeamLauncher.sln @@ -0,0 +1,51 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.TeamLauncher", "Tizen.Applications.TeamLauncher.csproj", "{0E2D2233-A0E4-4420-B856-6D5816FAA500}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Team", "..\Tizen.Applications.Team\Tizen.Applications.Team.csproj", "{B63B986B-6FBD-4043-8467-01BF338E7452}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\Tizen\Tizen.csproj", "{4574D756-8C6A-4494-853F-28D81EF44126}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{FC67FFF9-FDF2-4FB7-9188-22FACE56EC0D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Common", "..\Tizen.Applications.Common\Tizen.Applications.Common.csproj", "{1B1E36B4-9E6F-460D-B95A-B15FF3FE775E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI", "..\Tizen.NUI\Tizen.NUI.csproj", "{C725094D-B94F-4CBE-A201-F73EC3372545}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0E2D2233-A0E4-4420-B856-6D5816FAA500}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E2D2233-A0E4-4420-B856-6D5816FAA500}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E2D2233-A0E4-4420-B856-6D5816FAA500}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E2D2233-A0E4-4420-B856-6D5816FAA500}.Release|Any CPU.Build.0 = Release|Any CPU + {B63B986B-6FBD-4043-8467-01BF338E7452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B63B986B-6FBD-4043-8467-01BF338E7452}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B63B986B-6FBD-4043-8467-01BF338E7452}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B63B986B-6FBD-4043-8467-01BF338E7452}.Release|Any CPU.Build.0 = Release|Any CPU + {4574D756-8C6A-4494-853F-28D81EF44126}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4574D756-8C6A-4494-853F-28D81EF44126}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4574D756-8C6A-4494-853F-28D81EF44126}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4574D756-8C6A-4494-853F-28D81EF44126}.Release|Any CPU.Build.0 = Release|Any CPU + {FC67FFF9-FDF2-4FB7-9188-22FACE56EC0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FC67FFF9-FDF2-4FB7-9188-22FACE56EC0D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FC67FFF9-FDF2-4FB7-9188-22FACE56EC0D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FC67FFF9-FDF2-4FB7-9188-22FACE56EC0D}.Release|Any CPU.Build.0 = Release|Any CPU + {1B1E36B4-9E6F-460D-B95A-B15FF3FE775E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1B1E36B4-9E6F-460D-B95A-B15FF3FE775E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1B1E36B4-9E6F-460D-B95A-B15FF3FE775E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1B1E36B4-9E6F-460D-B95A-B15FF3FE775E}.Release|Any CPU.Build.0 = Release|Any CPU + {C725094D-B94F-4CBE-A201-F73EC3372545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C725094D-B94F-4CBE-A201-F73EC3372545}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C725094D-B94F-4CBE-A201-F73EC3372545}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C725094D-B94F-4CBE-A201-F73EC3372545}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/Tizen.Applications.UI/Tizen.Applications/IUIApplication.cs b/src/Tizen.Applications.UI/Tizen.Applications/IUIApplication.cs new file mode 100644 index 00000000000..505748434e0 --- /dev/null +++ b/src/Tizen.Applications.UI/Tizen.Applications/IUIApplication.cs @@ -0,0 +1,277 @@ +/* + * Copyright (c) 2026 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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.ComponentModel; +using Tizen.Applications.CoreBackend; + +namespace Tizen.Applications +{ + /// + /// Defines the common contract for NUI-based applications. + /// + /// + /// This interface abstracts the shared functionality between + /// and , enabling polymorphic access to lifecycle events, + /// directory/application information, idle management, and the default window. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public interface IUIApplication + { + private static IUIApplication s_current = null; + + /// + /// Gets or sets the current application instance. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static IUIApplication Current + { + get => s_current; + set => s_current = value; + } + + /// + /// Gets the backend associated with this application. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IUICoreBackend Backend { get; } + + /// + /// Gets the application information. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IApplicationInfo ApplicationInfo { get; } + + /// + /// Gets the directory information. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + IDirectoryInfo DirectoryInfo { get; } + + /// + /// Adds a delegate to be called when the main loop is idle. + /// + /// The delegate to call. + /// true if the delegate was added successfully; otherwise, false. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + bool AddIdle(Delegate func); + + /// + /// Removes a previously added idle delegate. + /// + /// The delegate to remove. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void RemoveIdle(Delegate func); + + /// + /// Gets the default window of the application. + /// + /// The default window. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + TWindow GetDefaultWindow(); + + #region Events + + /// + /// Occurs before the application is created. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler PreCreated; + + /// + /// Occurs when the application is created. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler Created; + + /// + /// Occurs when the application is terminated. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler Terminated; + + /// + /// Occurs when the application is paused. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler Paused; + + /// + /// Occurs when the application is resumed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler Resumed; + + /// + /// Occurs when the application receives an app control request. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler AppControlReceived; + + /// + /// Occurs when a low memory condition is reported by the system. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler LowMemory; + + /// + /// Occurs when a low battery condition is reported by the system. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler LowBattery; + + /// + /// Occurs when the system language is changed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler LocaleChanged; + + /// + /// Occurs when the region format of the system is changed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler RegionFormatChanged; + + /// + /// Occurs when the device orientation is changed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler DeviceOrientationChanged; + + /// + /// Occurs when the system time zone is changed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + event EventHandler TimeZoneChanged; + + #endregion + + #region Methods + + /// + /// Invoked before the application is created. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnPreCreate(); + + /// + /// Invoked when the application is created. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnCreate(); + + /// + /// Invoked when the application is terminated. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnTerminate(); + + /// + /// Invoked when the application is paused. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnPause(); + + /// + /// Invoked when the application is resumed. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnResume(); + + /// + /// Invoked when the application receives an app control request. + /// + /// The event data containing the received application control. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnAppControlReceived(AppControlReceivedEventArgs e); + + /// + /// Invoked when a low memory event is reported by the system. + /// + /// The event data describing the low memory status. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnLowMemory(LowMemoryEventArgs e); + + /// + /// Invoked when a low battery event is reported by the system. + /// + /// The event data describing the low battery status. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnLowBattery(LowBatteryEventArgs e); + + /// + /// Invoked when the system language is changed. + /// + /// The event data describing the new locale. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnLocaleChanged(LocaleChangedEventArgs e); + + /// + /// Invoked when the region format is changed. + /// + /// The event data describing the new region. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnRegionFormatChanged(RegionFormatChangedEventArgs e); + + /// + /// Invoked when the device orientation is changed. + /// + /// The event data describing the new orientation. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnDeviceOrientationChanged(DeviceOrientationEventArgs e); + + /// + /// Invoked when the system time zone is changed. + /// + /// The event data describing the new time zone. + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + void OnTimeZoneChanged(TimeZoneChangedEventArgs e); + + #endregion + } +} \ No newline at end of file diff --git a/src/Tizen.NUI/Tizen.NUI.csproj b/src/Tizen.NUI/Tizen.NUI.csproj index 6e339531820..3471fd1e16c 100755 --- a/src/Tizen.NUI/Tizen.NUI.csproj +++ b/src/Tizen.NUI/Tizen.NUI.csproj @@ -24,6 +24,7 @@ + diff --git a/src/Tizen.NUI/src/internal/Application/NUICoreBackend.cs b/src/Tizen.NUI/src/internal/Application/NUICoreBackend.cs index 48fa7ed7241..dc92c8ea771 100755 --- a/src/Tizen.NUI/src/internal/Application/NUICoreBackend.cs +++ b/src/Tizen.NUI/src/internal/Application/NUICoreBackend.cs @@ -24,7 +24,7 @@ namespace Tizen.NUI { - class NUICoreBackend : ICoreTaskBackend + class NUICoreBackend : ICoreTaskBackend, IUICoreBackend { /// /// The Application instance to connect event. diff --git a/src/Tizen.NUI/src/public/Application/NUIApplication.cs b/src/Tizen.NUI/src/public/Application/NUIApplication.cs index 1c5e5276722..69268b0309e 100755 --- a/src/Tizen.NUI/src/public/Application/NUIApplication.cs +++ b/src/Tizen.NUI/src/public/Application/NUIApplication.cs @@ -32,7 +32,7 @@ namespace Tizen.NUI /// Represents an application that have a UI screen. The NUIApplication class has a default stage. /// /// 3 - public class NUIApplication : CoreApplication + public class NUIApplication : CoreApplication, IUIApplication { private static bool _isUsingXaml = true; @@ -345,6 +345,13 @@ public NUIApplication(ThemeOptions option, WindowData windowData) : base(new NUI ApplyThemeOption(option); } + /// + /// Occurs before the application is created. + /// + /// This will be public opened in next tizen after ACR done. (Before ACR, need to be hidden as inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public event EventHandler PreCreated; + /// /// The Resumed event handler. /// This event is triggered when the application resumes from being paused or stopped. @@ -557,6 +564,7 @@ public static void RegisterAssembly(Assembly assembly) /// 4 public override void Run(string[] args) { + IUIApplication.Current = this; Backend.AddEventHandler(EventType.PreCreated, OnPreCreate); Backend.AddEventHandler(EventType.Resumed, ResumeHandler); Backend.AddEventHandler(EventType.Paused, PauseHandler); @@ -828,6 +836,7 @@ protected virtual void OnPreCreate() { GetDefaultWindow().EnableBorder(borderInterface, new Window.BorderCloseDelegate(Exit)); } + PreCreated?.Invoke(this, EventArgs.Empty); Tizen.Tracer.End(); } @@ -952,6 +961,119 @@ private void PauseHandler() Paused?.Invoke(this, EventArgs.Empty); } + #region IUIApplication Interface + + /// + /// Gets the backend associated with this application as . + /// + [EditorBrowsable(EditorBrowsableState.Never)] + IUICoreBackend IUIApplication.Backend => (NUICoreBackend)base.Backend; + + /// + /// Gets the application information as . + /// + [EditorBrowsable(EditorBrowsableState.Never)] + IApplicationInfo IUIApplication.ApplicationInfo => ApplicationInfo; + + /// + /// Gets the directory information as . + /// + [EditorBrowsable(EditorBrowsableState.Never)] + IDirectoryInfo IUIApplication.DirectoryInfo => DirectoryInfo; + + /// + /// Gets the default window as interface. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + TWindow IUIApplication.GetDefaultWindow() => (TWindow)(object)GetDefaultWindow(); + + /// + /// Adds a delegate to be called when the main loop is idle. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + bool IUIApplication.AddIdle(Delegate func) => AddIdle(func); + + /// + /// Removes a previously added idle delegate. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.RemoveIdle(Delegate func) => RemoveIdle(func); + + // Methods - explicit interface implementation + /// + /// Invoked before the application is created. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnPreCreate() => OnPreCreate(); + + /// + /// Invoked when the application is created. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnCreate() => OnCreate(); + + /// + /// Invoked when the application is terminated. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnTerminate() => OnTerminate(); + + /// + /// Invoked when the application is paused. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnPause() => OnPause(); + + /// + /// Invoked when the application is resumed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnResume() => OnResume(); + + /// + /// Invoked when the application receives an app control request. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnAppControlReceived(AppControlReceivedEventArgs e) => OnAppControlReceived(e); + + /// + /// Invoked when a low memory event is reported by the system. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnLowMemory(LowMemoryEventArgs e) => OnLowMemory(e); + + /// + /// Invoked when a low battery event is reported by the system. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnLowBattery(LowBatteryEventArgs e) => OnLowBattery(e); + + /// + /// Invoked when the system language is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnLocaleChanged(LocaleChangedEventArgs e) => OnLocaleChanged(e); + + /// + /// Invoked when the region format is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnRegionFormatChanged(RegionFormatChangedEventArgs e) => OnRegionFormatChanged(e); + + /// + /// Invoked when the device orientation is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnDeviceOrientationChanged(DeviceOrientationEventArgs e) => OnDeviceOrientationChanged(e); + + /// + /// Invoked when the system time zone is changed. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + void IUIApplication.OnTimeZoneChanged(TimeZoneChangedEventArgs e) => OnTimeZoneChanged(e); + + #endregion + /// /// Enum of Application status ///