/// <summary> /// The dispose. /// </summary> public void Dispose() { this.AdminList.Clear(); this.ModeratorList.Clear(); this.OwnerList.Clear(); this.Users.Clear(); this.VoiceList.Clear(); this.GroupUser = null; if (OnMessageReceived != null) { foreach (var d in OnMessageReceived.GetInvocationList()) { OnMessageReceived -= (DMessageReceived)d; } } if (OnUserListChange != null) { foreach (var d in OnUserListChange.GetInvocationList()) { OnUserListChange -= (DUserListChange)d; } } if (OnStateChanged != null) { foreach (var d in OnStateChanged.GetInvocationList()) { OnStateChanged -= (DRoomStateChange)d; } } stateTimer.Dispose(); }
public void AddUser(NewUser user, bool InviteUser = true) { if (!Users.Contains(user)) { Users.Add(user); } if (Users.Count > 2 || IsGroupChat) { if (!IsGroupChat) { IsGroupChat = true; var rname = Randomness.RandomRoomName(); GroupUser = new NewUser(rname + "@conference." + Skylabs.Lobby.Client.Host); _client.MucManager.JoinRoom(GroupUser.User, _client.Me.User.User); _client.RosterManager.AddRosterItem(GroupUser.User, GroupUser.User.User); } if (InviteUser) { foreach (var u in Users) { if (u != _client.Me) { _client.MucManager.Invite(u.User, GroupUser.User); } } } } if (OnUserListChange != null) { OnUserListChange.Invoke(this, Users); } }
public void UserLeft(NewUser user) { Users.Remove(user); if (OnUserListChange != null) { OnUserListChange.Invoke(this, Users); } }