/// <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; } }
/// <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; }