Пример #1
0
        public ChatViewModel()
        {
            KeyPropertyName      = "UserName";
            ParentIdPropertyName = "GroupName";
            AllowClosePanel      = true;
            PanelCaption         = _caption;
            PanelCaptionImage    = ImageResources.DCLDefault16.GetBitmapImage();

            OpenChatWindow = new DelegateCustomCommand(OnOpenChatWindow, () => true);

            _jabber = (JabberManager)IoC.Instance.Resolve <IChatManager>();
            Fields  =
                new ObservableCollection <DataField>(new[]
                                                     { new DataField()
                                                       {
                                                           FieldName = "UserName", SourceName = "UserName", Caption = "Список контактов", FieldType = typeof(string)
                                                       } });
            SelectedItems = new ObservableCollection <JidItem>();
            var rooms = _jabber.GetRooms().ToArray();

            ConversationItems = new ObservableCollection <ConversationViewModel>(rooms.Select(i => new ConversationViewModel(i.Name, i)));
            foreach (var cm in ConversationItems)
            {
                cm.PrivateRoom += conversation_PrivateRoom;
            }
            //INFO: если были входящие сообщения от пользователей, то откроем с ними вкладки
            foreach (var r in rooms)
            {
                foreach (var user in r.GetUsers())
                {
                    if (r.GetMessages(user).Any(i => i.State == MsgState.Received))
                    {
                        conversation_PrivateRoom(user, r, false);
                    }
                }
            }
            RefreshData();
        }