From 1faa2ee7a8bbe0489461c7cbc07d015c6e32ac1f Mon Sep 17 00:00:00 2001 From: hristoterezov Date: Thu, 16 Jan 2014 22:52:42 +0200 Subject: [PATCH] Fixes issue with automatically open chat rooms on startup. --- .../conference/ConferenceChatManager.java | 2 ++ .../protocol/jabber/ChatRoomJabberImpl.java | 25 ++++++++++++++----- .../ChatRoomLocalUserRoleChangeEvent.java | 19 +++++++++++++- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java index fc6a6b05a..509770164 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java @@ -1301,6 +1301,8 @@ public void invitationRejected(AdHocChatRoomInvitationRejectedEvent evt) {} @Override public void localUserRoleChanged(ChatRoomLocalUserRoleChangeEvent evt) { + if(evt.isInitial()) + return; ChatRoom sourceChatRoom = evt.getSourceChatRoom(); ChatRoomWrapper chatRoomWrapper = GuiActivator.getMUCService().findChatRoomWrapperFromChatRoom( diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java index bdef78ec6..0a9f6b9c2 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java @@ -989,7 +989,18 @@ public ChatRoomMemberRole getUserRole() */ public void setLocalUserRole(ChatRoomMemberRole role) { - fireLocalUserRoleEvent(getUserRole(), role); + setLocalUserRole(role, false); + } + + /** + * Sets the new rolefor the local user in the context of this chatroom. + * + * @param role the new role to be set for the local user + * @param isInitial if true this is initial role set. + */ + public void setLocalUserRole(ChatRoomMemberRole role, boolean isInitial) + { + fireLocalUserRoleEvent(getUserRole(), role, isInitial); this.role = role; } @@ -2201,13 +2212,15 @@ public void adminRevoked() * * @param previousRole the previous role that local user had * @param newRole the new role the local user gets + * @param isInitial if true this is initial role set. */ private void fireLocalUserRoleEvent(ChatRoomMemberRole previousRole, - ChatRoomMemberRole newRole) + ChatRoomMemberRole newRole, + boolean isInitial) { ChatRoomLocalUserRoleChangeEvent evt = new ChatRoomLocalUserRoleChangeEvent( - this, previousRole, newRole); + this, previousRole, newRole, isInitial); if (logger.isTraceEnabled()) logger.trace("Will dispatch the following ChatRoom event: " + evt); @@ -2726,10 +2739,10 @@ private void processOwnPresence(Presence presence) if(affiliation.equalsIgnoreCase(ChatRoomMemberRole.OWNER .getRoleName().toLowerCase())) { - setLocalUserRole(ChatRoomMemberRole.OWNER); + setLocalUserRole(ChatRoomMemberRole.OWNER, true); } else - setLocalUserRole(ChatRoomMemberRole.MODERATOR); + setLocalUserRole(ChatRoomMemberRole.MODERATOR, true); } else { @@ -2743,7 +2756,7 @@ private void processOwnPresence(Presence presence) || jitsiRole == ChatRoomMemberRole.OWNER || jitsiRole == ChatRoomMemberRole.ADMINISTRATOR) { - setLocalUserRole(jitsiRole); + setLocalUserRole(jitsiRole, true); } } } diff --git a/src/net/java/sip/communicator/service/protocol/event/ChatRoomLocalUserRoleChangeEvent.java b/src/net/java/sip/communicator/service/protocol/event/ChatRoomLocalUserRoleChangeEvent.java index 3073515a4..09dc5a9c8 100644 --- a/src/net/java/sip/communicator/service/protocol/event/ChatRoomLocalUserRoleChangeEvent.java +++ b/src/net/java/sip/communicator/service/protocol/event/ChatRoomLocalUserRoleChangeEvent.java @@ -37,6 +37,11 @@ public class ChatRoomLocalUserRoleChangeEvent * The new role that local participant get. */ private ChatRoomMemberRole newRole = null; + + /** + * If true this is initial role set. + */ + private boolean isInitial = false; /** * Creates a ChatRoomLocalUserRoleChangeEvent representing that @@ -46,14 +51,17 @@ public class ChatRoomLocalUserRoleChangeEvent * @param sourceRoom the ChatRoom that produced the event * @param previousRole the previous role that local participant had * @param newRole the new role that local participant get + * @param isInitial if true this is initial role set. */ public ChatRoomLocalUserRoleChangeEvent(ChatRoom sourceRoom, ChatRoomMemberRole previousRole, - ChatRoomMemberRole newRole) + ChatRoomMemberRole newRole, + boolean isInitial) { super(sourceRoom); this.previousRole = previousRole; this.newRole = newRole; + this.isInitial = isInitial; } /** @@ -85,4 +93,13 @@ public ChatRoom getSourceChatRoom() { return (ChatRoom)getSource(); } + + /** + * Returns true if this is initial role set. + * @return true if this is initial role set. + */ + public boolean isInitial() + { + return isInitial; + } }