--- a/src/com/beem/project/beem/ui/SendIM.java Wed Nov 11 17:58:26 2009 +0100
+++ b/src/com/beem/project/beem/ui/SendIM.java Wed Nov 11 19:21:44 2009 +0100
@@ -45,495 +45,505 @@
import com.beem.project.beem.utils.Status;
/**
- * This activity class provides the view for instant messaging after selecting a correspondant.
+ * This activity class provides the view for instant messaging after selecting a
+ * correspondant.
+ *
* @author barbu
*/
public class SendIM extends Activity implements OnClickListener, OnKeyListener {
- private static final String TAG = "SEND_IM";
- private static final Intent SERVICE_INTENT = new Intent();
- static {
- SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
- }
-
- private IRoster mRoster;
- private EditText mToSend;
- private SendIMDialogSmiley mSmyDialog;
- private SharedPreferences mSet;
- private Handler mHandler;
- private Contact mContact;
- private ImageView mStatusIcon;
- private IChatManager mChatManager;
- private IChatManagerListener mChatManagerListener;
- private IMessageListener mMessageListener;
- private IChat mChat;
- private TextView mText;
- private TextView mLogin;
- private ScrollView mScrolling;
- private char mSpeak;
-
- private final ServiceConnection mServConn = new BeemServiceConnection();
- private IXmppFacade mXmppFacade;
- private TextView mStatusText;
- private BeemBroadcastReceiver mReceiver;
-
- /**
- * Constructor.
- */
- public SendIM() {
- super();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void onClick(View view) {
- sendText();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void onCreate(Bundle saveBundle) {
- super.onCreate(saveBundle);
- // setTheme(R.style.OldTheme);
- setContentView(R.layout.sendim);
- mHandler = new Handler();
- mChatManagerListener = new OnChatListener();
- mMessageListener = new OnMessageListener();
- mToSend = (EditText) findViewById(R.id.userText);
- mSet = getSharedPreferences("lol", MODE_PRIVATE);
- mSmyDialog = new SendIMDialogSmiley(this, mSet);
- mToSend.setOnClickListener(this);
- mToSend.setOnKeyListener(this);
- mStatusIcon = (ImageView) findViewById(R.id.sendimstatus);
- mLogin = (TextView) findViewById(R.id.sendimlogin);
- mContact = new Contact(getIntent().getData());
- mText = (TextView) findViewById(R.id.sendimlist);
- mScrolling = (ScrollView) findViewById(R.id.sendimscroll);
- mStatusText = (TextView) findViewById(R.id.sendimstatusmsg);
- mReceiver = new BeemBroadcastReceiver(mServConn);
- this.registerReceiver(mReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public final boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.sendimmenu, menu);
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void onDestroy() {
- super.onDestroy();
- this.unregisterReceiver(mReceiver);
- if (mChatManager != null) {
- try {
- mChatManager.removeChatCreationListener(mChatManagerListener);
- // TODO trouver quand detruire le chat
- // mChatManager.destroyChat(mChat);
- } catch (RemoteException e) {
- Log.e(TAG, "mchat manager and SendIM destroy", e);
- }
+ private static final String TAG = "SEND_IM";
+ private static final Intent SERVICE_INTENT = new Intent();
+ static {
+ SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
}
- }
- /**
- * Update the status icon of our contact.
- */
- protected void updateStatusIcon() {
- Drawable statusIcon = null;
- switch (mContact.getStatus()) {
- case Status.CONTACT_STATUS_AVAILABLE:
- statusIcon = getResources().getDrawable(R.drawable.status_available);
- break;
- case Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
- statusIcon = getResources().getDrawable(R.drawable.status_available);
- break;
- case Status.CONTACT_STATUS_AWAY:
- statusIcon = getResources().getDrawable(R.drawable.status_away);
- break;
- case Status.CONTACT_STATUS_BUSY:
- statusIcon = getResources().getDrawable(R.drawable.status_dnd);
- break;
- case Status.CONTACT_STATUS_DISCONNECT:
- statusIcon = getResources().getDrawable(R.drawable.status_offline);
- break;
- case Status.CONTACT_STATUS_UNAVAILABLE:
- statusIcon = getResources().getDrawable(R.drawable.status_requested);
- break;
- default:
- statusIcon = getResources().getDrawable(R.drawable.status_error);
- break;
- }
- Log.d("SENDIM -- UPDATE STATUS ICON", "Contact current status: " + mContact.getStatus() + "");
- mStatusIcon.setImageDrawable(statusIcon);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (event.getAction() == KeyEvent.ACTION_DOWN) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_DPAD_CENTER:
- case KeyEvent.KEYCODE_ENTER:
- sendText();
- return true;
- default:
- return false;
- }
- }
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- mContact = new Contact(intent.getData());
- try {
- if (mRoster != null)
- mContact = mRoster.getContact(mContact.getJID());
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
+ private IRoster mRoster;
+ private EditText mToSend;
+ private SendIMDialogSmiley mSmyDialog;
+ private SharedPreferences mSet;
+ private Handler mHandler;
+ private Contact mContact;
+ private ImageView mStatusIcon;
+ private IChatManager mChatManager;
+ private IChatManagerListener mChatManagerListener;
+ private IMessageListener mMessageListener;
+ private IChat mChat;
+ private TextView mText;
+ private TextView mLogin;
+ private ScrollView mScrolling;
+ private char mSpeak;
- /**
- * {@inheritDoc}
- */
- @Override
- public final boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.sendim_smiley:
- mSmyDialog.show();
- return true;
- case R.id.sendim_call:
- // TODO start the jingle call
- // Bug a besoin du jid complet (resource compris)
- try {
- mXmppFacade.call(mContact.getJID());
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- default:
- return false;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void onStop() {
- super.onStop();
- try {
- if (mChat != null)
- mChat.setOpen(false);
- } catch (RemoteException e) {
- Log.d(TAG, "Error while closing chat", e);
- }
- if (mReceiver.isBinded()) {
- unbindService(mServConn);
- mReceiver.setBinded(false);
- }
- mRoster = null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void onStart() {
- super.onStart();
- bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
- mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
- try {
- if (mRoster != null)
- mContact = mRoster.getContact(mContact.getJID());
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- /**
- * The service connection used to connect with the BeemService.
- */
- private final class BeemServiceConnection implements ServiceConnection {
- private final BeemRosterListener mBeemRosterListener = new BeemRosterListener();
+ private final ServiceConnection mServConn = new BeemServiceConnection();
+ private IXmppFacade mXmppFacade;
+ private TextView mStatusText;
+ private BeemBroadcastReceiver mReceiver;
/**
* Constructor.
*/
- public BeemServiceConnection() {
+ public SendIM() {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onClick(View view) {
+ sendText();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- mXmppFacade = IXmppFacade.Stub.asInterface(service);
- mReceiver.setBinded(true);
- try {
- if (mChatManager == null) {
- mChatManager = mXmppFacade.getChatManager();
- mChatManager.addChatCreationListener(mChatManagerListener);
+ protected void onCreate(Bundle saveBundle) {
+ super.onCreate(saveBundle);
+ // setTheme(R.style.OldTheme);
+ setContentView(R.layout.sendim);
+ mHandler = new Handler();
+ mChatManagerListener = new OnChatListener();
+ mMessageListener = new OnMessageListener();
+ mToSend = (EditText) findViewById(R.id.userText);
+ mSet = getSharedPreferences("lol", MODE_PRIVATE);
+ mSmyDialog = new SendIMDialogSmiley(this, mSet);
+ mToSend.setOnClickListener(this);
+ mToSend.setOnKeyListener(this);
+ mStatusIcon = (ImageView) findViewById(R.id.sendimstatus);
+ mLogin = (TextView) findViewById(R.id.sendimlogin);
+ mContact = new Contact(getIntent().getData());
+ mText = (TextView) findViewById(R.id.sendimlist);
+ mScrolling = (ScrollView) findViewById(R.id.sendimscroll);
+ mStatusText = (TextView) findViewById(R.id.sendimstatusmsg);
+ mReceiver = new BeemBroadcastReceiver(mServConn);
+ this.registerReceiver(mReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public final boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.sendimmenu, menu);
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ this.unregisterReceiver(mReceiver);
+ if (mChatManager != null) {
+ try {
+ mChatManager.removeChatCreationListener(mChatManagerListener);
+ // TODO trouver quand detruire le chat
+ // mChatManager.destroyChat(mChat);
+ } catch (RemoteException e) {
+ Log.e(TAG, "mchat manager and SendIM destroy", e);
+ }
}
- mRoster = mXmppFacade.getRoster();
- if (mRoster != null) {
- mRoster.addRosterListener(mBeemRosterListener);
- // mContact.setStatus(mRoster.getPresence(mContact.getJID()));
- if (mRoster.getContact(mContact.getJID()) != null) {
- mContact = mRoster.getContact(mContact.getJID());
- mStatusText.setText(mContact.getMsgState());
- mLogin.setText(mContact.getName());
- }
- updateStatusIcon();
- }
- switchChat(mContact);
- } catch (RemoteException e) {
- Log.e(TAG, "Error during chat manager creation", e);
- }
}
- @Override
- public void onServiceDisconnected(ComponentName name) {
- mReceiver.setBinded(false);
- mXmppFacade = null;
- try {
- mRoster.removeRosterListener(mBeemRosterListener);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- mRoster = null;
+ /**
+ * Update the status icon of our contact.
+ */
+ protected void updateStatusIcon() {
+ Drawable statusIcon = null;
+ switch (mContact.getStatus()) {
+ case Status.CONTACT_STATUS_AVAILABLE:
+ statusIcon = getResources().getDrawable(R.drawable.status_available);
+ break;
+ case Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
+ statusIcon = getResources().getDrawable(R.drawable.status_available);
+ break;
+ case Status.CONTACT_STATUS_AWAY:
+ statusIcon = getResources().getDrawable(R.drawable.status_away);
+ break;
+ case Status.CONTACT_STATUS_BUSY:
+ statusIcon = getResources().getDrawable(R.drawable.status_dnd);
+ break;
+ case Status.CONTACT_STATUS_DISCONNECT:
+ statusIcon = getResources().getDrawable(R.drawable.status_offline);
+ break;
+ case Status.CONTACT_STATUS_UNAVAILABLE:
+ statusIcon = getResources().getDrawable(R.drawable.status_requested);
+ break;
+ default:
+ statusIcon = getResources().getDrawable(R.drawable.status_error);
+ break;
+ }
+ Log.d("SENDIM -- UPDATE STATUS ICON", "Contact current status: " + mContact.getStatus() + "");
+ mStatusIcon.setImageDrawable(statusIcon);
}
- }
-
- /**
- * Send a message to the contact over the XMPP connection. Also display it on activity view. TODO : Gerer
- * l'exception si la connexion se coupe pendant la conversation
- */
- private void sendText() {
- String text = mToSend.getText().toString();
- if (!"".equals(text)) {
- Message msg = new Message(mContact.getJID(), Message.MSG_TYPE_CHAT);
- msg.setBody(text);
- try {
- mChat.sendMessage(msg);
- if (mSpeak != 1)
- mText.append(getString(R.string.SendIMYouSay, text));
- else
- mText.append(getString(R.string.SendIMSameSpeaker, text));
- mToSend.setText(null);
- mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
- mToSend.requestFocus();
- mSpeak = 1;
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
- }
- /**
- * Show the message history.
- * @param messages list of message to display
- */
- private void showMessageList(List<Message> messages) {
- mText.setText("");
- mSpeak = 0;
- for (Message message : messages) {
- String from = message.getFrom();
- if (from == null) {
- if (mSpeak != 1)
- mText.append(getString(R.string.SendIMYouSay, message.getBody()));
- else
- mText.append(getString(R.string.SendIMYouSay, message.getBody()));
- mSpeak = 1;
- } else {
- if (mSpeak != 2)
- mText.append(getString(R.string.SendIMSays, mContact.getName(), message.getBody()));
- else
- mText.append(getString(R.string.SendIMSameSpeaker, message.getBody()));
- mSpeak = 2;
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_DPAD_CENTER:
+ case KeyEvent.KEYCODE_ENTER:
+ sendText();
+ return true;
+ default:
+ return false;
+ }
+ }
+ return false;
}
- mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
- }
-
- /**
- * Change the correspondant of the chat.
- * @param newContact New contact to chat with
- * @throws RemoteException if an errors occurs in the connection with the service
- */
- private void switchChat(Contact newContact) throws RemoteException {
- if (mChat != null)
- mChat.setOpen(false);
- mChat = mChatManager.createChat(newContact, mMessageListener);
- showMessageList(mChat.getMessages());
- mChat.setOpen(true);
- mChatManager.deleteChatNotification(mChat);
- mContact = newContact;
- mToSend.requestFocus();
- }
-
- /**
- * Listener for chat creation. (maybe not necessary).
- * @author darisk
- */
- private class OnChatListener extends IChatManagerListener.Stub {
/**
- * Constructor.
+ * {@inheritDoc}
+ */
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ mContact = new Contact(intent.getData());
+ try {
+ if (mRoster != null)
+ mContact = mRoster.getContact(mContact.getJID());
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
*/
- public OnChatListener() {
+ @Override
+ public final boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.sendim_smiley:
+ mSmyDialog.show();
+ return true;
+ case R.id.sendim_call:
+ // TODO start the jingle call
+ // Bug a besoin du jid complet (resource compris)
+ try {
+ mXmppFacade.call(mContact.getJID());
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void onStop() {
+ super.onStop();
+ try {
+ if (mChat != null)
+ mChat.setOpen(false);
+ } catch (RemoteException e) {
+ Log.d(TAG, "Error while closing chat", e);
+ }
+ if (mReceiver.isBinded()) {
+ unbindService(mServConn);
+ mReceiver.setBinded(false);
+ }
+ mRoster = null;
}
/**
* {@inheritDoc}
*/
@Override
- public void chatCreated(IChat chat, boolean locally) throws RemoteException {
- Log.i("LOG", "chatCreated");
+ protected void onStart() {
+ super.onStart();
+ bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
+ mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
+ try {
+ if (mRoster != null)
+ mContact = mRoster.getContact(mContact.getJID());
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
- }
+ /**
+ * The service connection used to connect with the BeemService.
+ */
+ private final class BeemServiceConnection implements ServiceConnection {
+ private final BeemRosterListener mBeemRosterListener = new BeemRosterListener();
- /**
- * Listener use to change the status displayed.
- */
- private class BeemRosterListener extends IBeemRosterListener.Stub {
+ /**
+ * Constructor.
+ */
+ public BeemServiceConnection() {
+ }
- /**
- * Constructor.
- */
- public BeemRosterListener() {
- }
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ mXmppFacade = IXmppFacade.Stub.asInterface(service);
+ mReceiver.setBinded(true);
+ try {
+ if (mChatManager == null) {
+ mChatManager = mXmppFacade.getChatManager();
+ mChatManager.addChatCreationListener(mChatManagerListener);
+ }
+ mRoster = mXmppFacade.getRoster();
+ if (mRoster != null) {
+ mRoster.addRosterListener(mBeemRosterListener);
+ // mContact.setStatus(mRoster.getPresence(mContact.getJID()));
+ if (mRoster.getContact(mContact.getJID()) != null) {
+ mContact = mRoster.getContact(mContact.getJID());
+ mStatusText.setText(mContact.getMsgState());
+ mLogin.setText(mContact.getName());
+ }
+ updateStatusIcon();
+ }
+ switchChat(mContact);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error during chat manager creation", e);
+ }
+ }
- @Override
- public void onEntriesAdded(List<String> addresses) throws RemoteException {
- // TODO Auto-generated method stub
-
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ mReceiver.setBinded(false);
+ mXmppFacade = null;
+ try {
+ mRoster.removeRosterListener(mBeemRosterListener);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ mRoster = null;
+ }
}
- @Override
- public void onEntriesDeleted(List<String> addresses) throws RemoteException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onEntriesUpdated(List<String> addresses) throws RemoteException {
- // TODO Auto-generated method stub
-
+ /**
+ * Send a message to the contact over the XMPP connection. Also display it
+ * on activity view. TODO : Gerer l'exception si la connexion se coupe
+ * pendant la conversation
+ */
+ private void sendText() {
+ String text = mToSend.getText().toString();
+ if (!"".equals(text)) {
+ Message msg = new Message(mContact.getJID(), Message.MSG_TYPE_CHAT);
+ msg.setBody(text);
+ try {
+ mChat.sendMessage(msg);
+ if (mSpeak != 1)
+ mText.append(getString(R.string.SendIMYouSay, text));
+ else
+ mText.append(getString(R.string.SendIMSameSpeaker, text));
+ mToSend.setText(null);
+ mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
+ mToSend.requestFocus();
+ mSpeak = 1;
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
}
- @Override
- public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException {
- // TODO Auto-generated method stub
-
+ /**
+ * Show the message history.
+ *
+ * @param messages
+ * list of message to display
+ */
+ private void showMessageList(List<Message> messages) {
+ mText.setText("");
+ mSpeak = 0;
+ for (Message message : messages) {
+ String from = message.getFrom();
+ if (from == null) {
+ if (mSpeak != 1)
+ mText.append(getString(R.string.SendIMYouSay, message.getBody()));
+ else
+ mText.append(getString(R.string.SendIMYouSay, message.getBody()));
+ mSpeak = 1;
+ } else {
+ if (mSpeak != 2)
+ mText.append(getString(R.string.SendIMSays, mContact.getName(), message.getBody()));
+ else
+ mText.append(getString(R.string.SendIMSameSpeaker, message.getBody()));
+ mSpeak = 2;
+ }
+ }
+ mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
}
- @Override
- public void onPresenceChanged(PresenceAdapter presence) throws RemoteException {
- if (mContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) {
- mContact.setStatus(mRoster.getPresence(StringUtils.parseBareAddress(presence.getFrom())));
- Log.d("SENDIM -- onPresenceChanged", "Contact current status: " + mContact.getStatus() + "");
- mHandler.post(new RunnableChange());
- }
+ /**
+ * Change the correspondant of the chat.
+ *
+ * @param newContact
+ * New contact to chat with
+ * @throws RemoteException
+ * if an errors occurs in the connection with the service
+ */
+ private void switchChat(Contact newContact) throws RemoteException {
+ if (mChat != null)
+ mChat.setOpen(false);
+ mChat = mChatManager.createChat(newContact, mMessageListener);
+ showMessageList(mChat.getMessages());
+ mChat.setOpen(true);
+ mChatManager.deleteChatNotification(mChat);
+ mContact = newContact;
+ mToSend.requestFocus();
}
/**
- * Runnable to change the status displayed.
+ * Listener for chat creation. (maybe not necessary).
+ *
+ * @author darisk
*/
- private class RunnableChange implements Runnable {
-
- /**
- * Constructor.
- */
- public RunnableChange() {
- }
+ private class OnChatListener extends IChatManagerListener.Stub {
- @Override
- public void run() {
- updateStatusIcon();
- mStatusText.setText(mContact.getMsgState());
- Linkify.addLinks(mStatusText, Linkify.WEB_URLS);
- }
- }
- }
+ /**
+ * Constructor.
+ */
+ public OnChatListener() {
+ }
- /**
- * Listener for new chat messages.
- * @author darisk
- */
- private class OnMessageListener extends IMessageListener.Stub {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void chatCreated(IChat chat, boolean locally) throws RemoteException {
+ Log.i("LOG", "chatCreated");
+ }
- /**
- * Constructor.
- */
- public OnMessageListener() {
}
/**
- * {@inheritDoc}
+ * Listener use to change the status displayed.
*/
- @Override
- public void processMessage(IChat chat, Message msg) throws RemoteException {
+ private class BeemRosterListener extends IBeemRosterListener.Stub {
+
+ /**
+ * Constructor.
+ */
+ public BeemRosterListener() {
+ }
+
+ @Override
+ public void onEntriesAdded(List<String> addresses) throws RemoteException {
+ // TODO Auto-generated method stub
- if (chat != mChat)
- return;
- final Message m = msg;
- Log.d("Message Type", "Le type du message : " + m.getType());
- mHandler.post(new Runnable() {
+ }
+
+ @Override
+ public void onEntriesDeleted(List<String> addresses) throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onEntriesUpdated(List<String> addresses) throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
@Override
- public void run() {
- if (m.getBody() != null) {
- if (m.getType() == Message.MSG_TYPE_ERROR) {
- mText.append(getString(R.string.SendIMErrorMsg, m.getBody()));
- mSpeak = 0;
- } else if (mSpeak == 2)
- mText.append(getString(R.string.SendIMSameSpeaker, m.getBody()));
- else
- mText.append(getString(R.string.SendIMSays, mContact.getName(), m.getBody()));
- mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
- mToSend.requestFocus();
- mSpeak = 2;
- }
+ public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onPresenceChanged(PresenceAdapter presence) throws RemoteException {
+ if (mContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) {
+ mContact.setStatus(mRoster.getPresence(StringUtils.parseBareAddress(presence.getFrom())));
+ Log.d("SENDIM -- onPresenceChanged", "Contact current status: " + mContact.getStatus() + "");
+ mHandler.post(new RunnableChange());
+ }
}
- });
+
+ /**
+ * Runnable to change the status displayed.
+ */
+ private class RunnableChange implements Runnable {
+
+ /**
+ * Constructor.
+ */
+ public RunnableChange() {
+ }
+
+ @Override
+ public void run() {
+ updateStatusIcon();
+ mStatusText.setText(mContact.getMsgState());
+ Linkify.addLinks(mStatusText, Linkify.WEB_URLS);
+ }
+ }
}
/**
- * {@inheritDoc}
+ * Listener for new chat messages.
+ *
+ * @author darisk
*/
- @Override
- public void stateChanged(IChat chat) throws RemoteException {
- if (chat != mChat)
- return;
- Log.d("ChatState", "Action du correspondant : <--- " + chat.getState() + " --->");
- mHandler.post(new Runnable() {
+ private class OnMessageListener extends IMessageListener.Stub {
+
+ /**
+ * Constructor.
+ */
+ public OnMessageListener() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void processMessage(IChat chat, Message msg) throws RemoteException {
+
+ if (chat != mChat)
+ return;
+ final Message m = msg;
+ Log.d("Message Type", "Le type du message : " + m.getType());
+ mHandler.post(new Runnable() {
- @Override
- public void run() {
+ @Override
+ public void run() {
+ if (m.getBody() != null) {
+ if (m.getType() == Message.MSG_TYPE_ERROR) {
+ mText.append(getString(R.string.SendIMErrorMsg, m.getBody()));
+ mSpeak = 0;
+ } else if (mSpeak == 2)
+ mText.append(getString(R.string.SendIMSameSpeaker, m.getBody()));
+ else
+ mText.append(getString(R.string.SendIMSays, mContact.getName(), m.getBody()));
+ mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
+ mToSend.requestFocus();
+ mSpeak = 2;
+ }
+ }
+ });
}
- });
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void stateChanged(IChat chat) throws RemoteException {
+ if (chat != mChat)
+ return;
+ Log.d("ChatState", "Action du correspondant : <--- " + chat.getState() + " --->");
+ mHandler.post(new Runnable() {
+
+ @Override
+ public void run() {
+ }
+ });
+ }
}
- }
}