src/com/beem/project/beem/ui/ChangeStatus.java
changeset 402 4684a42ae0ad
parent 401 551bc80197f5
child 412 5031fb756b29
--- a/src/com/beem/project/beem/ui/ChangeStatus.java	Fri Sep 25 22:14:53 2009 +0200
+++ b/src/com/beem/project/beem/ui/ChangeStatus.java	Sat Sep 26 01:15:19 2009 +0200
@@ -32,23 +32,22 @@
  */
 public class ChangeStatus extends Activity {
 
-    
     private static final Intent SERVICE_INTENT = new Intent();
     static {
 	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
     }
-    private static final int DISCONNECTED_IDX = 5;
+
     private static final int AVAILABLE_FOR_CHAT_IDX = 0;
     private static final int AVAILABLE_IDX = 1;
     private static final int BUSY_IDX = 2;
     private static final int AWAY_IDX = 3;
     private static final int UNAVAILABLE_IDX = 4;
+    private static final int DISCONNECTED_IDX = 5;
     private TextView mStatusText;
     private Toast mToast;
     private Button mOk;
     private Button mClear;
     private Spinner mSpinner;
-    private String[] mStatus;
 
     private SharedPreferences mSettings;
     private ArrayAdapter<CharSequence> mAdapter;
@@ -82,34 +81,26 @@
 
     /**
      * convert status text to.
-     * @param item
-     * @return
+     * @param item selected item text.
+     * @return item position in the array.
      */
     private int getStatusForService(String item) {
-	int res = Status.CONTACT_STATUS_AVAILABLE;
-	for (int i = 0; i < mStatus.length; i++) {
-	    String str = mStatus[i];
-	    if (str.equals(item)) {
-		switch (i) {
-		    case ChangeStatus.DISCONNECTED_IDX:
-			return Status.CONTACT_STATUS_DISCONNECT;
-		    case ChangeStatus.AVAILABLE_FOR_CHAT_IDX:
-			return Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT;
-		    case ChangeStatus.AVAILABLE_IDX:
-			return Status.CONTACT_STATUS_AVAILABLE;
-		    case ChangeStatus.AWAY_IDX:
-			return Status.CONTACT_STATUS_AWAY;
-		    case ChangeStatus.BUSY_IDX:
-			return Status.CONTACT_STATUS_BUSY;
-		    case ChangeStatus.UNAVAILABLE_IDX:
-			return Status.CONTACT_STATUS_UNAVAILABLE;
-		    default:
-			res = Status.CONTACT_STATUS_AVAILABLE;
-		    	break;
-		}
-	    }
+	switch (mAdapter.getPosition(item)) {
+	    case ChangeStatus.DISCONNECTED_IDX:
+		return Status.CONTACT_STATUS_DISCONNECT;
+	    case ChangeStatus.AVAILABLE_FOR_CHAT_IDX:
+		return Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT;
+	    case ChangeStatus.AVAILABLE_IDX:
+		return Status.CONTACT_STATUS_AVAILABLE;
+	    case ChangeStatus.AWAY_IDX:
+		return Status.CONTACT_STATUS_AWAY;
+	    case ChangeStatus.BUSY_IDX:
+		return Status.CONTACT_STATUS_BUSY;
+	    case ChangeStatus.UNAVAILABLE_IDX:
+		return Status.CONTACT_STATUS_UNAVAILABLE;
+	    default:
+		return Status.CONTACT_STATUS_AVAILABLE;
 	}
-	return res;
     }
 
     /**
@@ -135,7 +126,6 @@
 	mReceiver = new BeemBroadcastReceiver();
 	mStatusText.setText(getPreferenceString(R.string.PreferenceStatusText));
 	mSpinner.setSelection(getPreferenceStatusIndex());
-	mStatus = getResources().getStringArray(R.array.status_types);
     }
 
     /**
@@ -166,25 +156,52 @@
 	this.unregisterReceiver(mReceiver);
     }
 
+    /**
+     * connection to service.
+     * @author nikita
+     */
     private class BeemServiceConnection implements ServiceConnection {
 
+	/**
+	 * constructor.
+	 */
+	public BeemServiceConnection() {
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
 	@Override
 	public void onServiceConnected(ComponentName name, IBinder service) {
 	    mXmppFacade = IXmppFacade.Stub.asInterface(service);
 	}
 
+	/**
+	 * {@inheritDoc}
+	 */
 	@Override
 	public void onServiceDisconnected(ComponentName name) {
 	    mXmppFacade = null;
 	}
     }
 
+    /**
+     * User have clicked on ok.
+     * @author nikita
+     */
     private class MyOnClickListener implements OnClickListener {
 
+	/**
+	 * constructor.
+	 */
+	public MyOnClickListener() {
+	}
+
 	@Override
 	public void onClick(View v) {
 	    if (v == mOk) {
-		if (textHasChanged() || statusHasChanged()) {
+		if (!mStatusText.getText().toString().equals(getPreferenceString(R.string.PreferenceStatusText))
+		    || getPreferenceStatusIndex() != mSpinner.getSelectedItemPosition()) {
 		    String msg = mStatusText.getText().toString();
 		    int status = getStatusForService((String) mSpinner.getSelectedItem());
 		    Editor edit = mSettings.edit();
@@ -197,9 +214,6 @@
 			try {
 			    mXmppFacade.changeStatus(status, msg.toString());
 			} catch (RemoteException e) {
-			    // TODO
-			    // Auto-generated
-			    // catch block
 			    e.printStackTrace();
 			}
 			mToast.show();
@@ -210,12 +224,5 @@
 		mStatusText.setText(null);
 	    }
 	}
-	private boolean statusHasChanged() {
-	    return mSettings.getInt(getString(R.string.PreferenceStatus), 0) != mSpinner.getSelectedItemPosition();
-	}
-
-	private boolean textHasChanged() {
-	    return !mStatusText.getText().toString().equals(getPreferenceString(R.string.PreferenceStatusText));
-	}
     }
 }