diff options
author | SungHyun Min <shyun.min@samsung.com> | 2016-12-12 12:02:40 +0900 |
---|---|---|
committer | SungHyun Min <shyun.min@samsung.com> | 2017-01-05 18:47:14 +0900 |
commit | bc0f025f08dcb3bac810aa0348546c445046f0c9 (patch) | |
tree | 95ebd07c2b3f01be886333b6976ffa9d0079ec19 | |
parent | aa0cf74ac39c66c43c7440c2cde88461ab7b196f (diff) | |
download | xamarin-forms-bc0f025f08dcb3bac810aa0348546c445046f0c9.tar.gz xamarin-forms-bc0f025f08dcb3bac810aa0348546c445046f0c9.tar.bz2 xamarin-forms-bc0f025f08dcb3bac810aa0348546c445046f0c9.zip |
Tizen Extension for ProgressBar
- Add Set/GetPendingMode methods
- Add Set/GetPulsingStatus methods
Change-Id: Id59b4b2a848035e3a6f414572c2e411c0fd98767
Signed-off-by: SungHyun Min <shyun.min@samsung.com>
3 files changed, 109 insertions, 5 deletions
diff --git a/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ProgressBar.cs b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ProgressBar.cs new file mode 100644 index 00000000..8267ca04 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/TizenSpecific/ProgressBar.cs @@ -0,0 +1,65 @@ + +namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific +{ + using FormsElement = Forms.ProgressBar; + + 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); + } + + public static void SetPulsingStatus(BindableObject element, bool isPulsing) + { + if (GetPendingMode(element)) + { + element.SetValue(ProgressBarPulsingStatusProperty, isPulsing); + } + } + + public static bool GetPendingMode(this IPlatformElementConfiguration<Tizen, FormsElement> config) + { + return GetPendingMode(config.Element); + } + + public static IPlatformElementConfiguration<Tizen, FormsElement> SetPendingMode(this IPlatformElementConfiguration<Tizen, FormsElement> config, bool isPending) + { + SetPendingMode(config.Element, isPending); + return config; + } + + public static bool GetPulsingStatus(this IPlatformElementConfiguration<Tizen, FormsElement> config) + { + return GetPulsingStatus(config.Element); + } + + public static IPlatformElementConfiguration<Tizen, FormsElement> SetPulsingStatus(this IPlatformElementConfiguration<Tizen, FormsElement> config, bool isPulsing) + { + SetPulsingStatus(config.Element, isPulsing); + return config; + } + } +} diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index a6540c1b..8f217e58 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> @@ -99,6 +99,7 @@ <Compile Include="PlatformConfiguration\iOSSpecific\StatusBarHiddenMode.cs" /> <Compile Include="PlatformConfiguration\iOSSpecific\UIStatusBarAnimation.cs" /> <Compile Include="PlatformConfiguration\iOSSpecific\VisualElement.cs" /> + <Compile Include="PlatformConfiguration\TizenSpecific\ProgressBar.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/ProgressBarRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/ProgressBarRenderer.cs index 3aacd3f4..6bf86b16 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/ProgressBarRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/ProgressBarRenderer.cs @@ -1,4 +1,6 @@ using System.ComponentModel; + +using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.ProgressBar; using EProgressBar = ElmSharp.ProgressBar; namespace Xamarin.Forms.Platform.Tizen @@ -37,9 +39,28 @@ namespace Xamarin.Forms.Platform.Tizen base.OnElementChanged(e); } + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + base.OnElementPropertyChanged(sender, e); + if (e.PropertyName == ProgressBar.ProgressProperty.PropertyName) + { + UpdateProgress(); + } + else if (e.PropertyName == Specific.ProgressBarPendingModeProperty.PropertyName) + { + UpdatePendingMode(); + } + else if (e.PropertyName == Specific.ProgressBarPulsingStatusProperty.PropertyName) + { + UpdatePulsingStatus(); + } + } + void UpdateAll() { UpdateProgress(); + UpdatePendingMode(); + UpdatePulsingStatus(); } void UpdateProgress() @@ -47,12 +68,29 @@ namespace Xamarin.Forms.Platform.Tizen Control.Value = Element.Progress; } - protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + void UpdatePendingMode() { - base.OnElementPropertyChanged(sender, e); - if (e.PropertyName == ProgressBar.ProgressProperty.PropertyName) + bool isPending = Specific.GetPendingMode(Element); + if (isPending) { - UpdateProgress(); + Control.Style = "pending"; + } + else + { + Control.Style = "default"; + } + } + + void UpdatePulsingStatus() + { + bool isPulsing = Specific.GetPulsingStatus(Element); + if (isPulsing) + { + Control.PlayPulse(); + } + else + { + Control.StopPulse(); } } } |