aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/protocol/icq
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/sip/communicator/impl/protocol/icq')
-rw-r--r--src/net/java/sip/communicator/impl/protocol/icq/OperationSetAvatarIcqImpl.java26
-rw-r--r--src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java6
-rw-r--r--src/net/java/sip/communicator/impl/protocol/icq/OperationSetServerStoredAccountInfoIcqImpl.java38
-rw-r--r--src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java19
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,