// ******************************************************************
// Copyright (c) Microsoft. All rights reserved.
// This code is licensed under the MIT License (MIT).
// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.
// ******************************************************************
#if WINRT
using System.Collections.Generic;
#endif
using System;
using Microsoft.Toolkit.Uwp.Notifications.Adaptive.Elements;
namespace Microsoft.Toolkit.Uwp.Notifications
{
///
/// New in Creators Update: A progress bar. Only supported on toasts on Desktop, build 15007 or newer.
///
public sealed class AdaptiveProgressBar : IToastBindingGenericChild
{
#if WINRT
///
/// Gets a dictionary of the current data bindings, where you can assign new bindings.
///
public IDictionary Bindings { get; private set; } = new Dictionary();
#endif
///
/// Gets or sets an optional title string. Supports data binding.
///
public
#if WINRT
string
#else
BindableString
#endif
Title { get; set; }
///
/// Gets or sets the value of the progress bar. Supports data binding. Defaults to 0.
///
public
#if WINRT
AdaptiveProgressBarValue
#else
BindableProgressBarValue
#endif
Value { get; set; } = AdaptiveProgressBarValue.FromValue(0);
///
/// Gets or sets an optional string to be displayed instead of the default percentage string. If this isn't provided, something like "70%" will be displayed.
///
public
#if WINRT
string
#else
BindableString
#endif
ValueStringOverride { get; set; }
///
/// Required. Gets or sets a status string, which is displayed underneath the progress bar. This string should reflect the status of the operation, like "Downloading..." or "Installing..."
///
public
#if WINRT
string
#else
BindableString
#endif
Status { get; set; }
internal Element_AdaptiveProgressBar ConvertToElement()
{
// If Value not provided, we use 0
var val = Value;
if (val == null)
{
val = AdaptiveProgressBarValue.FromValue(0);
}
var answer = new Element_AdaptiveProgressBar();
#if WINRT
answer.Title = XmlWriterHelper.GetBindingOrAbsoluteXmlValue(Bindings, AdaptiveProgressBarBindableProperty.Title, Title);
answer.Value = XmlWriterHelper.GetBindingOrAbsoluteXmlValue(Bindings, AdaptiveProgressBarBindableProperty.Value, val.ToXmlString());
answer.ValueStringOverride = XmlWriterHelper.GetBindingOrAbsoluteXmlValue(Bindings, AdaptiveProgressBarBindableProperty.ValueStringOverride, ValueStringOverride);
answer.Status = XmlWriterHelper.GetBindingOrAbsoluteXmlValue(Bindings, AdaptiveProgressBarBindableProperty.Status, Status);
#else
answer.Title = Title?.ToXmlString();
answer.Value = val.ToXmlString();
answer.ValueStringOverride = ValueStringOverride?.ToXmlString();
answer.Status = Status?.ToXmlString();
#endif
if (answer.Status == null)
{
throw new NullReferenceException("Status property is required.");
}
return answer;
}
}
}