Add support for the XA XMPP status and fixed (I hope) the build.

cusax-fix
Emil Ivov 18 years ago
parent 53b0edc97a
commit 11ecd5fae5

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

@ -680,7 +680,7 @@ else if(presence.getMode() == null && !presence.isAvailable())
return jabberStatusEnum.getStatus(JabberStatusEnum.OFFLINE);
Presence.Mode mode = presence.getMode();
if(mode.equals(Presence.Mode.available))
return jabberStatusEnum.getStatus(JabberStatusEnum.AVAILABLE);
else if(mode.equals(Presence.Mode.away))
@ -689,8 +689,18 @@ else if(mode.equals(Presence.Mode.chat))
return jabberStatusEnum.getStatus(JabberStatusEnum.FREE_FOR_CHAT);
else if(mode.equals(Presence.Mode.dnd))
return jabberStatusEnum.getStatus(JabberStatusEnum.DO_NOT_DISTURB);
else if(mode.equals(Presence.Mode.xa))
return jabberStatusEnum.getStatus(JabberStatusEnum.EXTENDED_AWAY);
else
{
//unknown status
if(presence.isAway())
return jabberStatusEnum.getStatus(JabberStatusEnum.AWAY);
if(presence.isAvailable())
return jabberStatusEnum.getStatus(JabberStatusEnum.AVAILABLE);
return jabberStatusEnum.getStatus(JabberStatusEnum.OFFLINE);
}
}
/**

@ -512,7 +512,8 @@ protected void initialize(String screenname,
jabberIcon = new ProtocolIconJabberImpl(protocolIconPath);
jabberStatusEnum = new JabberStatusEnum(protocolIconPath);
jabberStatusEnum
= JabberStatusEnum.getJabberStatusEnum(protocolIconPath);
//this feature is mandatory to be compliant with Service Discovery
supportedFeatures.add("http://jabber.org/protocol/disco#info");

@ -78,7 +78,7 @@ public MessageSipImpl(String content,
}
catch (UnsupportedEncodingException ex)
{
logger.warn("can't handle the requested encoding", ex);
logger.warn("can't handle the requested encoding", ex);
this.contentEncoding = Charset.defaultCharset().name();
this.rawContent = content.getBytes();

@ -49,6 +49,12 @@ public class JabberStatusEnum
* communicate.
*/
public static final String FREE_FOR_CHAT = "Free For Chat";
/**
* The Free For Chat status. Indicates that the user is eager to
* communicate.
*/
public static final String EXTENDED_AWAY = "Extended Away";
/**
* Indicates an Offline status or status with 0 connectivity.
@ -89,6 +95,11 @@ public class JabberStatusEnum
* Indicates an Offline status or status with 0 connectivity.
*/
private JabberPresenceStatus offlineStatus;
/**
* Indicates an Extended Away status or status.
*/
private JabberPresenceStatus extendedAwayStatus;
/**
* The supported status set stores all statuses supported by this protocol
@ -102,8 +113,41 @@ public class JabberStatusEnum
* not.
*/
private JabberPresenceStatus unknownStatus;
private static Hashtable<String, JabberStatusEnum> existingEnums
= new Hashtable<String, JabberStatusEnum>();
public JabberStatusEnum(String iconPath)
/**
* Returns an instance of JabberStatusEnum for the specified
* <tt>iconPath</tt> or creates a new one if it doesn't already exist.
*
* @param iconPath the location containing the status icons that should
* be used by this enumeration.
*
* @return the newly created JabberStatusEnum instance.
*/
public static JabberStatusEnum getJabberStatusEnum(String iconPath)
{
JabberStatusEnum statusEnum = existingEnums.get(iconPath);
if(statusEnum != null)
return statusEnum;
statusEnum = new JabberStatusEnum(iconPath);
existingEnums.put(iconPath, statusEnum);
return statusEnum;
}
/**
* Creates a new instance of JabberStatusEnum using <tt>iconPath</tt> as the
* root path where it should be reading status icons from.
*
* @param iconPath the location containing the status icons that should
* be used by this enumeration.
*/
private JabberStatusEnum(String iconPath)
{
this.offlineStatus =
new JabberPresenceStatus(0, OFFLINE, loadIcon(iconPath
@ -124,6 +168,10 @@ public JabberStatusEnum(String iconPath)
this.freeForChatStatus =
new JabberPresenceStatus(85, FREE_FOR_CHAT, loadIcon(iconPath
+ "/status16x16-ffc.png"));
this.extendedAwayStatus =
new JabberPresenceStatus(85, EXTENDED_AWAY, loadIcon(iconPath
+ "/status16x16-xa.png"));
this.unknownStatus =
new JabberPresenceStatus(1, UNKNOWN, loadIcon(iconPath
@ -133,6 +181,7 @@ public JabberStatusEnum(String iconPath)
supportedStatusSet.add(freeForChatStatus);
supportedStatusSet.add(availableStatus);
supportedStatusSet.add(awayStatus);
supportedStatusSet.add(extendedAwayStatus);
supportedStatusSet.add(doNotDisturbStatus);
supportedStatusSet.add(offlineStatus);
}
@ -155,6 +204,8 @@ else if (statusName.equals(DO_NOT_DISTURB))
return doNotDisturbStatus;
else if (statusName.equals(AWAY))
return awayStatus;
else if (statusName.equals(EXTENDED_AWAY))
return extendedAwayStatus;
else
return unknownStatus;
}

@ -974,8 +974,11 @@ public void contactPresenceStatusChanged(
&& !evt.getSourceContact().getAddress()
.equals(trackedScreenName))
return;
if( status != null
&& status != evt.getNewStatus())
if( status == null )
return;
if(status != evt.getNewStatus())
return;
logger.debug("Collected evt("+collectedEvents.size()+")= "+evt);

Loading…
Cancel
Save