Les conversations sont retenues dans les chats du service.
authorDa Risk <darisk972@gmail.com>
Fri, 22 May 2009 22:29:14 +0200
changeset 219 79ccbe331695
parent 218 5a7653411251
child 220 2b8bebb95bbd
Les conversations sont retenues dans les chats du service. On peut donc les réafficher dans l'activité SendIm. J'en ai profité pour rendre cette activité SingleTop ainsi une seule instance set utilisé. Il reste un probleme avec les notifications qui ne peuvent pas etre réutilisé. Si on a 2 notifications la 2e ne marchera pas.
AndroidManifest.xml
res/values/strings.xml
src/com/beem/project/beem/service/BeemChatManager.java
src/com/beem/project/beem/service/ChatAdapter.java
src/com/beem/project/beem/service/Message.java
src/com/beem/project/beem/service/aidl/IChat.aidl
src/com/beem/project/beem/ui/SendIM.java
--- a/AndroidManifest.xml	Tue May 19 22:45:03 2009 +0200
+++ b/AndroidManifest.xml	Fri May 22 22:29:14 2009 +0200
@@ -13,7 +13,7 @@
 		</activity>
 		<activity android:name=".ui.ContactListSettings"
 			android:label="@string/app_name" />
-		<activity android:name=".ui.SendIM" android:label="@string/app_name" />
+		<activity android:name=".ui.SendIM" android:label="@string/app_name" android:launchMode="singleTop" />
 		<activity android:name=".ui.ChangeStatus" android:label="@string/app_name" />
 		<activity android:name=".ui.AccountCreation" android:label="@string/app_name" />
 		<activity android:name=".ui.AddContact" android:label="@string/app_name" />
--- a/res/values/strings.xml	Tue May 19 22:45:03 2009 +0200
+++ b/res/values/strings.xml	Fri May 22 22:29:14 2009 +0200
@@ -71,7 +71,7 @@
 	
 	<!--  SendIM class -->
 
-	<string name="SendIMSays"> says :\n</string>
+	<string name="SendIMSays"> %s says :\n</string>
 	<string name="SendIMYouSay">You say :\n</string>
 	<string name="SendIMToSendHint">Tip text here</string>
 	<string name="SendIMState">Is : </string>
--- a/src/com/beem/project/beem/service/BeemChatManager.java	Tue May 19 22:45:03 2009 +0200
+++ b/src/com/beem/project/beem/service/BeemChatManager.java	Fri May 22 22:29:14 2009 +0200
@@ -113,7 +113,7 @@
 	    Log.w(TAG, "CA devrait pas 1!!" + chat.getParticipant().getJID());
     }
 
-    private IChat getChat(Chat chat) {
+    private ChatAdapter getChat(Chat chat) {
 	String key = StringUtils.parseBareAddress(chat.getParticipant());
 	if (mChats.containsKey(key)) {
 	    return mChats.get(key);
@@ -172,6 +172,7 @@
 		notif.defaults = Notification.DEFAULT_ALL;
 		notif.flags = Notification.FLAG_AUTO_CANCEL;
 		Intent intent = new Intent(mService, SendIM.class);
+		intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT| Intent.FLAG_ACTIVITY_SINGLE_TOP);
 		// TODO use prefix for name
 		intent.putExtra("contact", chat.getParticipant());
 		notif.setLatestEventInfo(mService, text, mService.getString(R.string.BeemChatManagerNewMessage),
@@ -185,18 +186,18 @@
 
 	@Override
 	public void processMessage(Chat chat, Message message) {
-	    IChat newchat = getChat(chat);
+	    ChatAdapter newchat = getChat(chat);
 	    try {
 
 		if (message.getBody() != null)
-		    newchat.addToLastMessages(message.getBody());
+		    newchat.addMessage(new com.beem.project.beem.service.Message(message));
 		final int n = mRemoteMessageListeners.beginBroadcast();
 		for (int i = 0; i < n; i++) {
 		    IMessageListener listener = mRemoteMessageListeners.getBroadcastItem(i);
 		    listener.processMessage(newchat, new com.beem.project.beem.service.Message(message));
 		}
 		mRemoteMessageListeners.finishBroadcast();
-		if (newchat.isOpen() == false) {
+		if (! newchat.isOpen()) {
 		    notifyNewChat(newchat);
 		}
 	    } catch (RemoteException e) {
--- a/src/com/beem/project/beem/service/ChatAdapter.java	Tue May 19 22:45:03 2009 +0200
+++ b/src/com/beem/project/beem/service/ChatAdapter.java	Fri May 22 22:29:14 2009 +0200
@@ -3,6 +3,10 @@
  */
 package com.beem.project.beem.service;