mirror of https://github.com/sipwise/jitsi.git
parent
b80e29ce11
commit
2a92b93693
@ -1,29 +1,80 @@
|
||||
package net.java.sip.communicator.impl.protocol.irc.listener;
|
||||
|
||||
import com.ircclouds.irc.api.domain.messages.ServerNotice;
|
||||
import com.ircclouds.irc.api.domain.messages.ServerNumericMessage;
|
||||
import com.ircclouds.irc.api.domain.messages.interfaces.IMessage;
|
||||
import com.ircclouds.irc.api.listeners.IMessageListener;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import net.java.sip.communicator.impl.protocol.irc.*;
|
||||
import net.java.sip.communicator.service.protocol.event.*;
|
||||
|
||||
import com.ircclouds.irc.api.domain.messages.*;
|
||||
import com.ircclouds.irc.api.listeners.*;
|
||||
|
||||
public class GenericListener
|
||||
implements IMessageListener
|
||||
extends VariousMessageListenerAdapter
|
||||
{
|
||||
private final List<ChatRoomIrcImpl> channels;
|
||||
|
||||
public GenericListener(List<ChatRoomIrcImpl> joinedChannels)
|
||||
{
|
||||
this.channels = joinedChannels;
|
||||
}
|
||||
|
||||
// TODO Maybe implement this as a IRC server listener and connect a system
|
||||
// chatroom to each listener in order to inform the user of server
|
||||
// (chatroom-independent) messages, notices, etc.
|
||||
|
||||
|
||||
@Override
|
||||
public void onMessage(IMessage msg)
|
||||
public void onServerNotice(ServerNotice msg)
|
||||
{
|
||||
if (msg instanceof ServerNotice)
|
||||
System.out.println("NOTICE: " + ((ServerNotice) msg).getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServerNumericMessage(ServerNumericMessage msg)
|
||||
{
|
||||
System.out.println("NUM MSG: "
|
||||
+ ((ServerNumericMessage) msg).getNumericCode() + ": "
|
||||
+ ((ServerNumericMessage) msg).getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNickChange(NickMessage msg)
|
||||
{
|
||||
if (msg == null)
|
||||
return;
|
||||
|
||||
// Find all affected channels.
|
||||
HashMap<ChatRoomIrcImpl, ChatRoomMemberIrcImpl> affected =
|
||||
new HashMap<ChatRoomIrcImpl, ChatRoomMemberIrcImpl>();
|
||||
String oldNick = msg.getSource().getNick();
|
||||
synchronized (this.channels)
|
||||
{
|
||||
System.out.println("NOTICE: " + ((ServerNotice) msg).getText());
|
||||
for (ChatRoomIrcImpl channel : this.channels)
|
||||
{
|
||||
ChatRoomMemberIrcImpl member =
|
||||
(ChatRoomMemberIrcImpl) channel.getChatRoomMember(oldNick);
|
||||
if (member != null)
|
||||
{
|
||||
affected.put(channel, member);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (msg instanceof ServerNumericMessage)
|
||||
|
||||
// Process nick change for all of those channels and fire corresponding
|
||||
// property change event.
|
||||
String newNick = msg.getNewNick();
|
||||
for (Entry<ChatRoomIrcImpl, ChatRoomMemberIrcImpl> record : affected
|
||||
.entrySet())
|
||||
{
|
||||
System.out.println("NUM MSG: "
|
||||
+ ((ServerNumericMessage) msg).getNumericCode() + ": "
|
||||
+ ((ServerNumericMessage) msg).getText());
|
||||
ChatRoomIrcImpl channel = record.getKey();
|
||||
ChatRoomMemberIrcImpl member = record.getValue();
|
||||
member.setName(newNick);
|
||||
channel.updateChatRoomMemberName(oldNick, newNick);
|
||||
ChatRoomMemberPropertyChangeEvent evt =
|
||||
new ChatRoomMemberPropertyChangeEvent(member, channel,
|
||||
ChatRoomMemberPropertyChangeEvent.MEMBER_NICKNAME, oldNick,
|
||||
newNick);
|
||||
channel.fireMemberPropertyChangeEvent(evt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in new issue