SnapDotNet.Apps.Converters.FriendsListGroupByAlphabetConverter.Convert C# (CSharp) Method

Convert() public method

public Convert ( object value, Type targetType, object parameter, string language ) : object
value object
targetType System.Type
parameter object
language string
return object
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            var friends = value as ObservableCollection<Friend>;
            if (friends == null) return null;

            var groups = Alphabet.ToLowerInvariant().Select(alpha => new GroupInfoList<object> {Key = alpha}).ToList();
            foreach (var friend in friends.Where(f => f.FriendRequestState == Filter))
            {
                var startingChar = friend.FriendlyName[0];
                if (Char.IsDigit(startingChar))
                    groups.First(g => (string) g.Key == "#").Add(friend);
                else if (!Char.IsLetter(startingChar))
                    groups.First(g => (string) g.Key == "~").Add(friend);
                else
                    groups.First(g => (char) g.Key == Char.ToLowerInvariant(startingChar)).Add(friend);
            }
            foreach (var group in groups)
                group.KeyIsVisible = group.Any();

            return groups;
        }
FriendsListGroupByAlphabetConverter