aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/ui
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2016-05-31 21:38:06 +0200
committerChristian Schneppe <christian@pix-art.de>2016-05-31 21:38:06 +0200
commitc23642b8cd2c06c5f3e9cf7f88d31ed5c6f78614 (patch)
treea7c53e5dd6dd6e85213cff834d35316a29617753 /src/main/java/eu/siacs/conversations/ui
parent2cdc31a6887f242dfe4faca91af63ffd4e74ef67 (diff)
parentea6a008b39b0f669f66f3c8aec08b4deb3ece154 (diff)
Merge remote-tracking branch 'refs/remotes/siacs/master'
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui')
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationFragment.java11
-rw-r--r--src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java21
2 files changed, 22 insertions, 10 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
index 3ec484087..2fb4e44f8 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
@@ -13,6 +13,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.text.InputType;
+import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Gravity;
@@ -157,7 +158,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
ConversationFragment.this.conversation.populateWithMessages(ConversationFragment.this.messageList);
updateStatusMessages();
messageListAdapter.notifyDataSetChanged();
- int pos = getIndexOf(uuid,messageList);
+ int pos = Math.max(getIndexOf(uuid,messageList),0);
messagesView.setSelectionFromTop(pos, pxOffset);
messagesLoaded = true;
if (messageLoaderToast != null) {
@@ -210,7 +211,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
}
- return 0;
+ return -1;
}
private final int KEYCHAIN_UNLOCK_NOT_REQUIRED = 0;
@@ -813,11 +814,13 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
this.messagesLoaded = true;
synchronized (this.messageList) {
final Message first = conversation.getFirstUnreadMessage();
+ final int bottom = Math.max(0, this.messageList.size() - 1);
final int pos;
if (first == null) {
- pos = Math.max(0,this.messageList.size() - 1);
+ pos = bottom;
} else {
- pos = getIndexOf(first.getUuid(), this.messageList);
+ int i = getIndexOf(first.getUuid(), this.messageList);
+ pos = i < 0 ? bottom : i;
}
messagesView.setSelection(pos);
}
diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
index 548682dfb..17f9944fd 100644
--- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
@@ -846,7 +846,16 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
private boolean handleJid(Invite invite) {
List<Contact> contacts = xmppConnectionService.findContacts(invite.getJid());
- if (contacts.size() == 0) {
+ if (invite.isMuc()) {
+ Conversation muc = xmppConnectionService.findFirstMuc(invite.getJid());
+ if (muc != null) {
+ switchToConversation(muc);
+ return true;
+ } else {
+ showJoinConferenceDialog(invite.getJid().toBareJid().toString());
+ return false;
+ }
+ } else if (contacts.size() == 0) {
showCreateContactDialog(invite.getJid().toString(),invite.getFingerprint());
return false;
} else if (contacts.size() == 1) {
@@ -1020,13 +1029,13 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
boolean invite() {
if (jid != null) {
- if (muc) {
- showJoinConferenceDialog(jid);
- } else {
- return handleJid(this);
- }
+ return handleJid(this);
}
return false;
}
+
+ public boolean isMuc() {
+ return muc;
+ }
}
}