Beispiel #1
0
        public bool IsRoom(int index)
        {
            if (index < 0 || ConversationItems == null)
            {
                return(false);
            }
            var cm = ConversationItems.ElementAt(index);

            return(cm.RoomMode);
        }
Beispiel #2
0
        public void CloseTabIndex(int index)
        {
            if (index < 0 || ConversationItems == null)
            {
                return;
            }
            var cm = ConversationItems.ElementAt(index);

            cm.Dispose();
            ConversationItems.RemoveAt(index);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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();
        }