Register the circular ui render to static register (#192)
author유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 <rina6350.you@samsung.com>
Mon, 13 Apr 2020 04:01:51 +0000 (13:01 +0900)
committer안주원/Common Platform Lab(SR)/Principal Engineer/삼성전자 <juwon.ahn@samsung.com>
Mon, 13 Apr 2020 04:01:51 +0000 (13:01 +0900)
* Register the circular ui rendereres to static register

* Add the registration for circular ui

src/XSF/Tizen.Wearable.CircularUI.Forms.Renderer/CircleImageRenderer.cs
src/XSF/Tizen.Wearable.CircularUI.Forms.Renderer/CircularUIForms.cs
src/XSF/Tizen.Wearable.CircularUI.Forms.Renderer/MediaViewRenderer.cs
src/XSF/Tizen.Wearable.CircularUI.Forms.Renderer/RadioRenderer.cs
src/XSF/Xamarin.Forms.Platform.Tizen/Forms.cs
src/XSF/Xamarin.Forms.Platform.Tizen/StaticRegistrar.cs

index b0c338bdd5e5c98c644f52da2384545cb9d00cb7..63c4282bf56eb97986afe74a526c841f6128c144 100644 (file)
@@ -15,7 +15,6 @@
  */
 
 using System;
-using UIComponents.Tizen.Wearable.Renderers;
 using Xamarin.Forms.Platform.Tizen;
 using FormsNative = Xamarin.Forms.Platform.Tizen.Native;
 using System.ComponentModel;
@@ -24,7 +23,7 @@ using Tizen.Wearable.CircularUI.Forms.Renderer;
 using Xamarin.Forms;
 
 [assembly: ExportRenderer(typeof(CircleImage), typeof(CircleImageRenderer))]
-namespace UIComponents.Tizen.Wearable.Renderers
+namespace Tizen.Wearable.CircularUI.Forms.Renderer
 {
        public class CircleImageRenderer : ViewRenderer<CircleImage, FormsNative.Image>
        {
index eaa415867af47c0be00ecd9f7bed41c2de13cb9d..059ff331c6debc487660cf0bc598aa4462416556 100644 (file)
@@ -1,9 +1,8 @@
 using System;
 using System.ComponentModel;
 using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using ElmSharp;
+using Xamarin.Forms;
 using Tizen.Wearable.CircularUI.Forms.Renderer;
 
 namespace Tizen.Wearable.CircularUI.Forms
@@ -16,5 +15,35 @@ namespace Tizen.Wearable.CircularUI.Forms
                        EvasObject win = windows as EvasObject;
                        NativeFactory.PrecreateNatives(win);
                }
+
+               public static Dictionary<Type, Func<IRegisterable>> StaticHandlers = new Dictionary<Type, Func<IRegisterable>>()
+               {
+                       { typeof(Check), () => new CheckRenderer() },
+                       { typeof(CircleDateTimeSelector), () => new CircleDateTimeSelectorRenderer() },
+                       { typeof(CircleImage), () => new CircleImageRenderer() },
+                       { typeof(CircleListView), () => new CircleListViewRenderer() },
+                       { typeof(CirclePage), ()=> new CirclePageRenderer() },
+                       { typeof(CircleScrollView), () => new CircleScrollViewRenderer() },
+                       { typeof(CircleStepper), () => new CircleStepperRenderer() },
+                       { typeof(CircleSurfaceView), () => new CircleSurfaceViewRenderer() },
+                       { typeof(CircularShell), () => new ShellRenderer() },
+                       { typeof(ContentButton), () => new ContentButtonRenderer() },
+                       { typeof(GoogleMapView), () => new GoogleMapViewRenderer() },
+                       { typeof(IndexPage), () => new IndexPageRenderer() },
+                       { typeof(MediaView), () => new MediaViewRenderer() },
+                       { typeof(PopupEntry), () => new PopupEntryRenderer() },
+                       { typeof(Radio), () => new RadioRenderer() },
+                       { typeof(TwoButtonPage), () => new TwoButtonPageRenderer() },
+               };
+
+               public static void RegisterDependencyService()
+               {
+                       //Dependencies
+                       DependencyService.Register<IInformationPopup, InformationPopupImplementation>();
+                       DependencyService.Register<ITwoButtonPopup, TwoButtonPopupImplementation>();
+                       DependencyService.Register<IToast, ToastImplementation>();
+                       DependencyService.Register<IPlatformMediaPlayer, MediaPlayerImpl>();
+               }
+
        }
 }
