src/com/beem/project/beem/ui/Chat.java
changeset 924 0de5ddd06ecd
parent 921 ab30d289a86c
parent 886 64f37098247c
child 925 5441ea00c4f1
equal deleted inserted replaced
923:c2eb19cd7032 924:0de5ddd06ecd
    73 import android.os.IBinder;
    73 import android.os.IBinder;
    74 import android.os.RemoteException;
    74 import android.os.RemoteException;
    75 import android.preference.PreferenceManager;
    75 import android.preference.PreferenceManager;
    76 import android.text.util.Linkify;
    76 import android.text.util.Linkify;
    77 import android.util.Log;
    77 import android.util.Log;
       
    78 import android.view.inputmethod.EditorInfo;
    78 import android.view.KeyEvent;
    79 import android.view.KeyEvent;
    79 import android.view.LayoutInflater;
    80 import android.view.LayoutInflater;
    80 import android.view.Menu;
    81 import android.view.Menu;
    81 import android.view.MenuInflater;
    82 import android.view.MenuInflater;
    82 import android.view.MenuItem;
    83 import android.view.MenuItem;
    83 import android.view.View;
    84 import android.view.View;
    84 import android.view.ViewGroup;
    85 import android.view.ViewGroup;
    85 import android.view.View.OnClickListener;
    86 import android.view.View.OnClickListener;
    86 import android.view.View.OnKeyListener;
       
    87 import android.widget.BaseAdapter;
    87 import android.widget.BaseAdapter;
    88 import android.widget.Button;
    88 import android.widget.Button;
    89 import android.widget.EditText;
    89 import android.widget.EditText;
    90 import android.widget.ImageView;
    90 import android.widget.ImageView;
    91 import android.widget.ListView;
    91 import android.widget.ListView;
    92 import android.widget.TextView;
    92 import android.widget.TextView;
    93 
    93 
    94 import com.beem.project.beem.R;
    94 import com.beem.project.beem.R;
       
    95 import com.beem.project.beem.BeemApplication;
    95 import com.beem.project.beem.providers.AvatarProvider;
    96 import com.beem.project.beem.providers.AvatarProvider;
    96 import com.beem.project.beem.service.Contact;
    97 import com.beem.project.beem.service.Contact;
    97 import com.beem.project.beem.service.Message;
    98 import com.beem.project.beem.service.Message;
    98 import com.beem.project.beem.service.PresenceAdapter;
    99 import com.beem.project.beem.service.PresenceAdapter;
    99 import com.beem.project.beem.service.aidl.IBeemRosterListener;
   100 import com.beem.project.beem.service.aidl.IBeemRosterListener;
   110 
   111 
   111 /**
   112 /**
   112  * This class represents an activity which allows the user to chat with his/her contacts.
   113  * This class represents an activity which allows the user to chat with his/her contacts.
   113  * @author Jean-Manuel Da Silva <dasilvj at beem-project dot com>
   114  * @author Jean-Manuel Da Silva <dasilvj at beem-project dot com>
   114  */
   115  */
   115 public class Chat extends Activity implements OnKeyListener {
   116 public class Chat extends Activity implements TextView.OnEditorActionListener {
   116 
   117 
   117     private static final String TAG = "Chat";
   118     private static final String TAG = "Chat";
   118     private static final Intent SERVICE_INTENT = new Intent();
   119     private static final Intent SERVICE_INTENT = new Intent();
   119     static {
   120     static {
   120 	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
   121 	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
   164     @Override
   165     @Override
   165     protected void onCreate(Bundle savedBundle) {
   166     protected void onCreate(Bundle savedBundle) {
   166 	super.onCreate(savedBundle);
   167 	super.onCreate(savedBundle);
   167 	this.registerReceiver(mBroadcastReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
   168 	this.registerReceiver(mBroadcastReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
   168 	SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
   169 	SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
   169 	mCompact = settings.getBoolean("settings_chat_compact_key", false);
   170 	mCompact = settings.getBoolean(BeemApplication.USE_COMPACT_CHAT_UI_KEY, false);
   170 	// UI
   171 	// UI
   171 	if (!mCompact) {
   172 	if (!mCompact) {
   172 	    setContentView(R.layout.chat);
   173 	    setContentView(R.layout.chat);
   173 	    mContactNameTextView = (TextView) findViewById(R.id.chat_contact_name);
   174 	    mContactNameTextView = (TextView) findViewById(R.id.chat_contact_name);
   174 	    mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg);
   175 	    mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg);
   181 	    setContentView(R.layout.chat_compact);
   182 	    setContentView(R.layout.chat_compact);
   182 	}
   183 	}
   183 	mMessagesListView = (ListView) findViewById(R.id.chat_messages);
   184 	mMessagesListView = (ListView) findViewById(R.id.chat_messages);
   184 	mMessagesListView.setAdapter(mMessagesListAdapter);
   185 	mMessagesListView.setAdapter(mMessagesListAdapter);
   185 	mInputField = (EditText) findViewById(R.id.chat_input);
   186 	mInputField = (EditText) findViewById(R.id.chat_input);
   186 	mInputField.setOnKeyListener(this);
   187 	mInputField.setOnEditorActionListener(this);
   187 	mInputField.requestFocus();
   188 	mInputField.requestFocus();
   188 	mSendButton = (Button) findViewById(R.id.chat_send_message);
   189 	mSendButton = (Button) findViewById(R.id.chat_send_message);
   189 	mSendButton.setOnClickListener(new OnClickListener() {
   190 	mSendButton.setOnClickListener(new OnClickListener() {
   190 	    @Override
   191 	    @Override
   191 	    public void onClick(View v) {
   192 	    public void onClick(View v) {
   874 	 * @param message A String containing the message.
   875 	 * @param message A String containing the message.
   875 	 * @param isError if the message is an error message.
   876 	 * @param isError if the message is an error message.
   876 	 * @param date the time of the message.
   877 	 * @param date the time of the message.
   877 	 */
   878 	 */
   878 	public MessageText(final String bareJid, final String name, final String message,
   879 	public MessageText(final String bareJid, final String name, final String message,
   879 	    final boolean isError, Date date) {
   880 	    final boolean isError, final Date date) {
   880 	    mBareJid = bareJid;
   881 	    mBareJid = bareJid;
   881 	    mName = name;
   882 	    mName = name;
   882 	    mMessage = message;
   883 	    mMessage = message;
   883 	    mIsError = isError;
   884 	    mIsError = isError;
   884 	    mTimestamp = date;
   885 	    mTimestamp = date;
   962 
   963 
   963     /**
   964     /**
   964      * {@inheritDoc}.
   965      * {@inheritDoc}.
   965      */
   966      */
   966     @Override
   967     @Override
   967     public boolean onKey(View v, int keyCode, KeyEvent event) {
   968     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
   968 	if (event.getAction() == KeyEvent.ACTION_DOWN) {
   969 	if (v == mInputField && actionId == EditorInfo.IME_ACTION_SEND) {
   969 	    switch (keyCode) {
   970 	    sendMessage();
   970 		case KeyEvent.KEYCODE_ENTER:
   971 	    return true;
   971 		    sendMessage();
       
   972 		    return true;
       
   973 		default:
       
   974 		    return false;
       
   975 	    }
       
   976 	}
   972 	}
   977 	return false;
   973 	return false;
   978     }
   974     }
   979 
   975 
   980     /**
   976     /**