diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2015-07-22 15:57:17 +0200 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2015-07-22 15:57:17 +0200 |
commit | cd204d5931a6cf0289d2df120f278864b8b94fdf (patch) | |
tree | 875bf02979a74c3f57a031a5ded5f91c81b14dae | |
parent | f7634a85be516feef753bdb32fed8df7da1573ed (diff) |
show warning when trying to highlight users that have left the conference
-rw-r--r-- | src/main/java/eu/siacs/conversations/entities/MucOptions.java | 9 | ||||
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 17 | ||||
-rw-r--r-- | src/main/res/values/strings.xml | 1 |
3 files changed, 22 insertions, 5 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index 6ff6b8c9..52a862ef 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -264,6 +264,15 @@ public class MucOptions { users.add(user); } + public boolean isUserInRoom(String name) { + for (int i = 0; i < users.size(); ++i) { + if (users.get(i).getName().equals(name)) { + return true; + } + } + return false; + } + public void processPacket(PresencePacket packet, PgpEngine pgp) { final Jid from = packet.getFrom(); if (!from.isBareJid()) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index f9144083..6ff14d81 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -385,11 +385,11 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (message.getStatus() <= Message.STATUS_RECEIVED) { if (message.getConversation().getMode() == Conversation.MODE_MULTI) { if (message.getCounterpart() != null) { - if (!message.getCounterpart().isBareJid()) { - highlightInConference(message.getCounterpart().getResourcepart()); - } else { - highlightInConference(message.getCounterpart().toString()); + String user = message.getCounterpart().isBareJid() ? message.getCounterpart().toString() : message.getCounterpart().getResourcepart(); + if (!message.getConversation().getMucOptions().isUserInRoom(user)) { + Toast.makeText(activity,activity.getString(R.string.user_has_left_conference,user),Toast.LENGTH_SHORT).show(); } + highlightInConference(user); } } else { activity.switchToContactDetails(message.getContact()); @@ -410,7 +410,14 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (message.getStatus() <= Message.STATUS_RECEIVED) { if (message.getConversation().getMode() == Conversation.MODE_MULTI) { if (message.getCounterpart() != null) { - privateMessageWith(message.getCounterpart()); + String user = message.getCounterpart().getResourcepart(); + if (user != null) { + if (message.getConversation().getMucOptions().isUserInRoom(user)) { + privateMessageWith(message.getCounterpart()); + } else { + Toast.makeText(activity, activity.getString(R.string.user_has_left_conference, user), Toast.LENGTH_SHORT).show(); + } + } } } } else { diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 1adb8235..5c8c0dbb 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -498,4 +498,5 @@ <string name="file_not_found_on_remote_host">File not found on remote server</string> <string name="search_for_contacts_or_groups">Search for contacts or groups</string> <string name="send_private_message">Send private message</string> + <string name="user_has_left_conference">%s has left the conference!</string> </resources> |