From 76744140ccdb02ba637c7909bcd2f03ddb546407 Mon Sep 17 00:00:00 2001 From: Kangho Hur Date: Wed, 8 Feb 2017 14:54:28 +0900 Subject: Add Style to VisualElement as TizenSpecific - Implement the change proposed in RFC-17 Change-Id: I96431b3a32358be6f32e7acdeb0cbc6a27a98ec4 --- .../TizenSpecific/ButtonStyle.cs | 9 ------ .../TizenSpecific/ProgressBar.cs | 32 ++----------------- .../TizenSpecific/StyleValues.cs | 22 +++++++++++++ .../PlatformConfiguration/TizenSpecific/Switch.cs | 30 ------------------ .../TizenSpecific/SwitchStyle.cs | 9 ------ .../TizenSpecific/VisualElement.cs | 29 +++++++++++++++++ Xamarin.Forms.Core/Xamarin.Forms.Core.csproj | 7 ++--- .../Renderers/ButtonRenderer.cs | 32 ++----------------- .../Renderers/ProgressBarRenderer.cs | 24 ++++----------- .../Renderers/SwitchRenderer.cs | 36 ++++++++-------------- .../Renderers/VisualElementRenderer.cs | 7 +++-- 11 files changed, 83 insertions(+), 154 deletions(-) delete mode 100644 Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ButtonStyle.cs create mode 100644 Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/StyleValues.cs delete mode 100644 Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/Switch.cs delete mode 100644 Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/SwitchStyle.cs create mode 100644 Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/VisualElement.cs diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ButtonStyle.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ButtonStyle.cs deleted file mode 100644 index abe7bd81..00000000 --- a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ButtonStyle.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific -{ - public enum ButtonStyle - { - Default, - Circle, - Bottom - } -} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ProgressBar.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ProgressBar.cs index 8267ca04..3ed287d2 100644 --- a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ProgressBar.cs +++ b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ProgressBar.cs @@ -5,28 +5,10 @@ namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific public static class ProgressBar { - public static readonly BindableProperty ProgressBarPendingModeProperty = - BindableProperty.Create("ProgressBarPendingMode", typeof(bool), - typeof(FormsElement), false); - public static readonly BindableProperty ProgressBarPulsingStatusProperty = BindableProperty.Create("ProgressBarPulsingStatus", typeof(bool), typeof(FormsElement), false); - public static bool GetPendingMode(BindableObject element) - { - return (bool)element.GetValue(ProgressBarPendingModeProperty); - } - - public static void SetPendingMode(BindableObject element, bool isPending) - { - if (!isPending) - { - SetPulsingStatus(element, false); - } - element.SetValue(ProgressBarPendingModeProperty, isPending); - } - public static bool GetPulsingStatus(BindableObject element) { return (bool)element.GetValue(ProgressBarPulsingStatusProperty); @@ -34,23 +16,13 @@ namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific public static void SetPulsingStatus(BindableObject element, bool isPulsing) { - if (GetPendingMode(element)) + string style = VisualElement.GetStyle(element); + if (style == ProgressBarStyle.Pending) { element.SetValue(ProgressBarPulsingStatusProperty, isPulsing); } } - public static bool GetPendingMode(this IPlatformElementConfiguration config) - { - return GetPendingMode(config.Element); - } - - public static IPlatformElementConfiguration SetPendingMode(this IPlatformElementConfiguration config, bool isPending) - { - SetPendingMode(config.Element, isPending); - return config; - } - public static bool GetPulsingStatus(this IPlatformElementConfiguration config) { return GetPulsingStatus(config.Element); diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/StyleValues.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/StyleValues.cs new file mode 100644 index 00000000..d4e3c3ff --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/StyleValues.cs @@ -0,0 +1,22 @@ +namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific +{ + public static class ButtonStyle + { + public const string Default = "default"; + public const string Circle = "circle"; + public const string Bottom = "bottom"; + } + + public static class SwitchStyle + { + public const string CheckBox = "default"; + public const string Toggle = "toggle"; + public const string Favorite = "favorite"; + } + + public static class ProgressBarStyle + { + public const string Default = "default"; + public const string Pending = "pending"; + } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/Switch.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/Switch.cs deleted file mode 100644 index cef38f34..00000000 --- a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/Switch.cs +++ /dev/null @@ -1,30 +0,0 @@ -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 config) - { - return GetSwitchStyle(config.Element); - } - - public static IPlatformElementConfiguration SetSwitchStyle(this IPlatformElementConfiguration 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 deleted file mode 100644 index a7980fe2..00000000 --- a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/SwitchStyle.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific -{ - public enum SwitchStyle - { - Default, - CheckBox, - Favorite - } -} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/VisualElement.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/VisualElement.cs new file mode 100644 index 00000000..7eb4c718 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/VisualElement.cs @@ -0,0 +1,29 @@ +namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific +{ + using FormsElement = Forms.VisualElement; + public static class VisualElement + { + public static readonly BindableProperty StyleProperty = BindableProperty.Create("ThemeStyle", typeof(string), typeof(VisualElement), default(string)); + + public static string GetStyle(BindableObject element) + { + return (string)element.GetValue(StyleProperty); + } + + public static void SetStyle(BindableObject element, string value) + { + element.SetValue(StyleProperty, value); + } + + public static string GetStyle(this IPlatformElementConfiguration config) + { + return GetStyle(config.Element); + } + + public static IPlatformElementConfiguration SetStyle(this IPlatformElementConfiguration config, string value) + { + SetStyle(config.Element, value); + return config; + } + } +} diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index 6d3ce330..46c640de 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -103,15 +103,13 @@ + + - - - - @@ -465,6 +463,7 @@ Xamarin.Forms.Platform + diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs index def27a99..eea46e80 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs @@ -2,7 +2,7 @@ using System; using System.ComponentModel; using EColor = ElmSharp.Color; using Xamarin.Forms.PlatformConfiguration.TizenSpecific; -using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.Button; +using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement; namespace Xamarin.Forms.Platform.Tizen { @@ -41,23 +41,11 @@ namespace Xamarin.Forms.Platform.Tizen if (e.NewElement != null) { - UpdateStyle(); Control.Clicked += ButtonClickedHandler; } - base.OnElementChanged(e); } - protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) - { - base.OnElementPropertyChanged(sender, e); - - if (e.PropertyName == Specific.ButtonStyleProperty.PropertyName) - { - UpdateStyle(); - } - } - protected override Size MinimumSize() { return new Size(Control.MinimumWidth, Control.MinimumHeight); @@ -98,23 +86,9 @@ namespace Xamarin.Forms.Platform.Tizen } } - void UpdateStyle() + protected override void UpdateThemeStyle() { - string style; - switch (Specific.GetButtonStyle(Element)) - { - case ButtonStyle.Circle: - style = "circle"; - break; - case ButtonStyle.Bottom: - style = "bottom"; - break; - default: - style = "default"; - break; - } - - Control.UpdateStyle(style); + Control.UpdateStyle(Specific.GetStyle(Element)); ((IVisualElementController)Element).NativeSizeChanged(); } diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/ProgressBarRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/ProgressBarRenderer.cs index 6bf86b16..444bc852 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/ProgressBarRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/ProgressBarRenderer.cs @@ -1,5 +1,6 @@ using System.ComponentModel; +using SpecificVE = Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement; using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.ProgressBar; using EProgressBar = ElmSharp.ProgressBar; @@ -46,20 +47,20 @@ namespace Xamarin.Forms.Platform.Tizen { UpdateProgress(); } - else if (e.PropertyName == Specific.ProgressBarPendingModeProperty.PropertyName) - { - UpdatePendingMode(); - } else if (e.PropertyName == Specific.ProgressBarPulsingStatusProperty.PropertyName) { UpdatePulsingStatus(); } } + protected override void UpdateThemeStyle() + { + Control.Style = SpecificVE.GetStyle(Element); + } + void UpdateAll() { UpdateProgress(); - UpdatePendingMode(); UpdatePulsingStatus(); } @@ -68,19 +69,6 @@ namespace Xamarin.Forms.Platform.Tizen Control.Value = Element.Progress; } - void UpdatePendingMode() - { - bool isPending = Specific.GetPendingMode(Element); - if (isPending) - { - Control.Style = "pending"; - } - else - { - Control.Style = "default"; - } - } - void UpdatePulsingStatus() { bool isPulsing = Specific.GetPulsingStatus(Element); diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs index c67a69a2..da00ef9f 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/SwitchRenderer.cs @@ -2,7 +2,7 @@ using System; using System.ComponentModel; using ElmSharp; using Xamarin.Forms.PlatformConfiguration.TizenSpecific; -using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.Switch; +using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement; namespace Xamarin.Forms.Platform.Tizen { @@ -31,20 +31,27 @@ namespace Xamarin.Forms.Platform.Tizen if (e.NewElement != null) { - UpdateStyle(); Control.StateChanged += CheckChangedHandler; } base.OnElementChanged(e); } - protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + protected override void UpdateThemeStyle() { - if (e.PropertyName == Specific.SwitchStyleProperty.PropertyName) + var style = Specific.GetStyle(Element); + switch (style) { - UpdateStyle(); + case SwitchStyle.Toggle: + case SwitchStyle.Favorite: + case SwitchStyle.CheckBox: + Control.Style = style; + break; + default: + Control.Style = SwitchStyle.Toggle; + break; } - base.OnElementPropertyChanged(sender, e); + ((IVisualElementController)Element).NativeSizeChanged(); } void CheckChangedHandler(object sender, EventArgs e) @@ -56,22 +63,5 @@ 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(); - } } } diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs index 8c5c0be0..4bde705c 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs @@ -3,12 +3,12 @@ using System.Collections.Generic; using System.Diagnostics; using System.ComponentModel; using ElmSharp; -using ELayout = ElmSharp.Layout; using EColor = ElmSharp.Color; using ESize = ElmSharp.Size; using ERect = ElmSharp.Rect; using ERectangle = ElmSharp.Rectangle; -using EBox = ElmSharp.Box; +using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement; + namespace Xamarin.Forms.Platform.Tizen { @@ -59,6 +59,7 @@ namespace Xamarin.Forms.Platform.Tizen RegisterPropertyHandler(VisualElement.IsEnabledProperty, UpdateIsEnabled); RegisterPropertyHandler(VisualElement.InputTransparentProperty, UpdateInputTransparent); RegisterPropertyHandler(VisualElement.BackgroundColorProperty, UpdateBackgroundColor); + RegisterPropertyHandler(Specific.StyleProperty, UpdateThemeStyle); RegisterPropertyHandler(VisualElement.AnchorXProperty, ApplyTransformation); RegisterPropertyHandler(VisualElement.AnchorYProperty, ApplyTransformation); @@ -794,6 +795,8 @@ namespace Xamarin.Forms.Platform.Tizen NativeView.PassEvents = Element.InputTransparent; } + protected virtual void UpdateThemeStyle() {} + void ApplyRotation(EvasMap map, ERect geometry, ref bool changed) { var rotationX = Element.RotationX; -- cgit v1.2.3