diff --git a/briar-android/res/drawable-hdpi/msg_in_top.9.png b/briar-android/res/drawable-hdpi/msg_in_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..bcff2b787928c06f490cdbc77b85eaf411fd81b5 Binary files /dev/null and b/briar-android/res/drawable-hdpi/msg_in_top.9.png differ diff --git a/briar-android/res/drawable-hdpi/msg_out_top.9.png b/briar-android/res/drawable-hdpi/msg_out_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b6898258a9b40c45dcf5432be4bdad69e8bfa94e Binary files /dev/null and b/briar-android/res/drawable-hdpi/msg_out_top.9.png differ diff --git a/briar-android/res/drawable-hdpi/notice_in_bottom.9.png b/briar-android/res/drawable-hdpi/notice_in_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5916e12bfad69105ad0704505fb26969641fe1 Binary files /dev/null and b/briar-android/res/drawable-hdpi/notice_in_bottom.9.png differ diff --git a/briar-android/res/drawable-hdpi/notice_out_bottom.9.png b/briar-android/res/drawable-hdpi/notice_out_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b941097643c79bdffe74edb04ffca9f4baad799d Binary files /dev/null and b/briar-android/res/drawable-hdpi/notice_out_bottom.9.png differ diff --git a/briar-android/res/drawable-mdpi/msg_in_top.9.png b/briar-android/res/drawable-mdpi/msg_in_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0307d2f6818e235b947ca2473a26dabb88adcef5 Binary files /dev/null and b/briar-android/res/drawable-mdpi/msg_in_top.9.png differ diff --git a/briar-android/res/drawable-mdpi/msg_out_top.9.png b/briar-android/res/drawable-mdpi/msg_out_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..526edd212be689c540547304450c4a6dae1dd77e Binary files /dev/null and b/briar-android/res/drawable-mdpi/msg_out_top.9.png differ diff --git a/briar-android/res/drawable-mdpi/notice_in_bottom.9.png b/briar-android/res/drawable-mdpi/notice_in_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f64d08347c3473dfc38e7b082e8dd629327fce6a Binary files /dev/null and b/briar-android/res/drawable-mdpi/notice_in_bottom.9.png differ diff --git a/briar-android/res/drawable-mdpi/notice_out_bottom.9.png b/briar-android/res/drawable-mdpi/notice_out_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..674b59a31bdbb79f63c751184e9fbb2951fd96a1 Binary files /dev/null and b/briar-android/res/drawable-mdpi/notice_out_bottom.9.png differ diff --git a/briar-android/res/drawable-xhdpi/msg_in_top.9.png b/briar-android/res/drawable-xhdpi/msg_in_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..eba9138bca21366f395907b0dab1180f4bd1e40a Binary files /dev/null and b/briar-android/res/drawable-xhdpi/msg_in_top.9.png differ diff --git a/briar-android/res/drawable-xhdpi/msg_out_top.9.png b/briar-android/res/drawable-xhdpi/msg_out_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f06ff20ba279e444ee59f86fa34c0fcec6bb5300 Binary files /dev/null and b/briar-android/res/drawable-xhdpi/msg_out_top.9.png differ diff --git a/briar-android/res/drawable-xhdpi/notice_in_bottom.9.png b/briar-android/res/drawable-xhdpi/notice_in_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7ba38cc5ad5c5bcd6bfcfda30d9b9f659036e7 Binary files /dev/null and b/briar-android/res/drawable-xhdpi/notice_in_bottom.9.png differ diff --git a/briar-android/res/drawable-xhdpi/notice_out_bottom.9.png b/briar-android/res/drawable-xhdpi/notice_out_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a19763db7ca9334d4ed2e584b1fd9a5564c5b5 Binary files /dev/null and b/briar-android/res/drawable-xhdpi/notice_out_bottom.9.png differ diff --git a/briar-android/res/drawable-xxhdpi/msg_in_top.9.png b/briar-android/res/drawable-xxhdpi/msg_in_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e9829962e5a21490a451ade82181225b99fa7353 Binary files /dev/null and b/briar-android/res/drawable-xxhdpi/msg_in_top.9.png differ diff --git a/briar-android/res/drawable-xxhdpi/msg_out_top.9.png b/briar-android/res/drawable-xxhdpi/msg_out_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..054f45de3fc0f1c87bf6ed7a5a39db4c8426aa39 Binary files /dev/null and b/briar-android/res/drawable-xxhdpi/msg_out_top.9.png differ diff --git a/briar-android/res/drawable-xxhdpi/notice_in_bottom.9.png b/briar-android/res/drawable-xxhdpi/notice_in_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9a07a5e78d2b1925d8bdbe1710f4297899d1e0 Binary files /dev/null and b/briar-android/res/drawable-xxhdpi/notice_in_bottom.9.png differ diff --git a/briar-android/res/drawable-xxhdpi/notice_out_bottom.9.png b/briar-android/res/drawable-xxhdpi/notice_out_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c23063319f6059ff80db15204d763724ec86375c Binary files /dev/null and b/briar-android/res/drawable-xxhdpi/notice_out_bottom.9.png differ diff --git a/briar-android/res/layout/list_item_introduction_in.xml b/briar-android/res/layout/list_item_introduction_in.xml index db40b47864c8f4407c55fcc61b248adc92be9011..b3a74b6c9b3fb698c00dde72a18e836be9725162 100644 --- a/briar-android/res/layout/list_item_introduction_in.xml +++ b/briar-android/res/layout/list_item_introduction_in.xml @@ -6,21 +6,29 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <include - android:id="@+id/messageLayout" - layout="@layout/list_item_msg_in"/> + <TextView + android:id="@+id/msgBody" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/message_bubble_margin_tail" + android:layout_marginRight="@dimen/message_bubble_margin_non_tail" + android:background="@drawable/msg_in_top" + android:textColor="@color/briar_text_primary" + android:textIsSelectable="true" + android:textSize="@dimen/text_size_medium" + tools:text="Short message"/> <RelativeLayout - android:layout_width="wrap_content" + android:id="@+id/noticeLayout" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="left|start" android:layout_marginLeft="@dimen/message_bubble_margin_tail" android:layout_marginRight="@dimen/message_bubble_margin_non_tail" - android:background="@drawable/notice_in"> + android:background="@drawable/notice_in_bottom"> <TextView android:id="@+id/introductionText" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" android:minWidth="80dp" android:textColor="@color/briar_text_secondary" diff --git a/briar-android/res/layout/list_item_msg_notice_out.xml b/briar-android/res/layout/list_item_msg_notice_out.xml index 79e006af3ec12b02200045d01d3a85a67e2dc8bc..1418e0603251ad97eef8c11e490bf780e3cce331 100644 --- a/briar-android/res/layout/list_item_msg_notice_out.xml +++ b/briar-android/res/layout/list_item_msg_notice_out.xml @@ -6,36 +6,44 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <include - android:id="@+id/messageLayout" - layout="@layout/list_item_msg_out"/> + <TextView + android:id="@+id/msgBody" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/message_bubble_margin_non_tail" + android:layout_marginRight="@dimen/message_bubble_margin_tail" + android:background="@drawable/msg_out_top" + android:textColor="@color/briar_text_primary_inverse" + android:textIsSelectable="true" + android:textSize="@dimen/text_size_medium" + tools:text="This is a long long long message that spans over several lines.\n\nIt ends here."/> <RelativeLayout - android:layout_width="wrap_content" + android:id="@+id/noticeLayout" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="right|end" - android:background="@drawable/notice_out" android:layout_marginLeft="@dimen/message_bubble_margin_non_tail" - android:layout_marginRight="@dimen/message_bubble_margin_tail"> + android:layout_marginRight="@dimen/message_bubble_margin_tail" + android:background="@drawable/notice_out_bottom"> <TextView android:id="@+id/introductionText" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" + android:textColor="@color/briar_text_secondary" android:textIsSelectable="true" android:textSize="@dimen/text_size_medium" android:textStyle="italic" - android:textColor="@color/briar_text_secondary" tools:text="@string/introduction_request_received"/> <TextView android:id="@+id/introductionTime" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/message_bubble_timestamp_margin" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_below="@+id/introductionText" + android:layout_marginTop="@dimen/message_bubble_timestamp_margin" android:textColor="@color/private_message_date" android:textSize="@dimen/text_size_tiny" tools:text="Dec 24, 13:37"/> @@ -44,10 +52,10 @@ android:id="@+id/introductionStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_toEndOf="@+id/introductionTime" - android:layout_toRightOf="@+id/introductionTime" android:layout_alignBottom="@+id/introductionTime" android:layout_marginLeft="@dimen/margin_medium" + android:layout_toEndOf="@+id/introductionTime" + android:layout_toRightOf="@+id/introductionTime" tools:ignore="ContentDescription" tools:src="@drawable/message_delivered"/> diff --git a/briar-android/res/layout/list_item_shareable_invitation_in.xml b/briar-android/res/layout/list_item_shareable_invitation_in.xml index 63c628f73016ee314136aaa13024699643077417..5d707e3612fdd95c74ddfcb3c0189a466596e57a 100644 --- a/briar-android/res/layout/list_item_shareable_invitation_in.xml +++ b/briar-android/res/layout/list_item_shareable_invitation_in.xml @@ -6,37 +6,46 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <include - android:id="@+id/messageLayout" - layout="@layout/list_item_msg_in"/> + <TextView + android:id="@+id/msgBody" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="left|start" + android:layout_marginLeft="@dimen/message_bubble_margin_tail" + android:layout_marginRight="@dimen/message_bubble_margin_non_tail" + android:background="@drawable/msg_in_top" + android:textColor="@color/briar_text_primary" + android:textIsSelectable="true" + android:textSize="@dimen/text_size_medium" + tools:text="Short message"/> <RelativeLayout - android:layout_width="wrap_content" + android:id="@+id/noticeLayout" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="left|start" - android:background="@drawable/notice_in" android:layout_marginLeft="@dimen/message_bubble_margin_tail" - android:layout_marginRight="@dimen/message_bubble_margin_non_tail"> + android:layout_marginRight="@dimen/message_bubble_margin_non_tail" + android:background="@drawable/notice_in_bottom"> <TextView android:id="@+id/introductionText" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" android:minWidth="80dp" + android:textColor="@color/briar_text_secondary" android:textIsSelectable="true" android:textSize="@dimen/text_size_medium" android:textStyle="italic" - android:textColor="@color/briar_text_secondary" tools:text="@string/forum_invitation_received"/> <TextView android:id="@+id/introductionTime" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/message_bubble_timestamp_margin" android:layout_alignEnd="@+id/introductionText" android:layout_alignRight="@+id/introductionText" android:layout_below="@+id/showInvitationsButton" + android:layout_marginTop="@dimen/message_bubble_timestamp_margin" android:textColor="@color/private_message_date" android:textSize="@dimen/text_size_tiny" tools:text="Dec 24, 13:37"/> @@ -46,10 +55,10 @@ style="@style/BriarButtonFlat.Positive" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginBottom="-15dp" android:layout_alignEnd="@+id/introductionText" android:layout_alignRight="@+id/introductionText" android:layout_below="@+id/introductionText" + android:layout_marginBottom="-15dp" tools:text="@string/forum_show_invitations"/> </RelativeLayout> diff --git a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java index c2fc1c026e8f3ad429cd9da9d50d2ccb6526f39b..e86189f31a82d3a2fd6a299aa4f3c40d22cda5bf 100644 --- a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java +++ b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java @@ -37,7 +37,6 @@ import static org.briarproject.android.contact.ConversationItem.FORUM_INVITATION import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_IN; import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_OUT; import static org.briarproject.android.contact.ConversationItem.IncomingItem; -import static org.briarproject.android.contact.ConversationItem.MSG_IN; import static org.briarproject.android.contact.ConversationItem.MSG_IN_UNREAD; import static org.briarproject.android.contact.ConversationItem.MSG_OUT; import static org.briarproject.android.contact.ConversationItem.NOTICE_IN; @@ -140,7 +139,6 @@ class ConversationAdapter extends RecyclerView.Adapter { } private void bindMessage(MessageHolder ui, ConversationMessageItem item) { - PrivateMessageHeader header = item.getHeader(); if (item instanceof ConversationItem.OutgoingItem) { @@ -186,15 +184,24 @@ class ConversationAdapter extends RecyclerView.Adapter { final ConversationIntroductionItem item, final int position) { final IntroductionRequest ir = item.getIntroductionRequest(); + int backgroundRes; String message = ir.getMessage(); if (StringUtils.isNullOrEmpty(message)) { - ui.messageLayout.setVisibility(GONE); + ui.message.setVisibility(GONE); + if (item instanceof ConversationIntroductionOutItem) { + backgroundRes = R.drawable.notice_out; + } else { + backgroundRes = R.drawable.notice_in; + } } else { - ui.messageLayout.setVisibility(VISIBLE); - ui.message.body.setText(StringUtils.trim(message)); - ui.message.date - .setText(AndroidUtils.formatDate(ctx, item.getTime())); + ui.message.setText(StringUtils.trim(message)); + ui.message.setVisibility(VISIBLE); + if (item instanceof ConversationIntroductionOutItem) { + backgroundRes = R.drawable.notice_out_bottom; + } else { + backgroundRes = R.drawable.notice_in_bottom; + } } // Outgoing Introduction Request @@ -204,17 +211,14 @@ class ConversationAdapter extends RecyclerView.Adapter { ConversationIntroductionOutItem i = (ConversationIntroductionOutItem) item; if (i.isSeen()) { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_delivered); - ui.message.status.setImageResource( - R.drawable.message_delivered_white); } else if (i.isSent()) { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_sent); - ui.message.status.setImageResource( - R.drawable.message_sent_white); } else { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_stored); - ui.message.status.setImageResource( - R.drawable.message_stored_white); } } // Incoming Introduction Request (Answered) @@ -265,20 +269,23 @@ class ConversationAdapter extends RecyclerView.Adapter { }); } ui.date.setText(AndroidUtils.formatDate(ctx, item.getTime())); + ui.notice.setBackgroundResource(backgroundRes); } private void bindNotice(NoticeHolder ui, ConversationNoticeItem item) { - ui.text.setText(item.getText()); ui.date.setText(AndroidUtils.formatDate(ctx, item.getTime())); if (item instanceof ConversationNoticeOutItem) { ConversationNoticeOutItem n = (ConversationNoticeOutItem) item; if (n.isSeen()) { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_delivered); } else if (n.isSent()) { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_sent); } else { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_stored); } } @@ -289,7 +296,7 @@ class ConversationAdapter extends RecyclerView.Adapter { final InvitationRequest ir = item.getInvitationRequest(); String name = ""; - int receivedRes = 0, sentRes = 0, buttonRes = 0; + int receivedRes = 0, sentRes = 0, buttonRes = 0, backgroundRes; if (ir instanceof ForumInvitationRequest) { name = ((ForumInvitationRequest) ir).getForumName(); receivedRes = R.string.forum_invitation_received; @@ -304,12 +311,20 @@ class ConversationAdapter extends RecyclerView.Adapter { String message = ir.getMessage(); if (StringUtils.isNullOrEmpty(message)) { - ui.messageLayout.setVisibility(GONE); + ui.message.setVisibility(GONE); + if (item instanceof ConversationShareableInvitationOutItem) { + backgroundRes = R.drawable.notice_out; + } else { + backgroundRes = R.drawable.notice_in; + } } else { - ui.messageLayout.setVisibility(VISIBLE); - ui.message.body.setText(StringUtils.trim(message)); - ui.message.date - .setText(AndroidUtils.formatDate(ctx, item.getTime())); + ui.message.setVisibility(VISIBLE); + ui.message.setText(StringUtils.trim(message)); + if (item instanceof ConversationShareableInvitationOutItem) { + backgroundRes = R.drawable.notice_out_bottom; + } else { + backgroundRes = R.drawable.notice_in_bottom; + } } // Outgoing Invitation @@ -318,17 +333,14 @@ class ConversationAdapter extends RecyclerView.Adapter { ConversationShareableInvitationOutItem i = (ConversationShareableInvitationOutItem) item; if (i.isSeen()) { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_delivered); - ui.message.status.setImageResource( - R.drawable.message_delivered_white); } else if (i.isSent()) { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_sent); - ui.message.status.setImageResource( - R.drawable.message_sent_white); } else { + //noinspection ConstantConditions ui.status.setImageResource(R.drawable.message_stored); - ui.message.status.setImageResource( - R.drawable.message_stored_white); } } // Incoming Invitation @@ -354,6 +366,7 @@ class ConversationAdapter extends RecyclerView.Adapter { } } ui.date.setText(AndroidUtils.formatDate(ctx, item.getTime())); + ui.notice.setBackgroundResource(backgroundRes); } @Override @@ -431,7 +444,7 @@ class ConversationAdapter extends RecyclerView.Adapter { public TextView date; public ImageView status; - MessageHolder(View v, int type) { + private MessageHolder(View v, int type) { super(v); layout = (ViewGroup) v.findViewById(R.id.msgLayout); @@ -447,20 +460,19 @@ class ConversationAdapter extends RecyclerView.Adapter { private static class IntroductionHolder extends RecyclerView.ViewHolder { - private final View messageLayout; - private final MessageHolder message; + private final TextView message; + private final ViewGroup notice; private final TextView text; private final Button acceptButton; private final Button declineButton; private final TextView date; private final ImageView status; - IntroductionHolder(View v, int type) { + private IntroductionHolder(View v, int type) { super(v); - messageLayout = v.findViewById(R.id.messageLayout); - message = new MessageHolder(messageLayout, - type == INTRODUCTION_IN ? MSG_IN : MSG_OUT); + message = (TextView) v.findViewById(R.id.msgBody); + notice = (ViewGroup) v.findViewById(R.id.noticeLayout); text = (TextView) v.findViewById(R.id.introductionText); acceptButton = (Button) v.findViewById(R.id.acceptButton); declineButton = (Button) v.findViewById(R.id.declineButton); @@ -480,7 +492,7 @@ class ConversationAdapter extends RecyclerView.Adapter { private final TextView date; private final ImageView status; - NoticeHolder(View v, int type) { + private NoticeHolder(View v, int type) { super(v); text = (TextView) v.findViewById(R.id.noticeText); @@ -496,20 +508,19 @@ class ConversationAdapter extends RecyclerView.Adapter { private static class InvitationHolder extends RecyclerView.ViewHolder { - private final View messageLayout; - private final MessageHolder message; + private final TextView message; + private final View notice; private final TextView text; private final Button showInvitationsButton; private final TextView date; private final ImageView status; - InvitationHolder(View v, int type) { + private InvitationHolder(View v, int type) { super(v); - messageLayout = v.findViewById(R.id.messageLayout); - message = new MessageHolder(messageLayout, - type == FORUM_INVITATION_IN ? MSG_IN : MSG_OUT); + message = (TextView) v.findViewById(R.id.msgBody); text = (TextView) v.findViewById(R.id.introductionText); + notice = v.findViewById(R.id.noticeLayout); showInvitationsButton = (Button) v.findViewById(R.id.showInvitationsButton); date = (TextView) v.findViewById(R.id.introductionTime);