\ No newline at end of file
index c9c4d83f566d40a35e79b43cf8acc9229662029f..005a1c60b17f8872179e645e0b075d338d80e643 100644 (file)
  */
 
 using Tizen.Wearable.CircularUI.Forms;
-using Tizen.Wearable.CircularUI.Renderer;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.Tizen;
 using MMView = Tizen.Multimedia.MediaView;
 using XForms = Xamarin.Forms.Forms;
 
-[assembly: ExportRenderer(typeof(MediaView), typeof(MediaViewRenderer))]
-namespace Tizen.Wearable.CircularUI.Renderer
+[assembly: ExportRenderer(typeof(MediaView), typeof(Tizen.Wearable.CircularUI.Forms.Renderer.MediaViewRenderer))]
+namespace Tizen.Wearable.CircularUI.Forms.Renderer
 {
        public class MediaViewRenderer : ViewRenderer<MediaView, LayoutCanvas>, IMediaViewProvider
        {
index b27e89a832fb8de3e0239642c299b85b36582abd..de8112a3258ea521d45d4e0bdbd59c67a961ff6c 100644 (file)
@@ -25,10 +25,8 @@ using ERadio = ElmSharp.Radio;
 using XForms = Xamarin.Forms.Forms;
 
 [assembly: ExportRenderer(typeof(Radio), typeof(RadioRenderer))]
-
 namespace Tizen.Wearable.CircularUI.Forms.Renderer
 {
-
        public class RadioRenderer : ViewRenderer<Radio, ERadio>
        {
                static Lazy<RadioGroupManager> s_GroupManager = new Lazy<RadioGroupManager>();
index 3d8fd3828c7bb5eb48455cc35da005d216ac0c5a..1ec5da0f95e8b3014282bff7c6dae6363fd14d13 100644 (file)
@@ -15,6 +15,7 @@ using ELayout = ElmSharp.Layout;
 using DeviceOrientation = Xamarin.Forms.Internals.DeviceOrientation;
 using Xamarin.Forms.PlatformConfiguration.TizenSpecific;
 using ElmSharp.Wearable;
+using Tizen.Wearable.CircularUI.Forms;
 
 namespace Xamarin.Forms
 {
@@ -383,7 +384,6 @@ namespace Xamarin.Forms
 
                static void Init()
                {
-                       TizenPlatformServices.AppDomain.CurrentDomain.AddAssembly(typeof(View).Assembly);
                        var appAdapter = new AdaptedFormsApplication();
                        Init(appAdapter, false);
                        IsPreloaded = true;
@@ -449,6 +449,13 @@ namespace Xamarin.Forms
                                Device.info = info;
                        }
 
+                       if (!Forms.IsInitialized && !Forms.IsPreloaded)
+                       {
+                               StaticRegistrar.RegisterHandlers(CircularUIForms.StaticHandlers);
+                               CircularUIForms.RegisterDependencyService();
+                               TizenPlatformServices.AppDomain.CurrentDomain.AddAssembly(Assembly.GetAssembly(typeof(Xamarin.Forms.View)));
+                       }
+
                        if (!Forms.IsInitialized || Forms.IsPreloaded)
                        {
                                if (options != null)
@@ -498,6 +505,11 @@ namespace Xamarin.Forms
                                                }
                                                else
                                                {
+                                                       // In .NETCore, AppDomain feature is not supported.
+                                                       // The list of assemblies returned by AppDomain.GetAssemblies() method should be registered manually.
+                                                       // The assembly of the executing application and referenced assemblies of it are added into the list here.
+                                                       TizenPlatformServices.AppDomain.CurrentDomain.RegisterAssemblyRecursively(application.GetType().GetTypeInfo().Assembly);
+
                                                        Registrar.RegisterAll(new Type[]
                                                        {
                                                                typeof(ExportRendererAttribute),
@@ -769,6 +781,7 @@ namespace Xamarin.Forms
                                System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);
                        }
                        global::Xamarin.Forms.Platform.Tizen.Native.NativeFactory.PrecreateNatives(preloadedWindow.Window);
+                       global::Tizen.Wearable.CircularUI.Forms.CircularUIForms.Preload(preloadedWindow.Window);
 
                        return preloadedWindow.Window;
                }
index ded2f78c3fc8947c27e1acb8f1e6de6928ad294e..ad57faecf07fa48cd9abbe3832bd2dec12b19b64 100644 (file)
@@ -68,64 +68,67 @@ namespace Xamarin.Forms.Platform.Tizen
 
                public static void RegisterHandlers(Dictionary<Type, Func<IRegisterable>> customHandlers)
                {
-                       //Renderers
-                       Registered.Register(typeof(Layout), () => new LayoutRenderer());
-                       Registered.Register(typeof(ScrollView), () => new ScrollViewRenderer());
-                       Registered.Register(typeof(CarouselPage), () => new CarouselPageRenderer());
-                       Registered.Register(typeof(Page), () => new PageRenderer());
-                       Registered.Register(typeof(NavigationPage), () => new NavigationPageRenderer());
-                       Registered.Register(typeof(MasterDetailPage), () => new MasterDetailPageRenderer());
-                       Registered.Register(typeof(TabbedPage), () => new TabbedPageRenderer());
-                       Registered.Register(typeof(Shell), () => new ShellRenderer());
-                       Registered.Register(typeof(Label), () => new LabelRenderer());
-                       Registered.Register(typeof(Button), () => new ButtonRenderer());
-                       Registered.Register(typeof(Image), () => new ImageRenderer());
-                       Registered.Register(typeof(Slider), () => new SliderRenderer());
-                       Registered.Register(typeof(Picker), () => new PickerRenderer());
-                       Registered.Register(typeof(Frame), () => new FrameRenderer());
-                       Registered.Register(typeof(Stepper), () => new StepperRenderer());
-                       Registered.Register(typeof(DatePicker), () => new DatePickerRenderer());
-                       Registered.Register(typeof(TimePicker), () => new TimePickerRenderer());
-                       Registered.Register(typeof(ProgressBar), () => new ProgressBarRenderer());
-                       Registered.Register(typeof(Switch), () => new SwitchRenderer());
-                       Registered.Register(typeof(CheckBox), () => new CheckBoxRenderer());
-                       Registered.Register(typeof(ListView), () => new ListViewRenderer());
-                       Registered.Register(typeof(BoxView), () => new BoxViewRenderer());
-                       Registered.Register(typeof(ActivityIndicator), () => new ActivityIndicatorRenderer());
-                       Registered.Register(typeof(SearchBar), () => new SearchBarRenderer());
-                       Registered.Register(typeof(Entry), () => new EntryRenderer());
-                       Registered.Register(typeof(Editor), () => new EditorRenderer());
-                       Registered.Register(typeof(TableView), () => new TableViewRenderer());
-                       Registered.Register(typeof(NativeViewWrapper), () => new NativeViewWrapperRenderer());
-                       Registered.Register(typeof(WebView), () => new WebViewRenderer());
-                       Registered.Register(typeof(ImageButton), () => new ImageButtonRenderer());
-                       Registered.Register(typeof(StructuredItemsView), () => new StructuredItemsViewRenderer());
-                       Registered.Register(typeof(CarouselView), () => new CarouselViewRenderer());
-                       Registered.Register(typeof(SwipeView), () => new SwipeViewRenderer());
-                       Registered.Register(typeof(RefreshView), () => new RefreshViewRenderer());
-                       Registered.Register(typeof(MediaElement), () => new MediaElementRenderer());
-
-                       //ImageSourceHandlers
-                       Registered.Register(typeof(FileImageSource), () => new FileImageSourceHandler());
-                       Registered.Register(typeof(StreamImageSource), () => new StreamImageSourceHandler());
-                       Registered.Register(typeof(UriImageSource), () => new UriImageSourceHandler());
-
-                       //Cell Renderers
-                       Registered.Register(typeof(TextCell), () => new TextCellRenderer());
-                       Registered.Register(typeof(ImageCell), () => new ImageCellRenderer());
-                       Registered.Register(typeof(SwitchCell), () => new SwitchCellRenderer());
-                       Registered.Register(typeof(EntryCell), () => new EntryCellRenderer());
-                       Registered.Register(typeof(ViewCell), () => new ViewCellRenderer());
-
-                       //Font Loaders
-                       Registered.Register(typeof(EmbeddedFont), () => new EmbeddedFontLoader());
-
-                       //Dependencies
-                       DependencyService.Register<ISystemResourcesProvider, ResourcesProvider>();
-                       DependencyService.Register<IDeserializer, Deserializer>();
-                       DependencyService.Register<INativeBindingService, NativeBindingService>();
-                       DependencyService.Register<INativeValueConverterService, NativeValueConverterService>();
-                       DependencyService.Register<IPlatformMediaPlayer, MediaPlayerImpl>();
+                       if (!Forms.IsPreloaded)
+                       {
+                               //Renderers
+                               Registered.Register(typeof(Layout), () => new LayoutRenderer());
+                               Registered.Register(typeof(ScrollView), () => new ScrollViewRenderer());
+                               Registered.Register(typeof(CarouselPage), () => new CarouselPageRenderer());
+                               Registered.Register(typeof(Page), () => new PageRenderer());
+                               Registered.Register(typeof(NavigationPage), () => new NavigationPageRenderer());
+                               Registered.Register(typeof(MasterDetailPage), () => new MasterDetailPageRenderer());
+                               Registered.Register(typeof(TabbedPage), () => new TabbedPageRenderer());
+                               Registered.Register(typeof(Shell), () => new ShellRenderer());
+                               Registered.Register(typeof(Label), () => new LabelRenderer());
+                               Registered.Register(typeof(Button), () => new ButtonRenderer());
+                               Registered.Register(typeof(Image), () => new ImageRenderer());
+                               Registered.Register(typeof(Slider), () => new SliderRenderer());
+                               Registered.Register(typeof(Picker), () => new PickerRenderer());
+                               Registered.Register(typeof(Frame), () => new FrameRenderer());
+                               Registered.Register(typeof(Stepper), () => new StepperRenderer());
+                               Registered.Register(typeof(DatePicker), () => new DatePickerRenderer());
+                               Registered.Register(typeof(TimePicker), () => new TimePickerRenderer());
+                               Registered.Register(typeof(ProgressBar), () => new ProgressBarRenderer());
+                               Registered.Register(typeof(Switch), () => new SwitchRenderer());
+                               Registered.Register(typeof(CheckBox), () => new CheckBoxRenderer());
+                               Registered.Register(typeof(ListView), () => new ListViewRenderer());
+                               Registered.Register(typeof(BoxView), () => new BoxViewRenderer());
+                               Registered.Register(typeof(ActivityIndicator), () => new ActivityIndicatorRenderer());
+                               Registered.Register(typeof(SearchBar), () => new SearchBarRenderer());
+                               Registered.Register(typeof(Entry), () => new EntryRenderer());
+                               Registered.Register(typeof(Editor), () => new EditorRenderer());
+                               Registered.Register(typeof(TableView), () => new TableViewRenderer());
+                               Registered.Register(typeof(NativeViewWrapper), () => new NativeViewWrapperRenderer());
+                               Registered.Register(typeof(WebView), () => new WebViewRenderer());
+                               Registered.Register(typeof(ImageButton), () => new ImageButtonRenderer());
+                               Registered.Register(typeof(StructuredItemsView), () => new StructuredItemsViewRenderer());
+                               Registered.Register(typeof(CarouselView), () => new CarouselViewRenderer());
+                               Registered.Register(typeof(SwipeView), () => new SwipeViewRenderer());
+                               Registered.Register(typeof(RefreshView), () => new RefreshViewRenderer());
+                               Registered.Register(typeof(MediaElement), () => new MediaElementRenderer());
+
+                               //ImageSourceHandlers
+                               Registered.Register(typeof(FileImageSource), () => new FileImageSourceHandler());
+                               Registered.Register(typeof(StreamImageSource), () => new StreamImageSourceHandler());
+                               Registered.Register(typeof(UriImageSource), () => new UriImageSourceHandler());
+
+                               //Cell Renderers
+                               Registered.Register(typeof(TextCell), () => new TextCellRenderer());
+                               Registered.Register(typeof(ImageCell), () => new ImageCellRenderer());
+                               Registered.Register(typeof(SwitchCell), () => new SwitchCellRenderer());
+                               Registered.Register(typeof(EntryCell), () => new EntryCellRenderer());
+                               Registered.Register(typeof(ViewCell), () => new ViewCellRenderer());
+
+                               //Font Loaders
+                               Registered.Register(typeof(EmbeddedFont), () => new EmbeddedFontLoader());
+
+                               //Dependencies
+                               DependencyService.Register<ISystemResourcesProvider, ResourcesProvider>();
+                               DependencyService.Register<IDeserializer, Deserializer>();
+                               DependencyService.Register<INativeBindingService, NativeBindingService>();
+                               DependencyService.Register<INativeValueConverterService, NativeValueConverterService>();
+                               DependencyService.Register<IPlatformMediaPlayer, MediaPlayerImpl>();
+                       }
 
                        //Custom Handlers
                        if (customHandlers != null)