diff --git a/res/drawable-hdpi/ic_groups_holo_dark.png b/res/drawable-hdpi/ic_groups_holo_dark.png
new file mode 100644
index 0000000000..32f419ce67
Binary files /dev/null and b/res/drawable-hdpi/ic_groups_holo_dark.png differ
diff --git a/res/drawable-mdpi/ic_groups_holo_dark.png b/res/drawable-mdpi/ic_groups_holo_dark.png
new file mode 100644
index 0000000000..c3cf14a174
Binary files /dev/null and b/res/drawable-mdpi/ic_groups_holo_dark.png differ
diff --git a/res/drawable-xhdpi/ic_groups_holo_dark.png b/res/drawable-xhdpi/ic_groups_holo_dark.png
new file mode 100644
index 0000000000..d7348fb9ac
Binary files /dev/null and b/res/drawable-xhdpi/ic_groups_holo_dark.png differ
diff --git a/res/menu/conversation_group_options.xml b/res/menu/conversation_group_options.xml
new file mode 100644
index 0000000000..003dcbe770
--- /dev/null
+++ b/res/menu/conversation_group_options.xml
@@ -0,0 +1,9 @@
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 80ec755abb..2f784fd33c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -79,6 +79,9 @@
Recipient is not a valid SMS or email address!
Message is empty!
FWD
+ Group Conversation Recipients
+ Group Conversation
+ %d recipients in group
Message details
@@ -404,6 +407,9 @@
Delete thread
Compare
+
+ Recipients list
+
Compare
Get scanned to compare
@@ -422,9 +428,10 @@
Verified
-
-
+
TextSecure is a security enhanced text messaging application that serves as a full replacement for the default text messaging application. Messages to other TextSecure users are encrypted over the air, and all text messages are stored in an encrypted database on the device. If your phone is lost or stolen, your messages will be safe, and communication with other TextSecure users can\'t be monitored over the air.
+
+
diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java
index 625365159b..d6657315c0 100644
--- a/src/org/thoughtcrime/securesms/ConversationActivity.java
+++ b/src/org/thoughtcrime/securesms/ConversationActivity.java
@@ -73,6 +73,8 @@ import org.thoughtcrime.securesms.util.MemoryCleaner;
import ws.com.google.android.mms.MmsException;
import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
/**
* Activity for displaying a message thread, as well as
@@ -199,6 +201,8 @@ public class ConversationActivity extends SherlockFragmentActivity
if (isSingleConversation()) {
inflater.inflate(R.menu.conversation_callable, menu);
+ } else if (isGroupConversation()) {
+ inflater.inflate(R.menu.conversation_group_options, menu);
}
inflater.inflate(R.menu.conversation, menu);
@@ -217,6 +221,7 @@ public class ConversationActivity extends SherlockFragmentActivity
case R.id.menu_abort_session: handleAbortSecureSession(); return true;
case R.id.menu_verify_recipient: handleVerifyRecipient(); return true;
case R.id.menu_verify_session: handleVerifySession(); return true;
+ case R.id.menu_group_recipients: handleDisplayGroupRecipients(); return true;
case android.R.id.home: finish(); return true;
}
@@ -305,6 +310,22 @@ public class ConversationActivity extends SherlockFragmentActivity
startActivity(dialIntent);
}
+ private void handleDisplayGroupRecipients() {
+ List recipientStrings = new LinkedList();
+
+ for (Recipient recipient : getRecipients().getRecipientsList()) {
+ recipientStrings.add(recipient.getName());
+ }
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.ConversationActivity_group_conversation_recipients);
+ builder.setIcon(R.drawable.ic_groups_holo_dark);
+ builder.setCancelable(true);
+ builder.setItems(recipientStrings.toArray(new String[]{}), null);
+ builder.setPositiveButton(android.R.string.ok, null);
+ builder.show();
+ }
+
private void handleDeleteThread() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.ConversationActivity_delete_thread_confirmation);
@@ -356,6 +377,10 @@ public class ConversationActivity extends SherlockFragmentActivity
} else {
subtitle = getRecipients().getPrimaryRecipient().getNumber();
}
+ } else if (isGroupConversation()) {
+ title = getString(R.string.ConversationActivity_group_conversation);
+ subtitle = String.format(getString(R.string.ConversationActivity_d_recipients_in_group),
+ getRecipients().getRecipientsList().size());
} else {
title = getString(R.string.ConversationActivity_compose_message);
subtitle = "";
@@ -526,6 +551,10 @@ public class ConversationActivity extends SherlockFragmentActivity
return getRecipients() != null && getRecipients().isSingleRecipient();
}
+ private boolean isGroupConversation() {
+ return getRecipients() != null && !getRecipients().isSingleRecipient();
+ }
+
private boolean isAuthenticatedSession() {
return AuthenticityCalculator.isAuthenticated(this,
getRecipients().getPrimaryRecipient(),