aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
diff options
context:
space:
mode:
authorDamian Minkov <damencho@jitsi.org>2007-03-12 10:01:55 +0000
committerDamian Minkov <damencho@jitsi.org>2007-03-12 10:01:55 +0000
commit8a22c637b84d111dfce6020f471d9b5ebfbb930a (patch)
tree71d3c205b693c68ec309126360ff74c8d64af1df /src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
parent80944cc99652a10ac56a1dc0943623519cb7806a (diff)
downloadjitsi-8a22c637b84d111dfce6020f471d9b5ebfbb930a.zip
jitsi-8a22c637b84d111dfce6020f471d9b5ebfbb930a.tar.gz
jitsi-8a22c637b84d111dfce6020f471d9b5ebfbb930a.tar.bz2
Added icon support for ICQ
Diffstat (limited to 'src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java')
-rw-r--r--src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
index e6ab231..d1c55c9 100644
--- a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
@@ -14,6 +14,7 @@ import net.java.sip.communicator.service.protocol.event.*;
import net.java.sip.communicator.service.protocol.icqconstants.*;
import net.java.sip.communicator.service.protocol.AuthorizationResponse.*;
import net.java.sip.communicator.util.*;
+import net.kano.joscar.*;
import net.kano.joscar.flapcmd.*;
import net.kano.joscar.snac.*;
import net.kano.joscar.snaccmd.*;
@@ -25,6 +26,7 @@ import net.kano.joustsim.oscar.*;
import net.kano.joustsim.oscar.oscar.service.bos.*;
import net.kano.joustsim.oscar.oscar.service.buddy.*;
import net.kano.joustsim.oscar.oscar.service.ssi.*;
+import net.kano.joustsim.oscar.oscar.service.icon.*;
/**
@@ -1240,6 +1242,10 @@ public class OperationSetPersistentPresenceIcqImpl
// contacts and we really need it here ...*/
icqProvider.getAimConnection().getBuddyInfoManager()
.addGlobalBuddyInfoListener(new GlobalBuddyInfoListener());
+
+ icqProvider.getAimConnection().getExternalServiceManager().
+ getIconServiceArbiter().addIconRequestListener(
+ new IconUpdateListener());
}
else if(evt.getNewState() == RegistrationState.UNREGISTERED
|| evt.getNewState() == RegistrationState.AUTHENTICATION_FAILED
@@ -1563,4 +1569,36 @@ public class OperationSetPersistentPresenceIcqImpl
logger.trace("youWereAdded from " + screenname);
}
}
-}
+
+ /**
+ * Notified if buddy icon is changed
+ */
+ private class IconUpdateListener
+ implements IconRequestListener
+ {
+ public void buddyIconCleared(IconService iconService, Screenname screenname, ExtraInfoData extraInfoData)
+ {
+ updateBuddyyIcon(screenname, null);
+ }
+
+ public void buddyIconUpdated(IconService iconService, Screenname screenname, ExtraInfoData extraInfoData, ByteBlock byteBlock)
+ {
+ if(byteBlock != null)
+ updateBuddyyIcon(screenname, byteBlock.toByteArray());
+ }
+
+ /**
+ * Changes the Contact image
+ * @param screenname the contact screenname
+ * @param icon byte array representing the image
+ */
+ private void updateBuddyyIcon(Screenname screenname, byte[] icon)
+ {
+ ContactIcqImpl contact =
+ ssContactList.findContactByScreenName(screenname.getFormatted());
+
+ if(contact != null)
+ contact.setImage(icon);
+ }
+ }
+} \ No newline at end of file