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(),