From: tscholb Date: Mon, 6 Apr 2020 07:29:18 +0000 (+0900) Subject: Add API for adding WidgetInfo in runtime (#1517) X-Git-Tag: accepted/tizen/unified/20210219.040944~800 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2a1b3bc9ad80a4bfcd563fbac3e9e0eb5b533b9b;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git Add API for adding WidgetInfo in runtime (#1517) --- diff --git a/src/Tizen.NUI/src/internal/NUIWidgetCoreBackend.cs b/src/Tizen.NUI/src/internal/NUIWidgetCoreBackend.cs index 7798fd6..69828cc 100755 --- a/src/Tizen.NUI/src/internal/NUIWidgetCoreBackend.cs +++ b/src/Tizen.NUI/src/internal/NUIWidgetCoreBackend.cs @@ -102,6 +102,14 @@ namespace Tizen.NUI _widgetInfo = widgetInfo; } + public void AddWidgetInfo(Dictionary widgetInfo) + { + if (_application != null) + { + _application.AddWidgetInfo( widgetInfo ); + } + } + /// /// Run Application. /// diff --git a/src/Tizen.NUI/src/internal/WidgetApplication.cs b/src/Tizen.NUI/src/internal/WidgetApplication.cs index aca566a..680602f 100755 --- a/src/Tizen.NUI/src/internal/WidgetApplication.cs +++ b/src/Tizen.NUI/src/internal/WidgetApplication.cs @@ -107,6 +107,19 @@ namespace Tizen.NUI _widgetInfo = widgetInfo; } + public void AddWidgetInfo(Dictionary newWidgetInfo) + { + foreach (KeyValuePair widgetInfo in newWidgetInfo ) + { + if ( _widgetInfo.ContainsKey(widgetInfo.Key) == false ) + { + _widgetInfo.Add(widgetInfo.Key, widgetInfo.Value ); + string widgetName = widgetInfo.Value; + RegisterWidgetCreatingFunction(ref widgetName); + } + } + } + public static System.IntPtr WidgetCreateFunction(ref string widgetName) { Dictionary widgetInfo = (Instance as WidgetApplication).WidgetInfo; diff --git a/src/Tizen.NUI/src/public/NUIWidgetApplication.cs b/src/Tizen.NUI/src/public/NUIWidgetApplication.cs index e2a92fc..2857c66 100755 --- a/src/Tizen.NUI/src/public/NUIWidgetApplication.cs +++ b/src/Tizen.NUI/src/public/NUIWidgetApplication.cs @@ -62,6 +62,28 @@ namespace Tizen.NUI core?.RegisterWidgetInfo(new Dictionary { { widgetType, ApplicationInfo.ApplicationId } }); } + /// + /// Add WidgetInfo in runtime + /// + /// Derived widget class type. + [EditorBrowsable(EditorBrowsableState.Never)] + public void AddWidgetType( System.Type widgetType ) + { + NUIWidgetCoreBackend core = Backend as NUIWidgetCoreBackend; + core?.AddWidgetInfo(new Dictionary { { widgetType, ApplicationInfo.ApplicationId } }); + } + + /// + /// Add WidgetInfo in runtime + /// + /// Derived widget class type. + [EditorBrowsable(EditorBrowsableState.Never)] + public void AddWidgetType( Dictionary widgetTypes ) + { + NUIWidgetCoreBackend core = Backend as NUIWidgetCoreBackend; + core?.AddWidgetInfo(widgetTypes); + } + internal WidgetApplication ApplicationHandle { get