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.
--- 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;