328 if (mChat != null) { |
328 if (mChat != null) { |
329 mChat.setOpen(false); |
329 mChat.setOpen(false); |
330 mChat.removeMessageListener(mMessageListener); |
330 mChat.removeMessageListener(mMessageListener); |
331 } |
331 } |
332 mChat = mChatManager.getChat(contact); |
332 mChat = mChatManager.getChat(contact); |
333 if (mChat != null){ |
333 if (mChat != null) { |
334 mChat.setOpen(true); |
334 mChat.setOpen(true); |
335 mChat.addMessageListener(mMessageListener); |
335 mChat.addMessageListener(mMessageListener); |
336 mChatManager.deleteChatNotification(mChat); |
336 mChatManager.deleteChatNotification(mChat); |
337 } |
337 } |
338 mContact = mRoster.getContact(contact.getJID()); |
338 mContact = mRoster.getContact(contact.getJID()); |
339 if (mContact == null) |
339 if (mContact == null) |
340 mContact = contact; |
340 mContact = contact; |
341 updateContactInformations(); |
341 updateContactInformations(); |
380 name = localName; |
380 name = localName; |
381 fromBareJid = ""; |
381 fromBareJid = ""; |
382 } |
382 } |
383 |
383 |
384 if (m.getBody() != null) { |
384 if (m.getBody() != null) { |
385 if (lastMessage == null || ! fromBareJid.equals(lastMessage.getBareJid())) { |
385 if (lastMessage == null || !fromBareJid.equals(lastMessage.getBareJid())) { |
386 lastMessage = new MessageText(fromBareJid, name, m.getBody()); |
386 lastMessage = new MessageText(fromBareJid, name, m.getBody()); |
387 result.add(lastMessage); |
387 result.add(lastMessage); |
388 } else { |
388 } else { |
389 lastMessage.setMessage(lastMessage.getMessage().concat("\n" + m.getBody())); |
389 lastMessage.setMessage(lastMessage.getMessage().concat("\n" + m.getBody())); |
390 } |
390 } |
512 @Override |
512 @Override |
513 public void run() { |
513 public void run() { |
514 if (msg.getType() == Message.MSG_TYPE_ERROR) { |
514 if (msg.getType() == Message.MSG_TYPE_ERROR) { |
515 mListMessages.add(new MessageText(fromBareJid, mContact.getName(), msg.getBody(), true)); |
515 mListMessages.add(new MessageText(fromBareJid, mContact.getName(), msg.getBody(), true)); |
516 mMessagesListAdapter.notifyDataSetChanged(); |
516 mMessagesListAdapter.notifyDataSetChanged(); |
517 } else if (msg.getBody() != null ) { |
517 } else if (msg.getBody() != null) { |
518 MessageText lastMessage = mListMessages.size() != 0 ? mListMessages.get(mListMessages |
518 MessageText lastMessage = mListMessages.size() != 0 ? mListMessages.get(mListMessages |
519 .size() - 1) : null; |
519 .size() - 1) : null; |
520 |
520 |
521 if (lastMessage != null && lastMessage.getBareJid().equals(fromBareJid)) { |
521 if (lastMessage != null && lastMessage.getBareJid().equals(fromBareJid)) { |
522 lastMessage.setMessage(lastMessage.getMessage().concat("\n" + msg.getBody())); |
522 lastMessage.setMessage(lastMessage.getMessage().concat("\n" + msg.getBody())); |
806 |
809 |
807 @Override |
810 @Override |
808 public void chatCreated(IChat chat, boolean locally) { |
811 public void chatCreated(IChat chat, boolean locally) { |
809 if (locally) |
812 if (locally) |
810 return; |
813 return; |
811 Log.d(TAG, "Chat created not locally" ); |
|
812 try { |
814 try { |
813 String contactJid = StringUtils.parseBareAddress(mContact.getJID()); |
815 String contactJid = StringUtils.parseBareAddress(mContact.getJID()); |
814 String chatJid = StringUtils.parseBareAddress(chat.getParticipant().getJID()); |
816 String chatJid = StringUtils.parseBareAddress(chat.getParticipant().getJID()); |
815 if (chatJid.equals(contactJid)){ |
817 if (chatJid.equals(contactJid)) { |
816 Log.d(TAG, "Switching chat contact was the same"); |
|
817 // This should not be happened but to be sure |
818 // This should not be happened but to be sure |
818 if (mChat != null) { |
819 if (mChat != null) { |
819 mChat.setOpen(false); |
820 mChat.setOpen(false); |
820 mChat.removeMessageListener(mMessageListener); |
821 mChat.removeMessageListener(mMessageListener); |
821 } |
822 } |
822 mChat = chat; |
823 mChat = chat; |
823 mChat.setOpen(true); |
824 mChat.setOpen(true); |
824 mChat.addMessageListener(mMessageListener); |
825 mChat.addMessageListener(mMessageListener); |
825 mChatManager.deleteChatNotification(mChat); |
826 mChatManager.deleteChatNotification(mChat); |
826 } |
827 } |
827 } catch (RemoteException ex) { |
828 } catch (RemoteException ex) { |
828 Log.d(TAG, "A remote exception occurs during the creation of a chat", ex); |
829 Log.e(TAG, "A remote exception occurs during the creation of a chat", ex); |
829 } |
830 } |
830 } |
831 } |
831 } |
832 } |
832 } |
833 } |