Пример #1
0
        /// <summary>
        /// Adds user to user list in right area of the window.
        /// </summary>
        /// <param name="userInfo">New user informations</param>
        private void AddUserToListInternal(UserInfo userInfo)
        {
            //Do not add the current user (that is using the application) to user list
            if (userInfo.Nick == CurrentUserInfo.Nick)
            {
                return;
            }

            //Do not add user to list if it is already exists.
            if (FindUserInList(userInfo.Nick) != null)
            {
                return;
            }

            //Find correct order (by name) to insert the user
            var orderedIndex = 0;
            foreach (UserCardControl userCardControl in spUsers.Children)
            {
                if (userInfo.Nick.CompareTo(userCardControl.UserNick) < 0)
                {
                    break;
                }
                orderedIndex++;
            }

            //Create user control
            var userCard = new UserCardControl
            {
                UserNick = userInfo.Nick,
                UserStatus = userInfo.Status,
                AvatarBytes = userInfo.AvatarBytes,
                Height = 60
            };
            userCard.MouseDoubleClick += UserCard_MouseDoubleClick;

            //Insert user to user list
            spUsers.Children.Insert(
                orderedIndex,
                userCard
                );

            //Enable private messaging window if any open with that user
            if (_privateChatWindows.ContainsKey(userInfo.Nick))
            {
                _privateChatWindows[userInfo.Nick].UserLoggedIn();
                _privateChatWindows[userInfo.Nick].RemoteUserStatus = userInfo.Status;
                _privateChatWindows[userInfo.Nick].RemoteUserAvatar = userCard.AvatarImageSource;
            }
        }
Пример #2
0
 /// <summary>
 /// Creates a new PrivateChatWindow from a user card.
 /// </summary>
 /// <param name="userCard">User card to use while creating window</param>
 /// <returns>Created window</returns>
 private PrivateChatWindow CreatePrivateChatWindow(UserCardControl userCard)
 {
     var window = new PrivateChatWindow(_controller)
     {
         CurrentUserNick = txtNick.Text,
         CurrentUserStatus = GetCurrentUserStatus(),
         CurrentUserAvatar = imgCurrentUserAvatar.Source,
         RemoteUserNick = userCard.UserNick,
         RemoteUserStatus = userCard.UserStatus,
         RemoteUserAvatar = userCard.AvatarImageSource
     };
     window.Closed += PrivateChatWindow_Closed;
     window.Show();
     return window;
 }