コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
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);
             }
         }
     }
 }