From bbf12ca0c44b8a84f04bd2b945ff6ea25a1124c5 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 27 Jul 2016 14:53:11 -0300
Subject: [PATCH] Explain why forum can't be shared with contact

Closes #533
---
 .../layout/list_item_selectable_contact.xml   | 38 ++++++++++-----
 briar-android/res/values/dimens.xml           |  1 -
 briar-android/res/values/strings.xml          |  1 +
 .../android/forum/ContactSelectorAdapter.java | 46 +++++++++++++------
 4 files changed, 60 insertions(+), 26 deletions(-)

diff --git a/briar-android/res/layout/list_item_selectable_contact.xml b/briar-android/res/layout/list_item_selectable_contact.xml
index 5642afc014..a1054b8913 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 8aa43b6693..8b09f7246a 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 4bef054ae1..2d1daa679e 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 23ef1e78cc..25e8fa1e91 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,10 +21,13 @@ 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,
+	ContactSelectorAdapter(Context context,
 			OnItemClickListener listener) {
 
 		super(context, listener);
@@ -53,11 +58,15 @@ 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.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 +78,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 +97,27 @@ public class ContactSelectorAdapter
 		return compareByName(c1, c2);
 	}
 
-	private void grayOutItem(final SelectableContactHolder ui) {
+	private void grayOutItem(final SelectableContactHolder ui,
+			final boolean gray) {
 		if (Build.VERSION.SDK_INT >= 11) {
-			float alpha = 0.25f;
+			float alpha = 1f;
+			if (gray) alpha = 0.25f;
 			ui.avatar.setAlpha(alpha);
 			ui.name.setAlpha(alpha);
+			ui.shared.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) {
+				ColorFilter colorFilter = new PorterDuffColorFilter(
+						ContextCompat.getColor(ctx, R.color.window_background),
+						PorterDuff.Mode.MULTIPLY);
+				ui.avatar.setColorFilter(colorFilter);
+			} else{
+				ui.avatar.clearColorFilter();
+			}
+			ui.name.setEnabled(!gray);
+			ui.shared.setEnabled(!gray);
+			ui.checkBox.setEnabled(!gray);
 		}
 	}
 }
-- 
GitLab