diff --git a/briar-android/res/layout/list_item_selectable_contact.xml b/briar-android/res/layout/list_item_selectable_contact.xml index 5642afc014a62313c0c1d279883bb396cd368686..a1054b8913cd864d08669084fb0430cb5201b201 100644 --- a/briar-android/res/layout/list_item_selectable_contact.xml +++ b/briar-android/res/layout/list_item_selectable_contact.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -9,8 +8,9 @@ <RelativeLayout android:layout_width="match_parent" - android:layout_height="@dimen/listitem_height_contact_selector" - android:background="?attr/selectableItemBackground"> + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:padding="@dimen/listitem_horizontal_margin"> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/avatarView" @@ -20,13 +20,10 @@ android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" - android:layout_marginLeft="@dimen/listitem_horizontal_margin" - android:layout_marginStart="@dimen/listitem_horizontal_margin" android:transitionName="avatar" tools:src="@drawable/ic_launcher"/> - <TextView - android:id="@+id/nameView" + <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" @@ -35,10 +32,28 @@ android:layout_toEndOf="@+id/avatarView" android:layout_toLeftOf="@+id/checkBox" android:layout_toRightOf="@+id/avatarView" - android:maxLines="2" - android:textSize="@dimen/text_size_large" - android:textColor="@color/briar_text_primary" - tools:text="This is a name of a contact"/> + android:orientation="vertical"> + + <TextView + android:id="@+id/nameView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:maxLines="2" + android:textColor="@color/briar_text_primary" + android:textSize="@dimen/text_size_large" + tools:text="This is a name of a contact"/> + + <TextView + android:id="@+id/infoView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:maxLines="2" + android:text="@string/forum_invitation_already_sharing" + android:textColor="@color/briar_text_tertiary" + android:textSize="@dimen/text_size_small" + tools:visibility="visible"/> + + </LinearLayout> <CheckBox android:id="@+id/checkBox" @@ -47,7 +62,6 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" - android:layout_marginRight="@dimen/listitem_horizontal_margin" android:clickable="false"/> </RelativeLayout> diff --git a/briar-android/res/values/dimens.xml b/briar-android/res/values/dimens.xml index 8aa43b6693613f2104a9bbdf90f539478d47897b..8b09f7246ad135bd537db166f6170fac3c6d21b4 100644 --- a/briar-android/res/values/dimens.xml +++ b/briar-android/res/values/dimens.xml @@ -23,7 +23,6 @@ <dimen name="listitem_vertical_margin">10dp</dimen> <dimen name="listitem_text_left_margin">72dp</dimen> <dimen name="listitem_height_one_line_avatar">56dp</dimen> - <dimen name="listitem_height_contact_selector">68dp</dimen> <dimen name="listitem_picture_size">48dp</dimen> <dimen name="listitem_picture_size_small">23dp</dimen> <dimen name="listitem_picture_frame_size">53dp</dimen> diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml index 4bef054ae141d9afbebc79a88938f564ce6084d3..2d1daa679e2247e314eb04cf4b1bd63caf8f2e9f 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -221,6 +221,7 @@ <string name="forum_new_entry_received">New forum entry</string> <string name="forum_new_message_hint">New Entry</string> <string name="forum_message_reply_hint">New Reply</string> + <string name="forum_invitation_already_sharing">Already sharing</string> <!-- Dialogs --> <string name="dialog_title_lost_password">Lost Password</string> diff --git a/briar-android/src/org/briarproject/android/forum/ContactSelectorAdapter.java b/briar-android/src/org/briarproject/android/forum/ContactSelectorAdapter.java index 23ef1e78cc0b1e7715fd43f2d2873d2d5204341c..9a2fe4590677cbde9595c7f58751e262ea297176 100644 --- a/briar-android/src/org/briarproject/android/forum/ContactSelectorAdapter.java +++ b/briar-android/src/org/briarproject/android/forum/ContactSelectorAdapter.java @@ -6,10 +6,12 @@ import android.graphics.ColorFilter; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.os.Build; +import android.support.v4.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; +import android.widget.TextView; import org.briarproject.R; import org.briarproject.android.contact.BaseContactListAdapter; @@ -19,13 +21,31 @@ import org.briarproject.api.contact.ContactId; import java.util.ArrayList; import java.util.Collection; -public class ContactSelectorAdapter +import static android.view.View.GONE; +import static android.view.View.VISIBLE; + +class ContactSelectorAdapter extends BaseContactListAdapter<ContactSelectorAdapter.SelectableContactHolder> { - public ContactSelectorAdapter(Context context, + private final ColorFilter grayColorFilter; + + ContactSelectorAdapter(Context context, OnItemClickListener listener) { super(context, listener); + if (Build.VERSION.SDK_INT >= 11) { + grayColorFilter = null; + } else { + // Overlay the background colour at 75% opacity + int bg = ContextCompat.getColor(context, R.color.window_background); + int alpha = (int) (255 * 0.75f); + int red = Color.red(bg); + int green = Color.green(bg); + int blue = Color.blue(bg); + bg = Color.argb(alpha, red, green, blue); + grayColorFilter = new PorterDuffColorFilter(bg, + PorterDuff.Mode.SRC_OVER); + } } @Override @@ -53,11 +73,16 @@ public class ContactSelectorAdapter if (item.isDisabled()) { // we share this forum already with that contact ui.layout.setEnabled(false); - grayOutItem(ui); + ui.shared.setVisibility(VISIBLE); + grayOutItem(ui, true); + } else { + ui.layout.setEnabled(true); + ui.shared.setVisibility(GONE); + grayOutItem(ui, false); } } - public Collection<ContactId> getSelectedContactIds() { + Collection<ContactId> getSelectedContactIds() { Collection<ContactId> selected = new ArrayList<>(); for (int i = 0; i < contacts.size(); i++) { @@ -69,15 +94,17 @@ public class ContactSelectorAdapter return selected; } - protected static class SelectableContactHolder + static class SelectableContactHolder extends BaseContactListAdapter.BaseContactHolder { private final CheckBox checkBox; + private final TextView shared; - public SelectableContactHolder(View v) { + SelectableContactHolder(View v) { super(v); checkBox = (CheckBox) v.findViewById(R.id.checkBox); + shared = (TextView) v.findViewById(R.id.infoView); } } @@ -86,18 +113,15 @@ public class ContactSelectorAdapter return compareByName(c1, c2); } - private void grayOutItem(final SelectableContactHolder ui) { + private void grayOutItem(SelectableContactHolder ui, boolean gray) { if (Build.VERSION.SDK_INT >= 11) { - float alpha = 0.25f; + float alpha = gray ? 0.25f : 1f; ui.avatar.setAlpha(alpha); ui.name.setAlpha(alpha); ui.checkBox.setAlpha(alpha); } else { - ColorFilter colorFilter = new PorterDuffColorFilter(Color.GRAY, - PorterDuff.Mode.MULTIPLY); - ui.avatar.setColorFilter(colorFilter); - ui.name.setEnabled(false); - ui.checkBox.setEnabled(false); + if (gray) ui.avatar.setColorFilter(grayColorFilter); + else ui.avatar.clearColorFilter(); } } }