diff options
Diffstat (limited to 'src/net/java/sip/communicator/impl/protocol/icq')
4 files changed, 85 insertions, 4 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetAvatarIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetAvatarIcqImpl.java new file mode 100644 index 0000000..068fd35 --- /dev/null +++ b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetAvatarIcqImpl.java @@ -0,0 +1,26 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.impl.protocol.icq; + +import net.java.sip.communicator.service.protocol.*; + +/** + * A simple implementation of the <tt>OperationSetAvatar</tt> interface for the + * icq protocol. + * + * @author Damian Minkov + */ +public class OperationSetAvatarIcqImpl + extends AbstractOperationSetAvatar<ProtocolProviderServiceIcqImpl> +{ + public OperationSetAvatarIcqImpl( + ProtocolProviderServiceIcqImpl parentProvider, + OperationSetServerStoredAccountInfo accountInfoOpSet) + { + super(parentProvider, accountInfoOpSet, 0, 0, 0); + } +} 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 1b9fcc2..eef5815 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java @@ -1098,6 +1098,12 @@ public class OperationSetPersistentPresenceIcqImpl || evt.getNewState() == RegistrationState.AUTHENTICATION_FAILED || evt.getNewState() == RegistrationState.CONNECTION_FAILED) { + if(presenceQueryTimer != null) + { + presenceQueryTimer.cancel(); + presenceQueryTimer = null; + } + //since we are disconnected, we won't receive any further status //updates so we need to change by ourselves our own status as //well as set to offline all contacts in our contact list that diff --git a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetServerStoredAccountInfoIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetServerStoredAccountInfoIcqImpl.java index cfc304d..b30e130 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetServerStoredAccountInfoIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetServerStoredAccountInfoIcqImpl.java @@ -275,6 +275,24 @@ public class OperationSetServerStoredAccountInfoIcqImpl throw new ArrayIndexOutOfBoundsException( "Max count for this detail is already reached"); + if (detail instanceof ImageDetail) + { + if (iconListener == null) + { + iconListener = new IconUpdateListener(); + + this.icqProvider.getAimConnection().getExternalServiceManager(). + getIconServiceArbiter().addIconRequestListener( + new IconUpdateListener()); + } + + icqProvider.getAimConnection().getMyBuddyIconManager().requestSetIcon( + ByteBlock.wrap(((ServerStoredDetails.ImageDetail) detail).getBytes())); + infoRetreiver.detailsChanged(uin); + + return; + } + // everything is ok , so set it alreadySetDetails.add(detail); @@ -562,6 +580,26 @@ public class OperationSetServerStoredAccountInfoIcqImpl if(!isFound) return false; + //replacing in case of image + if (newDetailValue instanceof ImageDetail) + { + if (iconListener == null) + { + iconListener = new IconUpdateListener(); + + this.icqProvider.getAimConnection().getExternalServiceManager(). + getIconServiceArbiter().addIconRequestListener( + new IconUpdateListener()); + } + icqProvider.getAimConnection().getMyBuddyIconManager() + .requestSetIcon(ByteBlock.wrap( + ((ServerStoredDetails.ImageDetail) newDetailValue) + .getBytes())); + + infoRetreiver.detailsChanged(uin); + return true; + } + SuccessResponseListener responseListener = new SuccessResponseListener(); // // if toBeCleared == null. make it empty one diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java index c896864..3cbe5da 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java @@ -497,12 +497,23 @@ public class ProtocolProviderServiceIcqImpl infoRetreiver, this)); - addSupportedOperationSet( - OperationSetServerStoredAccountInfo.class, - new OperationSetServerStoredAccountInfoIcqImpl( + OperationSetServerStoredAccountInfoIcqImpl + serverStoredAccountInfoOpSet = + new OperationSetServerStoredAccountInfoIcqImpl( infoRetreiver, screenname, - this)); + this); + addSupportedOperationSet( + OperationSetServerStoredAccountInfo.class, + serverStoredAccountInfoOpSet); + +// Currently disabled as when we send avatar +// we receive an error from server +// addSupportedOperationSet( +// OperationSetAvatar.class, +// new OperationSetAvatarIcqImpl( +// this, +// serverStoredAccountInfoOpSet)); addSupportedOperationSet( OperationSetWebAccountRegistration.class, |