private bool AddPeer(PeerDataContainer client) { //Check if already in List foreach (PeerDataContainer _peer in broadcastingPeersList) { if (_peer.IP == client.IP && _peer.nick == client.nick) { broadcastingPeersList[broadcastingPeersList.IndexOf(_peer)].time = DateTime.Now; Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => { BroadcastingList.ItemsSource = broadcastingPeersList; })); return(false); } } broadcastingPeersList.Add(client); if (listViewSortAdorner == null) { //Do nothing items will be sorted by themself later when content has been rendered } else if (listViewSortAdorner.Direction == System.ComponentModel.ListSortDirection.Ascending) { broadcastingPeersList.Sort(Comparers.PeerContainerCompare.CompareAscending); } else { broadcastingPeersList.Sort(Comparers.PeerContainerCompare.CompareDescending); } Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => { BroadcastingList.ItemsSource = broadcastingPeersList; BroadcastingList.Items.Refresh(); })); return(true); }
public static void AddOrUpdate(PeerData contact) { var exists = PeerDataContainer.Containers.Any(s => s.Key == contact.UserId); var contactContainer = exists ? PeerDataContainer.Containers[contact.UserId] : PeerDataContainer.CreateContainer(contact.UserId, ApplicationDataCreateDisposition.Always); contactContainer.Values.AddOrUpdate(nameof(PeerData.Name), contact.Name); contactContainer.Values.AddOrUpdate(nameof(PeerData.Avatar), contact.Avatar); contactContainer.Values.AddOrUpdate(nameof(PeerData.IsOnline), contact.IsOnline); }
public static int CompareDescending(PeerDataContainer a, PeerDataContainer b) { int result = CompareAscending(a, b); if (result == 1) { return(-1); } else if (result == -1) { return(1); } else { return(0); } }
public static int CompareAscending(PeerDataContainer a, PeerDataContainer b) { if (a == null) { if (b == null) { return(0); } else { return(-1); } } else { if (b == null) { return(1); } else { int _resultOfComparison = string.CompareOrdinal(a.nick, b.nick); if (_resultOfComparison < 0) { return(-1); } else if (_resultOfComparison > 0) { return(1); } else { return(0); } } } }