summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Tizen/Forms.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.Tizen/Forms.cs')
-rw-r--r--Xamarin.Forms.Platform.Tizen/Forms.cs173
1 files changed, 173 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.Tizen/Forms.cs b/Xamarin.Forms.Platform.Tizen/Forms.cs
new file mode 100644
index 00000000..6aa0e62b
--- /dev/null
+++ b/Xamarin.Forms.Platform.Tizen/Forms.cs
@@ -0,0 +1,173 @@
+using System;
+using System.Reflection;
+using Tizen.Applications;
+using ElmSharp;
+
+namespace Xamarin.Forms.Platform.Tizen
+{
+ public static class Forms
+ {
+ class TizenDeviceInfo : DeviceInfo
+ {
+ readonly Size pixelScreenSize;
+
+ readonly Size scaledScreenSize;
+
+ readonly double scalingFactor;
+
+ public override Size PixelScreenSize
+ {
+ get
+ {
+ return this.pixelScreenSize;
+ }
+ }
+
+ public override Size ScaledScreenSize
+ {
+ get
+ {
+ return this.scaledScreenSize;
+ }
+ }
+
+ public override double ScalingFactor
+ {
+ get
+ {
+ return this.scalingFactor;
+ }
+ }
+
+ public TizenDeviceInfo(FormsApplication formsApplication)
+ {
+ // TODO: obtain screen data from device
+ pixelScreenSize = new Size();
+ scaledScreenSize = new Size();
+ scalingFactor = 0.0;
+ }
+ }
+
+ public static event EventHandler<ViewInitializedEventArgs> ViewInitialized;
+
+ public static FormsApplication Context
+ {
+ get;
+ internal set;
+ }
+
+ public static bool IsInitialized
+ {
+ get;
+ private set;
+ }
+
+ internal static TizenTitleBarVisibility TitleBarVisibility
+ {
+ get;
+ private set;
+ }
+
+ internal static void SendViewInitialized(this VisualElement self, EvasObject nativeView)
+ {
+ EventHandler<ViewInitializedEventArgs> viewInitialized = Forms.ViewInitialized;
+ if (viewInitialized != null)
+ {
+ viewInitialized.Invoke(self, new ViewInitializedEventArgs
+ {
+ View = self,
+ NativeView = nativeView
+ });
+ }
+ }
+
+ public static void SetTitleBarVisibility(TizenTitleBarVisibility visibility)
+ {
+ TitleBarVisibility = visibility;
+ }
+
+ public static void Init(FormsApplication application)
+ {
+ SetupInit(application);
+ }
+
+ static void SetupInit(FormsApplication application)
+ {
+ Color.Accent = GetAccentColor();
+
+ Context = application;
+
+ if (!IsInitialized)
+ {
+ Xamarin.Forms.Log.Listeners.Add(new XamarinLogListener());
+ if (System.Threading.SynchronizationContext.Current == null)
+ {
+ TizenSynchronizationContext.Initialize();
+ }
+ Elementary.Initialize();
+ Elementary.ThemeOverlay();
+ }
+
+ //TO-DO: Need to change to Tizen.
+ Device.OS = TargetPlatform.Other;
+
+#if !NET45
+ // 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.
+ Assembly asm = application.GetType().GetTypeInfo().Assembly;
+ TizenPlatformServices.AppDomain.CurrentDomain.RegisterAssembly(asm);
+ foreach (var refName in asm.GetReferencedAssemblies())
+ {
+ if (!refName.Name.StartsWith("System.") && !refName.Name.StartsWith("Microsoft."))
+ {
+ try
+ {
+ Assembly refAsm = Assembly.Load(refName);
+ TizenPlatformServices.AppDomain.CurrentDomain.RegisterAssembly(refAsm);
+ }
+ catch
+ {
+ Log.Warn("Reference Assembly can not be loaded. {0}", refName.FullName);
+ }
+ }
+ }
+#endif
+
+ Device.PlatformServices = new TizenPlatformServices(); ;
+ if (Device.info != null)
+ {
+ ((TizenDeviceInfo)Device.info).Dispose();
+ Device.info = null;
+ }
+
+ Device.Info = new Forms.TizenDeviceInfo(application);
+
+ if (!Forms.IsInitialized)
+ {
+ Registrar.RegisterAll(new Type[]
+ {
+ typeof(ExportRendererAttribute),
+ typeof(ExportImageSourceHandlerAttribute),
+ typeof(ExportCellAttribute),
+ });
+ }
+
+ // FIXME: We should consider TV and Common (Desktop) profiles also.
+ Device.Idiom = TargetIdiom.Phone;
+
+ IsInitialized = true;
+ }
+
+ static Color GetAccentColor()
+ {
+ // On Windows Phone, this is the complementary color chosen by the user.
+ // Good Windows Phone applications use this as part of their styling to provide a native look and feel.
+ // On iOS and Android this instance is set to a contrasting color that is visible on the default
+ // background but is not the same as the default text color.
+
+ // TODO: implement me
+ return Color.Black;
+ }
+ }
+}