aboutsummaryrefslogtreecommitdiffstats
path: root/src/de/gultsch/chat/ui/ConversationActivity.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/de/gultsch/chat/ui/ConversationActivity.java68
1 files changed, 25 insertions, 43 deletions
diff --git a/src/de/gultsch/chat/ui/ConversationActivity.java b/src/de/gultsch/chat/ui/ConversationActivity.java
index 23d03a01..b06fa21d 100644
--- a/src/de/gultsch/chat/ui/ConversationActivity.java
+++ b/src/de/gultsch/chat/ui/ConversationActivity.java
@@ -49,26 +49,29 @@ public class ConversationActivity extends XmppActivity {
@Override
public void onConversationListChanged() {
- Log.d("xmppService","on conversation list changed event received");
+ final Conversation currentConv = conversationList.get(selectedConversation);
conversationList.clear();
conversationList.addAll(xmppConnectionService
.getConversations());
runOnUiThread(new Runnable() {
@Override
- public void run() {
- listAdapter.notifyDataSetChanged();
+ public void run() {
+ updateConversationList();
+ for(int i = 0; i < conversationList.size(); ++i) {
+ if (currentConv.equals(conversationList.get(i))) {
+ selectedConversation = i;
+ break;
+ }
+ }
if(paneShouldBeOpen) {
selectedConversation = 0;
if (conversationList.size() >= 1) {
- updateConversationList();
swapConversationFragment();
} else {
startActivity(new Intent(getApplicationContext(), NewConversationActivity.class));
finish();
}
- } else {
- Log.d("xmppService","pane wasnt open. dont swap fragment");
}
}
});
@@ -98,19 +101,12 @@ public class ConversationActivity extends XmppActivity {
public void updateConversationList() {
if (conversationList.size() >= 1) {
- Conversation currentConv = conversationList.get(selectedConversation);
Collections.sort(this.conversationList, new Comparator<Conversation>() {
@Override
public int compare(Conversation lhs, Conversation rhs) {
return (int) (rhs.getLatestMessageDate() - lhs.getLatestMessageDate());
}
});
- for(int i = 0; i < conversationList.size(); ++i) {
- if (currentConv == conversationList.get(i)) {
- selectedConversation = i;
- break;
- }
- }
}
this.listView.invalidateViews();
}
@@ -198,6 +194,7 @@ public class ConversationActivity extends XmppActivity {
@Override
public void onPanelClosed(View arg0) {
+ paneShouldBeOpen = false;
if (conversationList.size() > 0) {
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setTitle(conversationList.get(selectedConversation).getName());
@@ -248,6 +245,7 @@ public class ConversationActivity extends XmppActivity {
paneShouldBeOpen = true;
spl.openPane();
xmppConnectionService.archiveConversation(conv);
+ selectedConversation = 0;
break;
default:
break;
@@ -275,53 +273,36 @@ public class ConversationActivity extends XmppActivity {
}
return super.onKeyDown(keyCode, event);
}
-
- @Override
- public void onStart() {
- super.onStart();
- if (xmppConnectionServiceBound) {
- conversationList.clear();
- conversationList.addAll(xmppConnectionService
- .getConversations());
- }
- }
@Override
- public void onPause() {
+ protected void onPause() {
super.onPause();
if (xmppConnectionServiceBound) {
- Log.d("xmppService","called on pause. remove listener");
- xmppConnectionService.removeOnConversationListChangedListener();
- }
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- if (xmppConnectionServiceBound) {
Log.d("xmppService","called on stop. remove listener");
xmppConnectionService.removeOnConversationListChangedListener();
unbindService(mConnection);
xmppConnectionServiceBound = false;
}
- }
-
+ }
@Override
void onBackendConnected() {
xmppConnectionService.setOnConversationListChangedListener(this.onConvChanged);
- conversationList.clear();
- conversationList.addAll(xmppConnectionService
- .getConversations());
-
- for(Conversation conversation : conversationList) {
- conversation.setMessages(xmppConnectionService.getMessages(conversation));
+ if (conversationList.size()==0) {
+ Log.d("gultsch","conversation list is empty fetch new");
+ conversationList.clear();
+ conversationList.addAll(xmppConnectionService
+ .getConversations());
+
+ for(Conversation conversation : conversationList) {
+ conversation.setMessages(xmppConnectionService.getMessages(conversation));
+ }
+
+ this.updateConversationList();
}
- this.updateConversationList();
-
if ((getIntent().getAction().equals(Intent.ACTION_VIEW) && (!handledViewIntent))) {
if (getIntent().getType().equals(
ConversationActivity.VIEW_CONVERSATION)) {
@@ -354,6 +335,7 @@ public class ConversationActivity extends XmppActivity {
selectedFragment.onBackendConnected();
} else {
Log.d("gultsch","conversationactivity. no old fragment found. creating new one");
+ selectedConversation = 0;
Log.d("gultsch","selected conversation is #"+selectedConversation);
swapConversationFragment();
}