Exemplo n.º 1
0
 private void RemoveOfflineContacts()
 {
     var offlineContacts = Interlocutors.Where(interlocutor => interlocutor.State == ContactState.Offline).ToList();
     foreach (var offlineContact in offlineContacts)
     {
         RemoveInterlocutor(offlineContact);
     }
 }
Exemplo n.º 2
0
 private void UpdatePlacement(Interlocutor interlocutor)
 {
     var targetPosition = InterlocutorPosition(interlocutor);
     var actualPosition = Interlocutors.IndexOf(interlocutor);
     if (targetPosition == actualPosition) return;
     RemoveInterlocutor(interlocutor);
     AddInterlocutor(interlocutor);
 }
Exemplo n.º 3
0
 private int InterlocutorPosition(Interlocutor interlocutor)
 {
     var interlocutors = Interlocutors.AsEnumerable();
     if (!interlocutors.Contains(interlocutor))
     {
         interlocutors = interlocutors.Concat(new[] { interlocutor });
     }
     return interlocutors.OrderBy(contact => contact.State).ThenBy(contact => contact.Name).ToList().IndexOf(interlocutor);
 }
Exemplo n.º 4
0
        private void DrawUserList()
        {
            if (InvokeRequired)
            {
                Invoke(_DrawUserList);
            }

            UserList.Items.Clear();
            if (Interlocutors.Count != 0)
            {
                UserList.Items
                .AddRange(Interlocutors.Select(x => x.Name).ToArray());
            }
        }
Exemplo n.º 5
0
 private void InterlocutorStateChanged(object sender, PropertyChangedEventArgs e)
 {
     var interlocutor = (Interlocutor)sender;
     if (e.PropertyName == "State")
     {
         if (!ShowOffline && interlocutor.State == ContactState.Offline && Interlocutors.Contains(interlocutor))
         {
             RemoveInterlocutor(interlocutor);
         }
         else if (interlocutor.State != ContactState.Offline && !Interlocutors.Contains(interlocutor))
         {
             AddInterlocutor(interlocutor);
         }
         else
         {
             UpdatePlacement(interlocutor);
         }
     }
 }
Exemplo n.º 6
0
        private void OnUserSelect(object sender, EventArgs e)
        {
            ChatBox.Clear();
            var recipient = Interlocutors
                            .Find(x => x.Name == (string)UserList.SelectedItem);

            _recipientId = recipient?.Id ?? 0;
            if (recipient == null || recipient.MessageHistory == null)
            {
                return;
            }
            try
            {
                foreach (var record in recipient.MessageHistory)
                {
                    DrawText($"{(record.IsIncoming ? recipient.Name : "Me")}: {record.Message}");
                }
            }
            catch (Exception ex)
            {
                StatusBar.Text = ex.Message;
            }
        }
Exemplo n.º 7
0
 private void SendMessage(object sender, KeyEventArgs e)
 {
     if (e.KeyCode != Keys.Enter)
     {
         return;
     }
     if (MessageInput.Text == "")
     {
         return;
     }
     Client.ServerConnection.SendTo(_recipientId, MessageInput.Text);
     Interlocutors
     .Find(x => x.Id == _recipientId)
     ?.MessageHistory
     .Add(new MessageRecord()
     {
         IsIncoming = false,
         Message    = MessageInput.Text
     });
     _appendText(MessageInput.Text);
     MessageInput.Text = "";
     OnUserSelect(sender, e);
 }
Exemplo n.º 8
0
 private void RemoveInterlocutor(Interlocutor interlocutor)
 {
     Interlocutors.Remove(interlocutor);
 }
Exemplo n.º 9
0
 private void AddInterlocutor(Interlocutor interlocutor)
 {
     if (!CanAddInterlocutor(interlocutor)) return;
     int targetIndex = InterlocutorPosition(interlocutor);
     Interlocutors.Insert(targetIndex, interlocutor);
 }