public bool IsRoom(int index) { if (index < 0 || ConversationItems == null) { return(false); } var cm = ConversationItems.ElementAt(index); return(cm.RoomMode); }
public void CloseTabIndex(int index) { if (index < 0 || ConversationItems == null) { return; } var cm = ConversationItems.ElementAt(index); cm.Dispose(); ConversationItems.RemoveAt(index); }
private ConversationViewModel GetConversationModel(string userName, IChatRoom room = null, bool roomMode = true) { var cm = ConversationItems.FirstOrDefault(i => i.GetUniqueName().EqIgnoreCase(userName)); if (cm != null) { return(cm); } var r = room ?? _jabber.GetRoom(userName); if (r == null) { return(null); } var conversation = new ConversationViewModel(userName, room, roomMode); DispatcherHelper.BeginInvoke(new Action(() => ConversationItems.Add(conversation))); return(conversation); }
private void _room_Presence(string from, string status) { if (!RoomMode && from != _uniqueName) { return; } switch (status) { case "offline": var user = ConversationItems.FirstOrDefault(i => i.UserName.EqIgnoreCase(from)); if (user != null) { DispatcherHelper.BeginInvoke(new Action(() => ConversationItems.Remove(user))); //INFO: если были не просмотренные сообщения, то покажем их var receivedMess = _room.GetMessages(user.UserName); if (receivedMess.Any(i => i.State == MsgState.Received)) { OnPrivateChatWindowInternal(user.UserName); } } break; case "online": DispatcherHelper.BeginInvoke( new Action( () => ConversationItems.Add(new JidItem() { UserName = from, GroupName = _uniqueName, Status = status }))); break; default: break; } RefreshContent(); }