src/com/beem/project/beem/ui/Chat.java
changeset 677 b8d5e0378bcb
parent 675 764eded78962
child 691 c775b32927ed
equal deleted inserted replaced
676:ed7f90128426 677:b8d5e0378bcb
   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()));
   794 	    mMessagesListAdapter.notifyDataSetChanged();
   794 	    mMessagesListAdapter.notifyDataSetChanged();
   795 	    mInputField.setText(null);
   795 	    mInputField.setText(null);
   796 	}
   796 	}
   797     }
   797     }
   798 
   798 
       
   799     /**
       
   800      * This class is in charge of getting the new chat in the activity if someone talk to you.
       
   801      */
   799     private class ChatManagerListener extends IChatManagerListener.Stub {
   802     private class ChatManagerListener extends IChatManagerListener.Stub {
   800 
   803 
   801 	/**
   804 	/**
   802 	 * Constructor.
   805 	 * Constructor.
   803 	 */
   806 	 */
   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 }