diff options
author | Kangho Hur <kangho.hur@samsung.com> | 2016-12-16 11:00:07 +0900 |
---|---|---|
committer | Kangho Hur <kangho.hur@samsung.com> | 2017-07-10 11:11:14 +0900 |
commit | 79bf87f2bc00d823cf8b25ed7d0d3650cf819b4c (patch) | |
tree | 99d3412413a92c057cb8ad8429ddb0c7d4cb8c14 /Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs | |
parent | b7297c8ac01d6ce2d5f038d3df8f4bc9e74a8162 (diff) | |
download | xamarin-forms-79bf87f2bc00d823cf8b25ed7d0d3650cf819b4c.tar.gz xamarin-forms-79bf87f2bc00d823cf8b25ed7d0d3650cf819b4c.tar.bz2 xamarin-forms-79bf87f2bc00d823cf8b25ed7d0d3650cf819b4c.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/TimePickerRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs new file mode 100644 index 00000000..9f964c18 --- /dev/null +++ b/Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs @@ -0,0 +1,101 @@ +using System; +using System.Globalization; +using EColor = ElmSharp.Color; + +namespace Xamarin.Forms.Platform.Tizen +{ + public class TimePickerRenderer : ViewRenderer<TimePicker, Native.Button> + { + //TODO need to add internationalization support + const string DialogTitle = "Choose Time"; + + static readonly string s_defaultFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern; + + static readonly EColor s_defaultTextColor = EColor.White; + + string _format; + + TimeSpan _time; + + public TimePickerRenderer() + { + RegisterPropertyHandler(TimePicker.FormatProperty, UpdateFormat); + RegisterPropertyHandler(TimePicker.TimeProperty, UpdateTime); + RegisterPropertyHandler(TimePicker.TextColorProperty, UpdateTextColor); + } + + protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e) + { + if (Control == null) + { + var button = new Native.Button(Forms.Context.MainWindow); + SetNativeControl(button); + } + + if (e.OldElement != null) + { + Control.Clicked -= ButtonClickedHandler; + } + + if (e.NewElement != null) + { + _time = DateTime.Now.TimeOfDay; + _format = s_defaultFormat; + UpdateTimeAndFormat(); + + Control.Clicked += ButtonClickedHandler; + } + + base.OnElementChanged(e); + } + + void ButtonClickedHandler(object o, EventArgs e) + { + Native.DateTimePickerDialog dialog = new Native.DateTimePickerDialog(Forms.Context.MainWindow) + { + Title = DialogTitle + }; + + dialog.InitializeTimePicker(_time, _format); + dialog.DateTimeChanged += DialogDateTimeChangedHandler; + dialog.Dismissed += DialogDismissedHandler; + dialog.Show(); + } + + void DialogDateTimeChangedHandler(object sender, Native.DateChangedEventArgs dcea) + { + Element.Time = dcea.NewDate.TimeOfDay; + UpdateTime(); + } + + void DialogDismissedHandler(object sender, EventArgs e) + { + var dialog = sender as Native.DateTimePickerDialog; + dialog.DateTimeChanged -= DialogDateTimeChangedHandler; + dialog.Dismissed -= DialogDismissedHandler; + } + + void UpdateFormat() + { + _format = Element.Format ?? s_defaultFormat; + UpdateTimeAndFormat(); + } + + void UpdateTextColor() + { + Control.TextColor = Element.TextColor.IsDefault ? s_defaultTextColor : Element.TextColor.ToNative(); + } + + void UpdateTime() + { + _time = Element.Time; + UpdateTimeAndFormat(); + } + + void UpdateTimeAndFormat() + { + // Xamarin using DateTime formatting (https://developer.xamarin.com/api/property/Xamarin.Forms.TimePicker.Format/) + Control.Text = new DateTime(_time.Ticks).ToString(_format); + } + } +} |