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;
|
package net.java.sip.communicator.impl.protocol.irc.listener;
|
||||||
|
|
||||||
import com.ircclouds.irc.api.domain.messages.ServerNotice;
|
import java.util.*;
|
||||||
import com.ircclouds.irc.api.domain.messages.ServerNumericMessage;
|
import java.util.Map.Entry;
|
||||||
import com.ircclouds.irc.api.domain.messages.interfaces.IMessage;
|
|
||||||
import com.ircclouds.irc.api.listeners.IMessageListener;
|
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
|
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
|
// 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 to each listener in order to inform the user of server
|
||||||
// (chatroom-independent) messages, notices, etc.
|
// (chatroom-independent) messages, notices, etc.
|
||||||
|
|
||||||
@Override
|
@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: "
|
ChatRoomIrcImpl channel = record.getKey();
|
||||||
+ ((ServerNumericMessage) msg).getNumericCode() + ": "
|
ChatRoomMemberIrcImpl member = record.getValue();
|
||||||
+ ((ServerNumericMessage) msg).getText());
|
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