# HG changeset patch # User Philippe Lago # Date 1240406382 -7200 # Node ID dded6cd76f8c893d49abf984a5926e7d6d9a54a8 # Parent 59c052ee1c90e00c011489727475cfbeae39df45 Changement de statuts ok sauvée dans les sharedpreferences diff -r 59c052ee1c90 -r dded6cd76f8c res/values/strings.xml --- a/res/values/strings.xml Wed Apr 22 11:48:49 2009 +0200 +++ b/res/values/strings.xml Wed Apr 22 15:19:42 2009 +0200 @@ -36,6 +36,8 @@ HTTP SOCKS4 SOCKS5 + status + status_text @@ -51,5 +53,7 @@ Type here your status message : + Updating status + Nothing to change diff -r 59c052ee1c90 -r dded6cd76f8c src/com/beem/project/beem/ui/ChangeStatus.java --- a/src/com/beem/project/beem/ui/ChangeStatus.java Wed Apr 22 11:48:49 2009 +0200 +++ b/src/com/beem/project/beem/ui/ChangeStatus.java Wed Apr 22 15:19:42 2009 +0200 @@ -1,26 +1,37 @@ package com.beem.project.beem.ui; import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; +import android.widget.Toast; +import android.widget.AdapterView.OnItemSelectedListener; import com.beem.project.beem.R; +import com.beem.project.beem.utils.Status; public class ChangeStatus extends Activity { - private TextView mTextStatus; + private TextView mStatusText; private Button mOk; private Button mClear; private Spinner mSpin; + private String mSelectedStatus; + private SharedPreferences mSettings; private ArrayAdapter mAdapter; - private static final String[] mStatus = {"Available for chat", "Available", "Busy", "Away", - "Unavailable", "Disconnected"}; + private Context mContext = this; + private Toast mToast; + private static final String[] mStatus = {"Available", "Available for chat", + "Busy", "Away", "Unavailable", "Disconnected"}; @Override protected void onCreate(Bundle savedInstanceState) { @@ -28,31 +39,115 @@ super.onCreate(savedInstanceState); setContentView(R.layout.changestatus); - mTextStatus = (TextView) findViewById(R.id.ChangeStatusText); + mStatusText = (TextView) findViewById(R.id.ChangeStatusText); mOk = (Button) findViewById(R.id.ChangeStatusOk); mClear = (Button) findViewById(R.id.ChangeStatusClear); mOk.setOnClickListener(mOnClickOk); mClear.setOnClickListener(mOnClickClear); - + mSettings = getSharedPreferences(getString(R.string.PreferenceFileName), + MODE_PRIVATE); mSpin = (Spinner) findViewById(R.id.ChangeStatusSpinner); mAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, mStatus); mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mSpin.setAdapter(mAdapter); + mSpin.setOnItemSelectedListener(mStatusItem); + showSettings(); } + private OnItemSelectedListener mStatusItem = new OnItemSelectedListener () { + @Override + public void onNothingSelected(AdapterView arg0) { + } + + @Override + public void onItemSelected(AdapterView sp, View v, int i, + long arg3) { + mSelectedStatus = (String) sp.getSelectedItem(); + } + }; + private OnClickListener mOnClickOk = new OnClickListener() { public void onClick(View v) { - CharSequence text = mTextStatus.getText(); - String status = mAdapter.getItem(0); - Log.i("Selected item --->", status); + if (textHasChanged() || statusHasChanged()) { + Editor edit = mSettings.edit(); + edit.putString(getString(R.string.PreferenceStatusText), + mStatusText.getText().toString()); + edit.putInt(getString(R.string.PreferenceStatus), + getStatusId(mSelectedStatus)); + Log.i("Selected item --->", mSelectedStatus); + edit.commit(); + mToast = Toast.makeText(mContext, R.string.ChangeStatusOk, + Toast.LENGTH_LONG); + mToast.show(); + } + else { + mToast = Toast.makeText(mContext, R.string.ChangeStatusNoChange, + Toast.LENGTH_LONG); + mToast.show(); + } } }; private OnClickListener mOnClickClear = new OnClickListener() { public void onClick(View v) { - mTextStatus.setText(null); - }; + mStatusText.setText(null); + } }; + + private boolean textHasChanged() { + return (!mStatusText.getText().toString().equals( + getPreferenceString(R.string.PreferenceStatusText))); + } + + private boolean statusHasChanged() { + return (mSettings.getInt(getString(R.string.PreferenceStatus), + Status.CONTACT_STATUS_AVAILABLE) != getStatusId(mSelectedStatus)); + } + + private void showSettings() { + mStatusText.setText(getPreferenceString(R.string.PreferenceStatusText)); + mSpin.setSelection(getPreferenceStatusId()); + } + + private String getPreferenceString(int id) { + return mSettings.getString(getString(id), ""); + } + + private int getStatusId(String status) { + if (status.equals(mStatus[0])) + return Status.CONTACT_STATUS_AVAILABLE; // 500 + if (status.equals(mStatus[1])) + return Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT; // 600 + if (status.equals(mStatus[2])) + return Status.CONTACT_STATUS_BUSY; // 400 + if (status.equals(mStatus[3])) + return Status.CONTACT_STATUS_AWAY; // 300 + if (status.equals(mStatus[4])) + return Status.CONTACT_STATUS_UNAVAILABLE; // 200 + if (status.equals(mStatus[5])) + return Status.CONTACT_STATUS_DISCONNECT; // 100 + return Status.CONTACT_STATUS_AVAILABLE; + } + + private int getPreferenceStatusId() { + switch (mSettings.getInt(getString(R.string.PreferenceStatus), + Status.CONTACT_STATUS_AVAILABLE)) { + case Status.CONTACT_STATUS_DISCONNECT: + return 5; + case Status.CONTACT_STATUS_UNAVAILABLE: + return 4; + case Status.CONTACT_STATUS_AWAY: + return 3; + case Status.CONTACT_STATUS_BUSY: + return 2; + case Status.CONTACT_STATUS_AVAILABLE: + return 0; + case Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT: + return 1; + default: + return 0; + } + } } diff -r 59c052ee1c90 -r dded6cd76f8c src/com/beem/project/beem/ui/ContactListSettings.java --- a/src/com/beem/project/beem/ui/ContactListSettings.java Wed Apr 22 11:48:49 2009 +0200 +++ b/src/com/beem/project/beem/ui/ContactListSettings.java Wed Apr 22 15:19:42 2009 +0200 @@ -84,7 +84,7 @@ private OnClickListener mOkListener = new OnClickListener() { public void onClick(View v) { SharedPreferences.Editor editor = mSettings.edit(); - + if (isChanged(R.id.host, R.string.PreferenceHostKey)) { editor.putString(getString(R.string.PreferenceHostKey), getWidgetText(R.id.host)); mIsChanged = true;