using System;
using System.Globalization;
using TINK.Model.User.Account;
using Xamarin.Forms;
namespace TINK.View.Settings
{
/// Translates user permissions into visibility state.
public class PermissionToVisibleConverter : BindableObject, IValueConverter
{
static readonly BindableProperty VisibleFlagProperty =
BindableProperty.Create(nameof(VisibleFlag), typeof(Permissions), typeof(BindableObject));
/// Property set from XAML determinig for which permission value object is visible.
public Permissions VisibleFlag
{
get => (Permissions)GetValue(VisibleFlagProperty);
set => SetValue(VisibleFlagProperty, value);
}
/// Converts permission value into visible state.
/// Permission value from view model used to derive whether object is visible or not.
/// Boolean value indicating whether object is visible or not.
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((Permissions)value).HasFlag(VisibleFlag);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Permissions.None;
}
}
}