# HG changeset patch # User Da Risk # Date 1261431894 -3600 # Node ID 1a929f74b5e02a3625761246d5838aa2ebfb98c3 # Parent ba5ce70f1024611a35c602a7b9ad3b76456ff7e0 Fix little bug with chat notification diff -r ba5ce70f1024 -r 1a929f74b5e0 default.properties --- a/default.properties Mon Dec 21 21:04:06 2009 +0100 +++ b/default.properties Mon Dec 21 22:44:54 2009 +0100 @@ -10,5 +10,5 @@ # Indicates whether an apk should be generated for each density. split.density=false # Project target. -target=android-3 +target=android-5 apk-configurations= diff -r ba5ce70f1024 -r 1a929f74b5e0 res/layout/contactlist.xml --- a/res/layout/contactlist.xml Mon Dec 21 21:04:06 2009 +0100 +++ b/res/layout/contactlist.xml Mon Dec 21 22:44:54 2009 +0100 @@ -11,8 +11,10 @@ - + + diff -r ba5ce70f1024 -r 1a929f74b5e0 src/com/beem/project/beem/service/BeemChatManager.java --- a/src/com/beem/project/beem/service/BeemChatManager.java Mon Dec 21 21:04:06 2009 +0100 +++ b/src/com/beem/project/beem/service/BeemChatManager.java Mon Dec 21 22:44:54 2009 +0100 @@ -141,7 +141,7 @@ notification.flags = Notification.FLAG_AUTO_CANCEL; notification.setLatestEventInfo(mService, tickerText, mService .getString(R.string.BeemChatManagerNewMessage), makeChatIntent(chat)); - mService.sendNotification(chat.hashCode(), notification); + mService.sendNotification(chat.getParticipant().getJID().hashCode(), notification); } catch (RemoteException e) { Log.e(TAG, e.getMessage()); } @@ -154,6 +154,8 @@ public void processMessage(IChat chat, Message message) { try { if (!chat.isOpen() && message.getBody() != null) { + if (chat instanceof ChatAdapter) + mChats.put(chat.getParticipant().getJID(), (ChatAdapter) chat); notifyNewChat(chat); } } catch (RemoteException e) { @@ -214,6 +216,7 @@ public IChat createChat(String jid, IMessageListener listener) { String key = StringUtils.parseBareAddress(jid); ChatAdapter result; + Log.d(TAG, "Get chat key = "+key); if (mChats.containsKey(key)) { result = mChats.get(key); result.addMessageListener(listener); @@ -231,6 +234,9 @@ */ @Override public void destroyChat(IChat chat) throws RemoteException { + // Can't remove it. otherwise we will lose all futur message in this chat + // chat.removeMessageListener(mChatListener); + deleteChatNotification(chat); mChats.remove(chat.getParticipant().getJID()); } @@ -239,7 +245,11 @@ */ @Override public void deleteChatNotification(IChat chat) { - mService.deleteNotification(chat.hashCode()); + try { + mService.deleteNotification(chat.getParticipant().getJID().hashCode()); + } catch (RemoteException e) { + Log.v(TAG, "Remote exception ", e); + } } /** diff -r ba5ce70f1024 -r 1a929f74b5e0 src/com/beem/project/beem/ui/Chat.java --- a/src/com/beem/project/beem/ui/Chat.java Mon Dec 21 21:04:06 2009 +0100 +++ b/src/com/beem/project/beem/ui/Chat.java Mon Dec 21 22:44:54 2009 +0100 @@ -363,6 +363,7 @@ String fromName = null; List chatMessages = mChat.getMessages(); mListMessages.clear(); + mMessagesListAdapter.notifyDataSetChanged(); MessageText lastMessage = null; for (Message m : chatMessages) {