using System; using System.Globalization; using ShareeBike.Model.User.Account; using Xamarin.Forms; namespace ShareeBike.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; } } }