diff options
author | Seunghyun Choi <sh4682.choi@samsung.com> | 2017-01-12 20:12:18 +0900 |
---|---|---|
committer | Kangho Hur <kangho.hur@samsung.com> | 2017-02-03 13:28:04 +0900 |
commit | f15d876e4a849a81223bb06744a893738497a98d (patch) | |
tree | a9fb82c6ed43b9dd8ea29d44fb0caf801a2ebbe3 | |
parent | d2f0c715a3bc81b892abdd89dc1b53fab0db4a6c (diff) | |
download | xamarin-forms-f15d876e4a849a81223bb06744a893738497a98d.tar.gz xamarin-forms-f15d876e4a849a81223bb06744a893738497a98d.tar.bz2 xamarin-forms-f15d876e4a849a81223bb06744a893738497a98d.zip |
Add Switch Style
- Add Switch Style(CheckBox, Favorite)
- Approval of the RFC is required.
(http://suprem.sec.samsung.net/confluence/display/SPTDTLC/%5BFormsTizen%5D+RFC+5+-+Switch)
Change-Id: If98be73fc84633b670328f723e0e4aa7ccebc82f
Signed-off-by: Seunghyun Choi <sh4682.choi@samsung.com>
4 files changed, 70 insertions, 2 deletions
diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/Switch.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/Switch.cs new file mode 100644 index 00000000..cef38f34 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/Switch.cs @@ -0,0 +1,30 @@ +namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific +{ + using FormsElement = Forms.Switch; + + public static class Switch + { + public static readonly BindableProperty SwitchStyleProperty = BindableProperty.Create("SwitchStyle", typeof(SwitchStyle), typeof(FormsElement), SwitchStyle.Default); + + public static SwitchStyle GetSwitchStyle(BindableObject element) + { + return (SwitchStyle)element.GetValue(SwitchStyleProperty); + } + + public static void SetSwitchStyle(BindableObject element, SwitchStyle value) + { + element.SetValue(SwitchStyleProperty, value); + } + + public static SwitchStyle GetSwitchStyle(this IPlatformElementConfiguration<Tizen, FormsElement> config) + { + return GetSwitchStyle(config.Element); + } + + public static IPlatformElementConfiguration<Tizen, FormsElement> SetSwitchStyle(this IPlatformElementConfiguration<Tizen, FormsElement> config, SwitchStyle value) + { + SetSwitchStyle(config.Element, value); + return config; + } + } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/SwitchStyle.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/SwitchStyle.cs new file mode 100644 index 00000000..a7980fe2 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/SwitchStyle.cs @@ -0,0 +1,9 @@ +namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific +{ + public enum SwitchStyle + { + Default, + CheckBox, + Favorite + } +} diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index 58e856a6..af940a6e 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -107,6 +107,8 @@ <Compile Include="PlatformConfiguration\TizenSpecific\ProgressBar.cs" /> <Compile Include="PlatformConfiguration\TizenSpecific\Button.cs" /> <Compile Include="PlatformConfiguration\TizenSpecific\ButtonStyle.cs" /> + <Compile Include="PlatformConfiguration\TizenSpecific\Switch.cs" /> + <Compile Include="PlatformConfiguration\TizenSpecific\SwitchStyle.cs" /> <Compile Include="PlatformConfiguration\WindowsSpecific\MasterDetailPage.cs" /> <Compile Include="PlatformConfiguration\WindowsSpecific\CollapseStyle.cs" /> <Compile Include="Configuration.cs" /> diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs index b3539e6c..c67a69a2 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs @@ -1,5 +1,8 @@ using System; +using System.ComponentModel; using ElmSharp; +using Xamarin.Forms.PlatformConfiguration.TizenSpecific; +using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.Switch; namespace Xamarin.Forms.Platform.Tizen { @@ -28,14 +31,22 @@ namespace Xamarin.Forms.Platform.Tizen if (e.NewElement != null) { - Control.Style = "toggle"; - + UpdateStyle(); Control.StateChanged += CheckChangedHandler; } base.OnElementChanged(e); } + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == Specific.SwitchStyleProperty.PropertyName) + { + UpdateStyle(); + } + base.OnElementPropertyChanged(sender, e); + } + void CheckChangedHandler(object sender, EventArgs e) { Element.SetValue(Switch.IsToggledProperty, Control.IsChecked); @@ -46,5 +57,21 @@ namespace Xamarin.Forms.Platform.Tizen Control.IsChecked = Element.IsToggled; } + void UpdateStyle() + { + switch (Specific.GetSwitchStyle(Element)) + { + case SwitchStyle.CheckBox: + Control.Style = "default"; + break; + case SwitchStyle.Favorite: + Control.Style = "favorite"; + break; + default: + Control.Style = "toggle"; + break; + } + ((IVisualElementController)Element).NativeSizeChanged(); + } } } |