diff options
author | Kangho Hur <kangho.hur@samsung.com> | 2016-12-16 11:00:07 +0900 |
---|---|---|
committer | Kangho Hur <kangho.hur@samsung.com> | 2017-04-24 13:36:43 +0900 |
commit | 18ad8a74707a1b36581f7123be74d2b34510e016 (patch) | |
tree | 92eeac43c2cd01690a321a80e123e957053c4d7d /Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs | |
parent | 80e5482487f8a37d89b620f54f4ff3c12bcc5b83 (diff) | |
download | xamarin-forms-18ad8a74707a1b36581f7123be74d2b34510e016.tar.gz xamarin-forms-18ad8a74707a1b36581f7123be74d2b34510e016.tar.bz2 xamarin-forms-18ad8a74707a1b36581f7123be74d2b34510e016.zip |
Add Tizen backend renderer
- Xamarin.Forms.Platform.Tizen has been added
- Xamarin.Forms.Maps.Tizen has been added
- RPM build spec has been added
Change-Id: I0021e0f040d97345affc87512ee0f6ce437f4e6d
Diffstat (limited to 'Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs new file mode 100644 index 00000000..a34df549 --- /dev/null +++ b/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs @@ -0,0 +1,95 @@ +using System; +using EColor = ElmSharp.Color; + +namespace Xamarin.Forms.Platform.Tizen +{ + public class ButtonRenderer : ViewRenderer<Button, Native.Button> + { + static readonly EColor s_defaultTextColor = EColor.White; + + public ButtonRenderer() + { + RegisterPropertyHandler(Button.TextProperty, UpdateText); + RegisterPropertyHandler(Button.FontFamilyProperty, UpdateText); + RegisterPropertyHandler(Button.FontSizeProperty, UpdateText); + RegisterPropertyHandler(Button.FontAttributesProperty, UpdateText); + RegisterPropertyHandler(Button.TextColorProperty, UpdateTextColor); + RegisterPropertyHandler(Button.ImageProperty, UpdateBitmap); + RegisterPropertyHandler(Button.BorderColorProperty, UpdateBorder); + RegisterPropertyHandler(Button.BorderRadiusProperty, UpdateBorder); + RegisterPropertyHandler(Button.BorderWidthProperty, UpdateBorder); + } + + protected override void OnElementChanged(ElementChangedEventArgs<Button> e) + { + if (Control == null) + { + var button = new Native.Button(Forms.Context.MainWindow) + { + PropagateEvents = false, + }; + SetNativeControl(button); + } + + if (e.OldElement != null) + { + Control.Clicked -= ButtonClickedHandler; + } + + if (e.NewElement != null) + { + Control.Clicked += ButtonClickedHandler; + } + + base.OnElementChanged(e); + } + + protected override Size MinimumSize() + { + return new Size(Control.MinimumWidth, Control.MinimumHeight); + } + + void ButtonClickedHandler(object sender, EventArgs e) + { + IButtonController btn = Element as IButtonController; + if (btn != null) + { + btn.SendClicked(); + } + } + + void UpdateText() + { + Control.Text = Element.Text ?? ""; + Control.FontSize = Element.FontSize; + Control.FontAttributes = Element.FontAttributes; + Control.FontFamily = Element.FontFamily; + } + + void UpdateTextColor() + { + Control.TextColor = Element.TextColor.IsDefault ? s_defaultTextColor : Element.TextColor.ToNative(); + } + + void UpdateBitmap() + { + if (!string.IsNullOrEmpty(Element.Image)) + { + Control.Image = new Native.Image(Control); + Control.Image.LoadFromImageSourceAsync(Element.Image); + } + else + { + Control.Image = null; + } + } + + void UpdateBorder() + { + /* The simpler way is to create some specialized theme for button in + * tizen-theme + */ + // TODO: implement border handling + } + } +} |