From 8d3e646ab6dcb8ce13058cd182cd61540573e30b Mon Sep 17 00:00:00 2001 From: darkleem Date: Fri, 26 May 2017 09:30:32 +0900 Subject: Fix a object that trigger a view in DatePicker/TimePicker - TCAPI-2421 Change-Id: Ieffe8c1dc970dc70a519aa17e6494e32dc58c44d Signed-off-by: darkleem --- .../Renderers/DatePickerRenderer.cs | 30 ++++++++++++++-------- .../Renderers/TimePickerRenderer.cs | 27 ++++++++++++------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/DatePickerRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/DatePickerRenderer.cs index f7aef30f..fefadcc7 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/DatePickerRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/DatePickerRenderer.cs @@ -1,12 +1,13 @@ using System; -using EColor = ElmSharp.Color; +using ELayout = ElmSharp.Layout; namespace Xamarin.Forms.Platform.Tizen { - public class DatePickerRenderer : ViewRenderer + public class DatePickerRenderer : ViewRenderer { //TODO need to add internationalization support const string DialogTitle = "Choose Date"; + Native.Entry _realControl = null; public DatePickerRenderer() { @@ -19,24 +20,32 @@ namespace Xamarin.Forms.Platform.Tizen { if (Control == null) { - var button = new Native.Button(Forms.Context.MainWindow); - SetNativeControl(button); + var layout = new ELayout(Forms.Context.MainWindow); + layout.SetTheme("layout", "editfield", "singleline"); + _realControl = new Native.Entry(layout) + { + IsSingleLine = true, + HorizontalTextAlignment = Native.TextAlignment.Center, + }; + _realControl.AllowFocus(false); + layout.SetPartContent("elm.swallow.content", _realControl); + SetNativeControl(layout); } if (e.OldElement != null) { - Control.Clicked -= ButtonClickedHandler; + _realControl.Clicked -= ClickedHandler; } if (e.NewElement != null) { - Control.Clicked += ButtonClickedHandler; + _realControl.Clicked += ClickedHandler; } base.OnElementChanged(e); } - void ButtonClickedHandler(object sender, EventArgs e) + void ClickedHandler(object sender, EventArgs e) { Native.DateTimePickerDialog dialog = new Native.DateTimePickerDialog(Forms.Context.MainWindow) { @@ -52,7 +61,7 @@ namespace Xamarin.Forms.Platform.Tizen void DialogDateTimeChangedHandler(object sender, Native.DateChangedEventArgs dcea) { Element.Date = dcea.NewDate; - Control.Text = dcea.NewDate.ToString(Element.Format); + _realControl.Text = dcea.NewDate.ToString(Element.Format); } void DialogDismissedHandler(object sender, EventArgs e) @@ -64,13 +73,12 @@ namespace Xamarin.Forms.Platform.Tizen void UpdateDate() { - Control.Text = Element.Date.ToString(Element.Format); + _realControl.Text = Element.Date.ToString(Element.Format); } void UpdateTextColor() { - Control.TextColor = Element.TextColor.ToNative(); + _realControl.TextColor = Element.TextColor.ToNative(); } - } } diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs index 68e697ed..547f9312 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/TimePickerRenderer.cs @@ -1,10 +1,10 @@ using System; using System.Globalization; -using EColor = ElmSharp.Color; +using ELayout = ElmSharp.Layout; namespace Xamarin.Forms.Platform.Tizen { - public class TimePickerRenderer : ViewRenderer + public class TimePickerRenderer : ViewRenderer { //TODO need to add internationalization support const string DialogTitle = "Choose Time"; @@ -14,6 +14,7 @@ namespace Xamarin.Forms.Platform.Tizen string _format; TimeSpan _time; + Native.Entry _realControl; public TimePickerRenderer() { @@ -26,13 +27,21 @@ namespace Xamarin.Forms.Platform.Tizen { if (Control == null) { - var button = new Native.Button(Forms.Context.MainWindow); - SetNativeControl(button); + var layout = new ELayout(Forms.Context.MainWindow); + layout.SetTheme("layout", "editfield", "singleline"); + _realControl = new Native.Entry(layout) + { + IsSingleLine = true, + HorizontalTextAlignment = Native.TextAlignment.Center, + }; + _realControl.AllowFocus(false); + layout.SetPartContent("elm.swallow.content", _realControl); + SetNativeControl(layout); } if (e.OldElement != null) { - Control.Clicked -= ButtonClickedHandler; + _realControl.Clicked -= ClickedHandler; } if (e.NewElement != null) @@ -41,13 +50,13 @@ namespace Xamarin.Forms.Platform.Tizen _format = s_defaultFormat; UpdateTimeAndFormat(); - Control.Clicked += ButtonClickedHandler; + _realControl.Clicked += ClickedHandler; } base.OnElementChanged(e); } - void ButtonClickedHandler(object o, EventArgs e) + void ClickedHandler(object o, EventArgs e) { Native.DateTimePickerDialog dialog = new Native.DateTimePickerDialog(Forms.Context.MainWindow) { @@ -81,7 +90,7 @@ namespace Xamarin.Forms.Platform.Tizen void UpdateTextColor() { - Control.TextColor = Element.TextColor.ToNative(); + _realControl.TextColor = Element.TextColor.ToNative(); } void UpdateTime() @@ -93,7 +102,7 @@ namespace Xamarin.Forms.Platform.Tizen void UpdateTimeAndFormat() { // Xamarin using DateTime formatting (https://developer.xamarin.com/api/property/Xamarin.Forms.TimePicker.Format/) - Control.Text = new DateTime(_time.Ticks).ToString(_format); + _realControl.Text = new DateTime(_time.Ticks).ToString(_format); } } } -- cgit v1.2.3