summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs
diff options
context:
space:
mode:
authorKangho Hur <kangho.hur@samsung.com>2016-12-16 11:00:07 +0900
committerKangho Hur <kangho.hur@samsung.com>2017-04-24 13:36:43 +0900
commit18ad8a74707a1b36581f7123be74d2b34510e016 (patch)
tree92eeac43c2cd01690a321a80e123e957053c4d7d /Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs
parent80e5482487f8a37d89b620f54f4ff3c12bcc5b83 (diff)
downloadxamarin-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.cs95
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
+ }
+ }
+}