Example #1
0
        public void AddMessage(MessageViewModel message)
        {
            Messages.Add(message);

            ListViewMessages.Items.MoveCurrentToLast();
            ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem);
        }
Example #2
0
        private async void ListBoxRooms_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            RoomViewModel selectedRoom = ListBoxRooms.SelectedItem as RoomViewModel;

            if (selectedRoom != null)
            {
                await hub.Join(selectedRoom.Name);

                User.CurrentRoom = selectedRoom.Name;
                txtRoomName.Text = User.CurrentRoom;

                // Get users and messages
                Users = await hub.GetUsers(selectedRoom.Name);

                Messages = await hub.GetMessageHistory(selectedRoom.Name);

                // Bind them to ListViews
                ListViewMessages.ItemsSource = Messages;
                ListViewUsers.ItemsSource    = Users;

                // Auto-scroll to bottom
                ListViewMessages.Items.MoveCurrentToLast();
                ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem);

                txtOnlineCounter.Text = string.Format("WHO'S HERE ({0})", Users.Count);

                CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(ListViewUsers.ItemsSource);
                view.Filter = Filter;
            }
        }
Example #3
0
        private void RegisterEvents()
        {
            connection.On <MessageViewModel>("newMessage", (message) =>
            {
                Messages.Add(message);
                ListViewMessages.Items.MoveCurrentToLast();
                ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem);
            });

            connection.On <string, string>("getProfileInfo", (displayName, avatar) =>
            {
                txtUsername.Text = displayName;
                Uri uri          = new Uri(@"/Images/Avatars/" + avatar, UriKind.Relative);
                imgAvatar.Source = new BitmapImage(uri);
            });

            connection.On <UserViewModel>("addUser", (user) =>
            {
                Users.Add(user);
                txtOnlineCounter.Text = $"WHO'S HERE ({Users.Count})";
            });

            connection.On <UserViewModel>("removeUser", (user) =>
            {
                var userToRemove = Users.Where(u => u.Username == user.Username).FirstOrDefault();
                Users.Remove(userToRemove);
                txtOnlineCounter.Text = $"WHO'S HERE ({Users.Count})";
            });

            connection.On <RoomViewModel>("addChatRoom", (room) =>
            {
                Rooms.Add(room);
            });

            connection.On <RoomViewModel>("removeChatRoom", (room) =>
            {
                var roomToRemove = Rooms.Where(r => r.Id == room.Id).FirstOrDefault();
                Rooms.Remove(roomToRemove);
            });

            connection.On <string>("onError", (error) =>
            {
                MessageBox.Show(error);
            });

            connection.On <string>("onRoomDeleted", (message) =>
            {
                ListBoxRooms.SelectedIndex = 0;
                txtOnlineCounter.Text      = $"WHO'S HERE ({Users.Count})";
            });
        }
Example #4
0
        private async void ListBoxRooms_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selectedRoom = ListBoxRooms.SelectedItem as RoomViewModel;

            if (selectedRoom != null)
            {
                await connection.SendAsync("Join", selectedRoom.Name);

                User.CurrentRoom = selectedRoom.Name;
                txtRoomName.Text = selectedRoom.Name;

                await GetUsers(selectedRoom.Name);
                await GetMessages(selectedRoom.Name);

                ListViewMessages.Items.MoveCurrentToLast();
                ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem);

                txtOnlineCounter.Text = $"WHO'S HERE ({Users.Count})";
                CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(ListViewUsers.ItemsSource);
                view.Filter = Filter;
            }
        }