Skip to content

[Tizen.Applications] Update Team Application Features#7638

Open
newb1e-kim wants to merge 6 commits into
Samsung:mainfrom
newb1e-kim:API15_TAM
Open

[Tizen.Applications] Update Team Application Features#7638
newb1e-kim wants to merge 6 commits into
Samsung:mainfrom
newb1e-kim:API15_TAM

Conversation

@newb1e-kim

Copy link
Copy Markdown
Contributor
  • Cherry-picks of TeamApplication Impl in API14

[Tizen.Applications] Fix wrong library version deps
[Tizen.Applications] Remove TeamLoop CreateLib Op & Create Launcher
[Tizen.Applications] Implement TeamApplication Base Class
[Tizen.Applications] Fix TargetFrameWork net8.0
[Tizen.Applications] Using NUI.UIContext in TeamApplicaiton

API13_MR target currently use libiniparser.so.4, not libiniparser.so.1
…amsung#7597)

* [Tizen.Applications] Remove TeamLoop CreateLib Ops

- TeamLoop now use app exec path as dynlib
- The operation is not required

* [Tizen.Applications] Implement Team Launcher dll

- Team Launcher dll will be used as team application launcher

Signed-off-by: Jihoi Kim <jihoi.kim@samsung.com>

---------

Signed-off-by: Jihoi Kim <jihoi.kim@samsung.com>
* [Tizen.Applications] Move Files, Remove unrequired deps
* [Tizen.Applications] Use NUIApplicationInitializer in init step
* [Tizen.Applications] Add UIApp Interfaces
* [Tizen.Applications] Apply IApplicationInfo and IDirectoryInfo
* [Tizen.Applications] Apply IUIApplication in TeamCoreUiApplication
* [Tizen.Applications] Implement IUiApplication.Current
* [Tizen.Applications] Add GetApplication methods to TeamManager
* [Tizen.Applications] Remove Unneccessary Impl
* [Tizen.Applications] Add Stacktrace Print in TeamApplication
* [Tizen.Applications] Fix Resume/Pause EventHandler
* [Tizen.NUI] Apply IUIApplication interfaces to NUIApplication

Signed-off-by: Jihoi Kim <jihoi.kim@samsung.com>
- Team Application model is developed in terms of net6.0
- To apply the patch into API15, fix the targetframework accordingly.

Signed-off-by: Jihoi Kim <jihoi.kim@samsung.com>
- Use NUI.UIContext.Instance.AddIdle & RemoveIdle
- Use NUI.UIContext.Instance.GetWindowList
@TizenAPI-Bot

Copy link
Copy Markdown
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.

