oubli d'un fichier
authorDa Risk <darisk972@gmail.com>
Thu, 16 Apr 2009 00:33:00 +0200
changeset 107 71ad42062140
parent 106 a9bc9297dff7
child 108 c60aa2237865
oubli d'un fichier
src/com/beem/project/beem/utils/Status.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/utils/Status.java	Thu Apr 16 00:33:00 2009 +0200
@@ -0,0 +1,112 @@
+/**
+ * 
+ */
+package com.beem.project.beem.utils;
+
+import org.jivesoftware.smack.packet.Presence;
+import org.jivesoftware.smack.packet.Presence.Mode;
+
+/**
+ * @author darisk
+ */
+public class Status {
+
+    /**
+     * Status of a disconnected contact.
+     */
+    public static final int CONTACT_STATUS_DISCONNECT = 100;
+
+    /**
+     * Status of a unavailable (long away) contact.
+     */
+    public static final int CONTACT_STATUS_UNAVAILABLE = 200;
+
+    /**
+     * Status of a away contact.
+     */
+    public static final int CONTACT_STATUS_AWAY = 300;
+
+    /**
+     * Status of a busy contact.
+     */
+    public static final int CONTACT_STATUS_BUSY = 400;
+
+    /**
+     * Status of a available contact.
+     */
+    public static final int CONTACT_STATUS_AVAILABLE = 500;
+
+    /**
+     * Status of a available for chat contact.
+     */
+    public static final int CONTACT_STATUS_AVAILABLE_FOR_CHAT = 600;
+
+    /**
+     * Get the status of from a presence packet.
+     * @param presence the presence containing status
+     */
+    public static int getStatusFromPresence(Presence presence) {
+	int res = Status.CONTACT_STATUS_DISCONNECT;
+	if (presence.getType().equals(Presence.Type.unavailable)) {
+	    res = Status.CONTACT_STATUS_DISCONNECT;
+	} else {
+	    Mode mode = presence.getMode();
+	    if (mode == null) {
+		res = Status.CONTACT_STATUS_AVAILABLE;
+	    } else {
+		switch (mode) {
+		    case available:
+			res = Status.CONTACT_STATUS_AVAILABLE;
+			break;
+		    case away:
+			res = Status.CONTACT_STATUS_AWAY;
+			break;
+		    case chat:
+			res = Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT;
+			break;
+		    case dnd:
+			res = Status.CONTACT_STATUS_BUSY;
+			break;
+		    case xa:
+			res = Status.CONTACT_STATUS_UNAVAILABLE;
+			break;
+		    default:
+			res = Status.CONTACT_STATUS_DISCONNECT;
+			break;
+		}
+	    }
+	}
+	return res;
+    }
+    
+    /**
+     * Get the smack presence mode for a status
+     * @param status the status in beem
+     * @return the presence mode to use in presence packet
+     * 		or null if there is no mode to use
+     */
+    public static Presence.Mode getPresenceModeFromStatus(int status){
+	Presence.Mode res;
+	switch (status) {
+	    case CONTACT_STATUS_AVAILABLE:
+		res = Presence.Mode.available;
+		break;
+	    case CONTACT_STATUS_AVAILABLE_FOR_CHAT:
+		res = Presence.Mode.chat;		
+		break;
+	    case CONTACT_STATUS_AWAY:
+		res = Presence.Mode.away;
+		break;
+	    case CONTACT_STATUS_BUSY:
+		res = Presence.Mode.dnd;
+		break;
+	    case CONTACT_STATUS_UNAVAILABLE:
+		res = Presence.Mode.xa;
+		break;
+	    default:
+		return null;
+	}
+	return res;
+    }
+    
+}