65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using Bit.Core;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.Models.View;
|
|
using Xamarin.Forms;
|
|
|
|
namespace Bit.App.Utilities
|
|
{
|
|
public class IconGlyphConverter : IValueConverter
|
|
{
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
var cipher = value as CipherView;
|
|
return GetIcon(cipher);
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
private string GetIcon(CipherView cipher)
|
|
{
|
|
string icon = null;
|
|
switch (cipher.Type)
|
|
{
|
|
case CipherType.Login:
|
|
icon = GetLoginIconGlyph(cipher);
|
|
break;
|
|
case CipherType.SecureNote:
|
|
icon = BitwardenIcons.StickyNote;
|
|
break;
|
|
case CipherType.Card:
|
|
icon = BitwardenIcons.CreditCard;
|
|
break;
|
|
case CipherType.Identity:
|
|
icon = BitwardenIcons.IdCard;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return icon;
|
|
}
|
|
|
|
string GetLoginIconGlyph(CipherView cipher)
|
|
{
|
|
var icon = BitwardenIcons.Globe;
|
|
if (cipher.Login.Uri != null)
|
|
{
|
|
var hostnameUri = cipher.Login.Uri;
|
|
if (hostnameUri.StartsWith(Constants.AndroidAppProtocol))
|
|
{
|
|
icon = BitwardenIcons.Android;
|
|
}
|
|
else if (hostnameUri.StartsWith(Constants.iOSAppProtocol))
|
|
{
|
|
icon = BitwardenIcons.Apple;
|
|
}
|
|
}
|
|
return icon;
|
|
}
|
|
}
|
|
}
|