- This is implementation of RFC-23.
Change-Id: I50806076c51d985ded378c986aa67e7d629c8fad
--- /dev/null
+using Xamarin.Forms.Platform.Tizen;
+using Tizen.Xamarin.Forms.Extension;
+using Tizen.Xamarin.Forms.Extension.Renderer;
+
+using TMediaView = Tizen.Multimedia.MediaView;
+using TForms = Xamarin.Forms.Platform.Tizen.Forms;
+
+[assembly: ExportRenderer(typeof(MediaView), typeof(MediaViewRenderer))]
+namespace Tizen.Xamarin.Forms.Extension.Renderer
+{
+ public class MediaViewRenderer : VisualElementRenderer<MediaView>
+ {
+ TMediaView _control;
+
+ public MediaViewRenderer()
+ {
+ }
+
+ protected override void OnElementChanged(ElementChangedEventArgs<MediaView> e)
+ {
+ if (_control == null)
+ {
+ _control = new TMediaView(TForms.Context.MainWindow);
+ SetNativeControl(_control);
+ }
+ if (e.OldElement != null)
+ {
+ _control.Resized -= NatvieViewResized;
+ }
+ if (e.NewElement != null)
+ {
+ _control.Resized += NatvieViewResized;
+ Element.NativeView = _control;
+ IMediaViewController mediaView = Element as IMediaViewController;
+ mediaView?.SendNativeViewCreated();
+ }
+ base.OnElementChanged(e);
+ }
+
+ void NatvieViewResized(object sender, System.EventArgs e)
+ {
+ ((IMediaViewController)Element).NativeSizeChanged();
+ }
+ }
+}
</PropertyGroup>\r
<ItemGroup>\r
<Compile Include="ColorPickerViewRenderer.cs" />\r
+ <Compile Include="MediaViewRenderer.cs" />\r
<Compile Include="BackgroundRenderer.cs" />\r
<Compile Include="Cells\DoubleLabelCellRenderer.cs" />\r
<Compile Include="Cells\GridViewCellRenderer.cs" />\r
{\r
"dependencies": {\r
- "ElmSharp": "1.1.0-beta-010",\r
+ "ElmSharp": "1.1.0-beta-013",\r
"NETStandard.Library": "1.6.0",\r
- "Tizen.Applications": "1.0.3",\r
+ "Tizen.Applications": "1.2.5",\r
+ "Tizen.Multimedia": "1.0.41",\r
"Xamarin.Forms": "2.3.3.175",\r
"Xamarin.Forms.Platform.Tizen": "2.3.4-r192-001"\r
},\r
"imports": "portable-net45+win8+wpa81+wp8"\r
}\r
}\r
-}
\ No newline at end of file
+}
--- /dev/null
+using Xamarin.Forms;
+
+namespace Tizen.Xamarin.Forms.Extension
+{
+ /// <summary>
+ /// This interface is for internal use by platform renderers.
+ /// </summary>
+ public interface IMediaViewController : IViewController
+ {
+ /// <summary>
+ /// For internal use by platform renderers.
+ /// </summary>
+ void SendNativeViewCreated();
+
+ }
+}
--- /dev/null
+using System;
+using Xamarin.Forms;
+
+namespace Tizen.Xamarin.Forms.Extension
+{
+ /// <summary>
+ /// The MediaView class provides a View of Media being played by Player or Camera.
+ /// </summary>
+ /// <example>
+ /// <code>
+ /// MediaView mediaView = new MediaView();
+ /// Tizen.Multimedia.Camera camera = new Tizen.Multimedia.Camera(Tizen.Multimedia.CameraDevice.Rear);
+ /// camera.SetDisplay(Tizen.Multimedia.CameraDisplayType.Evas, (Tizen.Multimedia.MediaView) mediaView.NativeView);
+ /// </code>
+ /// </example>
+ public class MediaView : View, IMediaViewController
+ {
+ internal static readonly BindablePropertyKey NativeViewPropertyKey = BindableProperty.CreateReadOnly("NativeView", typeof(object), typeof(MediaView), default(object));
+
+ public static readonly BindableProperty NativeViewProperty = NativeViewPropertyKey.BindableProperty;
+
+ public object NativeView
+ {
+ get { return GetValue(NativeViewProperty); }
+ internal set { SetValue(NativeViewPropertyKey, value); }
+ }
+
+ public event EventHandler NativeViewCreated;
+
+ void IMediaViewController.SendNativeViewCreated()
+ {
+ NativeViewCreated?.Invoke(this, EventArgs.Empty);
+ }
+ }
+}
<ItemGroup>\r
<Compile Include="ColorChangedEventArgs.cs" />\r
<Compile Include="ColorPickerView.cs" />\r
+ <Compile Include="IMediaViewController.cs" />\r
+ <Compile Include="MediaView.cs" />\r
<Compile Include="Background.cs" />\r
<Compile Include="BackgroundOptions.cs" />\r
<Compile Include="Cells\GridViewCell.cs" />\r
<Target Name="AfterBuild">
</Target>
-->\r
-</Project>
+</Project>
\ No newline at end of file