Added: 23, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_AppControlReceived(System.EventHandler`1<Tizen.Applications.AppControlReceivedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_Created(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_DeviceOrientationChanged(System.EventHandler`1<Tizen.Applications.DeviceOrientationEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_LocaleChanged(System.EventHandler`1<Tizen.Applications.LocaleChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_LowBattery(System.EventHandler`1<Tizen.Applications.LowBatteryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_LowMemory(System.EventHandler`1<Tizen.Applications.LowMemoryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_RegionFormatChanged(System.EventHandler`1<Tizen.Applications.RegionFormatChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_Terminated(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_TimeZoneChanged(System.EventHandler`1<Tizen.Applications.TimeZoneChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_AppControlReceived(System.EventHandler`1<Tizen.Applications.AppControlReceivedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_Created(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_DeviceOrientationChanged(System.EventHandler`1<Tizen.Applications.DeviceOrientationEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_LocaleChanged(System.EventHandler`1<Tizen.Applications.LocaleChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_LowBattery(System.EventHandler`1<Tizen.Applications.LowBatteryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_LowMemory(System.EventHandler`1<Tizen.Applications.LowMemoryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_RegionFormatChanged(System.EventHandler`1<Tizen.Applications.RegionFormatChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_Terminated(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_TimeZoneChanged(System.EventHandler`1<Tizen.Applications.TimeZoneChangedEventArgs>)

+ /// <since_tizen>9</since_tizen
+ Tizen.Applications.ResourceControl

+ /// <since_tizen>9</since_tizen
+ System.Boolean Tizen.Applications.ResourceControl::IsAutoClose()

+ /// <since_tizen>9</since_tizen
+ System.String Tizen.Applications.ResourceControl::MaxResourceVersion()

+ /// <since_tizen>9</since_tizen
+ System.String Tizen.Applications.ResourceControl::MinResourceVersion()

+ /// <since_tizen>9</since_tizen
+ System.String Tizen.Applications.ResourceControl::ResourceType()

Internal API Changed

Added: 120, Removed: 14, Changed: 1

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a common interface layer (including IUIApplication, IApplicationInfo, IDirectoryInfo, and IUICoreBackend) to unify standard Tizen NUI applications with the Team application framework. Key changes include refactoring interop definitions into the Tizen.Applications namespace, updating backends to implement the new interfaces, and adding a TeamLauncher utility. Review feedback highlights a compilation error in TeamCoreUiApplication requiring explicit interface casting, a logic error in TeamLauncher argument processing, and opportunities to improve type safety and code style.

Comment thread src/Tizen.Applications.TeamLauncher/TeamLauncher.cs Outdated
Comment thread src/Tizen.Applications.Team/Tizen.Applications/TeamManager.cs
Comment thread src/Tizen.Applications.Team/Tizen.Applications.CoreBackend/TeamUICoreBackend.cs Outdated
Comment thread src/Tizen.Applications.TeamLauncher/TeamLauncher.cs
Comment thread src/Tizen.Applications.TeamLauncher/TeamLauncher.cs Outdated
@JoonghyunCho

Copy link
Copy Markdown
Member

🤖 [AI Review]
Left 4 inline comments (🔴 2, 🟡 2). See inline for details.

Scope checked:

  • New public surface (IApplicationInfo, IDirectoryInfo, IUICoreBackend, IUIApplication, TeamCoreUiApplication) — all carry [EditorBrowsable(EditorBrowsableState.Never)] (in-house pre-ACR), so XML doc tag completeness is not enforced; flagged stray /// notes outside tags instead.
  • Lifecycle correctness in TeamUICoreBackend.OnTerminateNative — caught gated UnsetDefaultWindow() leaving the registered default window dangling when no Terminated handler exists.
  • Argument forwarding in the new Tizen.Applications.TeamLauncher entry point — caught off-by-one in args.Length > 1 causing single-arg launches to lose their argument.
  • Interface wiring in NUIApplication (now implements IUIApplication) — explicit interface impls correctly delegate to existing virtual methods; IUIApplication.Current = this set in Run.
  • Deprecation/removal artifacts in Tizen.Applications.Team (removed CultureInfoHelper, GSourceManager, SystemLocaleConverter, etc.) — no dangling references found in the remaining Team interop layer.

Automated review by AI assistant

When using TeamUiApplication, although it does not require
dali default window, it shows and initializes the window.
This patch fix teamloop to hide and set 1,1 to avoid
unwanted window shown.
Also, fix some type and static analysis issue by AI
@TizenAPI-Bot

Copy link
Copy Markdown
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.

Added: 23, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_AppControlReceived(System.EventHandler`1<Tizen.Applications.AppControlReceivedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_Created(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_DeviceOrientationChanged(System.EventHandler`1<Tizen.Applications.DeviceOrientationEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_LocaleChanged(System.EventHandler`1<Tizen.Applications.LocaleChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_LowBattery(System.EventHandler`1<Tizen.Applications.LowBatteryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_LowMemory(System.EventHandler`1<Tizen.Applications.LowMemoryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_RegionFormatChanged(System.EventHandler`1<Tizen.Applications.RegionFormatChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_Terminated(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.add_TimeZoneChanged(System.EventHandler`1<Tizen.Applications.TimeZoneChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_AppControlReceived(System.EventHandler`1<Tizen.Applications.AppControlReceivedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_Created(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_DeviceOrientationChanged(System.EventHandler`1<Tizen.Applications.DeviceOrientationEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_LocaleChanged(System.EventHandler`1<Tizen.Applications.LocaleChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_LowBattery(System.EventHandler`1<Tizen.Applications.LowBatteryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_LowMemory(System.EventHandler`1<Tizen.Applications.LowMemoryEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_RegionFormatChanged(System.EventHandler`1<Tizen.Applications.RegionFormatChangedEventArgs>)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_Terminated(System.EventHandler)

+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.NUI.NUIApplication::Tizen.Applications.IUIApplication.remove_TimeZoneChanged(System.EventHandler`1<Tizen.Applications.TimeZoneChangedEventArgs>)

+ /// <since_tizen>9</since_tizen
+ Tizen.Applications.ResourceControl

+ /// <since_tizen>9</since_tizen
+ System.Boolean Tizen.Applications.ResourceControl::IsAutoClose()

+ /// <since_tizen>9</since_tizen
+ System.String Tizen.Applications.ResourceControl::MaxResourceVersion()

+ /// <since_tizen>9</since_tizen
+ System.String Tizen.Applications.ResourceControl::MinResourceVersion()

+ /// <since_tizen>9</since_tizen
+ System.String Tizen.Applications.ResourceControl::ResourceType()

Internal API Changed

Added: 122, Removed: 14, Changed: 1

Comment on lines +221 to +223
UIContext.Instance?.GetDefaultWindow()?.SetPositionSize(new Rectangle(0, 0, 1, 1));
UIContext.Instance?.GetDefaultWindow()?.SetTransparency(true);
UIContext.Instance?.GetDefaultWindow()?.Hide();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 [AI Review]
🟡 Suggestion: UIContext.Instance?.GetDefaultWindow() re-runs a PInvoke + Registry lookup + Interop.BaseHandle.DeleteBaseHandle three times in a row (see UIContext.cs:104-122); cache the window once so the cost is paid only once and a single null guard covers all three operations atomically.

Suggested change
UIContext.Instance?.GetDefaultWindow()?.SetPositionSize(new Rectangle(0, 0, 1, 1));
UIContext.Instance?.GetDefaultWindow()?.SetTransparency(true);
UIContext.Instance?.GetDefaultWindow()?.Hide();
var window = UIContext.Instance?.GetDefaultWindow();
if (window != null)
{
window.SetPositionSize(new Rectangle(0, 0, 1, 1));
window.SetTransparency(true);
window.Hide();
}

@JoonghyunCho

Copy link
Copy Markdown
Member

🤖 [AI Review]

Reviewed — no findings. (delta review of commit b99206e3 since the prior review)

Scope checked:

  • TeamUICoreBackend.OnTerminateNative: verified UnsetDefaultWindow() is hoisted out of the inner handler block so it now always runs after the Terminated dispatch — including when a handler throws — with no double-invocation path.
  • TeamLoop.DoOnLoopCreate: new default-window init (1×1 size, transparency, hide) is guarded by null-conditional UIContext.Instance?.GetDefaultWindow()? chains — null-safe at startup.
  • TeamLauncher.Main: arg-copy guard corrected from args.Length > 1 to > 0 (the old bound silently dropped a single-element args set into argsClone[1..]); entry assembly name fixed to Tizen.Applications.TeamLauncher.dll; removed the now-unused System.Runtime.Loader using.
  • All three touched members are internal/private — no public API signature change or XML-doc impact in this delta.

No 🔴 critical issues, no 🟡 suggestions to flag.


Automated review — final merge decision rests with human reviewers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants