src/com/beem/project/beem/service/XmppConnectionAdapter.java
changeset 686 03d61b8faa0d
parent 685 bd5bddda04dd
parent 683 ec60b1bbeb79
child 696 f5a2d8aeb41e
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Fri Feb 19 02:21:35 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Fri Feb 19 02:26:21 2010 +0100
@@ -99,6 +99,8 @@
     private String mErrorMsg;
     private RosterAdapter mRoster;
     private int mPreviousPriority;
+    private int mPreviousMode;
+    private String mPreviousStatus;
     private PrivacyListManagerAdapter mPrivacyListManager;
     private final BeemService mService;
     private BeemApplication mApplication;
@@ -184,7 +186,7 @@
 			mService.getResources().getIdentifier(
 			    e.getXMPPError().getCondition().replace("-", "_"), "string", "com.beem.project.beem"));
 		    mErrorMsg = str;
-		} catch(NullPointerException e2) {
+		} catch (NullPointerException e2) {
 		    if (!"".equals(e.getMessage()))
 			mErrorMsg = e.getMessage();
 		    else
@@ -277,11 +279,16 @@
 	if (msg != null)
 	    m = msg;
 	else
-	    m = "";
+	    m = mPreviousStatus;
 	pres.setStatus(m);
+	mPreviousStatus = m;
 	Presence.Mode mode = Status.getPresenceModeFromStatus(status);
-	if (mode != null)
+	if (mode != null) {
 	    pres.setMode(mode);
+	    mPreviousMode = status;
+	} else {
+	    pres.setMode(Status.getPresenceModeFromStatus(mPreviousMode));
+	}
 	int p = priority;
 	if (priority < SMACK_PRIORITY_MIN)
 	    p = SMACK_PRIORITY_MIN;
@@ -298,19 +305,23 @@
      */
     @Override
     public void changeStatus(int status, String msg) {
-	Presence pres = new Presence(Presence.Type.available);
-	String m;
-	if (msg != null)
-	    m = msg;
-	else
-	    m = "";
-	pres.setStatus(m);
-	Presence.Mode mode = Status.getPresenceModeFromStatus(status);
-	if (mode != null)
-	    pres.setMode(mode);
-	pres.setPriority(mPreviousPriority);
-	mAdaptee.sendPacket(pres);
-	updateNotification(msg);
+	changeStatusAndPriority(status, msg, mPreviousPriority);
+    }
+
+    /**
+     * get the previous status.
+     * @return previous status.
+     */
+    public String getPreviousStatus() {
+	return mPreviousStatus;
+    }
+
+    /**
+     * get the previous mode.
+     * @return previous mode.
+     */
+    public int getPreviousMode() {
+	return mPreviousMode;
     }
 
     /**
@@ -356,14 +367,6 @@
     }
 
     /**
-     * Get the context of the adapter.
-     * @return The context of the adapter
-     */
-    public BeemService getContext() {
-	return mService;
-    }
-
-    /**
      * {@inheritDoc}
      */
     @Override