Inheritance: INotifyPropertyChanged
コード例 #1
0
ファイル: WindowManager.cs プロジェクト: Irdis/VSTalk
 public void ShowChatWindow(Room room)
 {
     var control = HostedControls.GetControl<ChatFrameViewModel>();
     EnvWindowsManager.ShowNestedWindow(control);
     var context = HostedControls.GetContext<ChatFrameViewModel>();
     context.AttachEntity(room);
 }
コード例 #2
0
ファイル: RoomManager.cs プロジェクト: Irdis/VSTalk
        private Room InitRoom(IRoomInfo roomInfo)
        {
            Room room = new Room();

            room.Id = Guid.NewGuid();
            room.Name = roomInfo.RoomName;
            room.Server = roomInfo.Server;
            room.Nickname = roomInfo.Nickname;
            return room;
        }
コード例 #3
0
ファイル: SessionModel.cs プロジェクト: Irdis/VSTalk
 public IRoomContext GetRoomContext(Room room)
 {
     if (_rooms.ContainsKey(room))
     {
         return _rooms[room];
     }
     var context = new RoomContext(room);
     _rooms.Add(room, context);
     context.StartListen();
     return context;
 }
コード例 #4
0
ファイル: RoomContext.cs プロジェクト: Irdis/VSTalk
        public RoomContext(Room room)
        {
            Bare = new Jid(room.Name, room.Server, null);
            Room = room;
            Members = new ObservableCollection<IRoomMember>();

            _client = AppServices.Get<IModelContext>().GetClientByRoom(room);
            _connection = AppServices.Get<IConnectionManager>()
                    .GetOrCreateConnection(_client)
                    .Connection;
        }
コード例 #5
0
ファイル: AddressPatterns.cs プロジェクト: Irdis/VSTalk
 public static Predicate<IMessage> To(Room room)
 {
     return message =>
     {
         var client = AppServices.Get<IModelContext>().GetClientByRoom(room);
         if (client == null) return false;
         if (message.XmppMessage.To == null) return false;
         return message.ClientId == client.Id &&
                string.Equals(message.XmppMessage.To.Bare,
                XmppIdConverter.Jid(room).Bare);
     };
 }
コード例 #6
0
ファイル: RoomChatViewModel.cs プロジェクト: Irdis/VSTalk
        public RoomChatViewModel(IFrameViewModel frame, Room room)
        {
            _frame = frame;
            _room = room;

            var chatDocument = new FlowDocument();
            ChatTextBox = new RichTextBox(chatDocument);
            ChatTextBox.IsDocumentEnabled = true;
            ChatTextBox.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
            ChatTextBox.Background = System.Windows.Media.Brushes.Transparent;
            ChatTextBox.IsReadOnly = true;
            _conversationThread = CreateThread(chatDocument);

            MessageTextBox = new RichTextBox(new FlowDocument());
            MessageTextBox.IsDocumentEnabled = true;
            MessageTextBox.Background = System.Windows.Media.Brushes.Transparent;
            MessageTextBox.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;

            ParseCurrentHistory();
            SetTheme(ThemeManager.ActiveTheme);

            _historyLoader = CreateHistoryLoader();
        }
コード例 #7
0
ファイル: ModelContext.cs プロジェクト: Irdis/VSTalk
 public Client GetClientByRoom(Room room)
 {
     return _account.XmppClients.FirstOrDefault(client => client.Rooms.Contains(room));
 }
コード例 #8
0
ファイル: XmppIdConverter.cs プロジェクト: Irdis/VSTalk
 public static Jid Jid(Room room)
 {
     return new Jid(room.Name, room.Server, null);
 }
コード例 #9
0
ファイル: RoomResourceViewModel.cs プロジェクト: Irdis/VSTalk
 public RoomResourceViewModel(Room room)
 {
     _room = room;
     SetCommands();
 }
コード例 #10
0
ファイル: MessageService.cs プロジェクト: Irdis/VSTalk
 public void SendMessage(Room to, Message outMessage)
 {
     outMessage.To = XmppIdConverter.Jid(to);
     outMessage.Type = MessageType.groupchat;
     Connection.Send(outMessage);
 }
コード例 #11
0
ファイル: ChatFrameViewModel.cs プロジェクト: Irdis/VSTalk
 public void AttachEntity(Room room)
 {
     var activeChat = ActiveChats.FirstOrDefault(contact => contact.Model == room);
     if (activeChat == null)
     {
         activeChat = new RoomChatViewModel(this, room);
         MessageFeed.Subscribe(activeChat);
         activeChat.StartListen();
         ActiveChats.Add(activeChat);
     }
     CurrentChat = activeChat;
 }
コード例 #12
0
ファイル: RoomManager.cs プロジェクト: Irdis/VSTalk
 private static IRoomContext GetContext(Room target)
 {
     return AppServices.Get<ISessionModel>().GetRoomContext(target);
 }
コード例 #13
0
ファイル: MessageBuilderFactory.cs プロジェクト: Irdis/VSTalk
 public static IMessageBuilder Create(Room room)
 {
     return new TextMessageBuilder();
 }