Support mode changes for local user role.

fix-message-formatting
Danny van Heumen 12 years ago
parent 027e3585ad
commit 69a76652af

@ -995,6 +995,29 @@ public void fireMemberRoleEvent( ChatRoomMember member,
for (ChatRoomMemberRoleListener listener : listeners)
listener.memberRoleChanged(evt);
}
/**
* Notify all <tt>ChatRoomLocalUserRoleListener</tt>s that the local user's
* role has been changed in this <tt>ChatRoom</tt>.
*
* @param event the event that describes the local user's role change
*/
public void fireLocalUserRoleChangedEvent(
ChatRoomLocalUserRoleChangeEvent event)
{
ArrayList<ChatRoomLocalUserRoleListener> listeners;
synchronized (localUserRoleListeners)
{
listeners =
new ArrayList<ChatRoomLocalUserRoleListener>(
localUserRoleListeners);
}
for (ChatRoomLocalUserRoleListener listener : listeners)
{
listener.localUserRoleChanged(event);
}
}
/**
* Indicates if this chat room is a private one or not. Private chat rooms

@ -121,6 +121,7 @@ public void connect(String host, int port, String password,
// register a server listener in order to catch server and cross-/multi-channel messages
this.irc.addListener(new ServerListener());
// start connecting to the specified server ...
// TODO Catch IOException/SocketException in case of early failure in call to connect()
this.irc.connect(this.params, new Callback<IIRCState>()
{
@ -818,9 +819,23 @@ private void processModeMessage(ChannelModeMessage msg)
String ownerUserName = mode.getParams()[0];
if (isMe(ownerUserName))
{
System.out.println("Local user owner change! (no business logic yet, just discovery) "
+ mode.isAdded());
// TODO Do something on local user owner change.
ChatRoomLocalUserRoleChangeEvent event;
if (mode.isAdded())
{
event =
new ChatRoomLocalUserRoleChangeEvent(
this.chatroom,
ChatRoomMemberRole.SILENT_MEMBER,
ChatRoomMemberRole.OWNER);
}
else
{
event =
new ChatRoomLocalUserRoleChangeEvent(
this.chatroom, ChatRoomMemberRole.OWNER,
ChatRoomMemberRole.SILENT_MEMBER);
}
this.chatroom.fireLocalUserRoleChangedEvent(event);
}
else
{
@ -843,12 +858,24 @@ private void processModeMessage(ChannelModeMessage msg)
String opUserName = mode.getParams()[0];
if (isMe(opUserName))
{
System.out.println("Local user op change! "
+ mode.isAdded());
// TODO How to fire a local user role change event?
// TODO Do something in case the local user is affected,
// hence the member cannot be found using
// getChatRoomMember.
ChatRoomLocalUserRoleChangeEvent event;
if (mode.isAdded())
{
event =
new ChatRoomLocalUserRoleChangeEvent(
this.chatroom,
ChatRoomMemberRole.SILENT_MEMBER,
ChatRoomMemberRole.ADMINISTRATOR);
}
else
{
event =
new ChatRoomLocalUserRoleChangeEvent(
this.chatroom,
ChatRoomMemberRole.ADMINISTRATOR,
ChatRoomMemberRole.SILENT_MEMBER);
}
this.chatroom.fireLocalUserRoleChangedEvent(event);
}
else
{
@ -870,8 +897,23 @@ private void processModeMessage(ChannelModeMessage msg)
String voiceUserName = mode.getParams()[0];
if (isMe(voiceUserName))
{
System.out.println("Local user voice change! "+mode.isAdded());
// TODO Do something when local user is affected.
ChatRoomLocalUserRoleChangeEvent event;
if (mode.isAdded())
{
event =
new ChatRoomLocalUserRoleChangeEvent(
this.chatroom,
ChatRoomMemberRole.SILENT_MEMBER,
ChatRoomMemberRole.MEMBER);
}
else
{
event =
new ChatRoomLocalUserRoleChangeEvent(
this.chatroom, ChatRoomMemberRole.MEMBER,
ChatRoomMemberRole.SILENT_MEMBER);
}
this.chatroom.fireLocalUserRoleChangedEvent(event);
}
else
{

Loading…
Cancel
Save