From a7c28f04deeb1184e9c2f17632174f7a9d6d524d Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Mon, 21 Nov 2016 09:43:22 -0200
Subject: [PATCH] Make original author look like commenter when reblogged

This wasn't as simple as changing the persona in the XML,
because the same layout is used for a post whether reblogged or not.
So the persona needs to be changed programmatically for reblogged posts.
For this, the `AuthorView#setPersona()` method has been made public and
was changed to always set all views into the desired state to support
usage in a RecyclerView.
---
 .../android/blogs/BlogPostViewHolder.java     |  3 +
 .../briarproject/android/view/AuthorView.java | 76 +++++++++++--------
 2 files changed, 47 insertions(+), 32 deletions(-)

diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
index 5274c2379a..aeaa23880e 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
@@ -107,6 +107,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 		author.setAuthor(a);
 		author.setAuthorStatus(post.getAuthorStatus());
 		author.setDate(post.getTimestamp());
+		author.setPersona(AuthorView.NORMAL);
 		// TODO make author clickable more often #624
 		if (item.getHeader().getType() == POST) {
 			author.setBlogLink(post.getGroupId());
@@ -166,6 +167,8 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 		reblogger.setBlogLink(item.getGroupId());
 		reblogger.setVisibility(VISIBLE);
 
+		author.setPersona(AuthorView.COMMENTER);
+
 		// comments
 		for (BlogCommentHeader c : item.getComments()) {
 			View v = LayoutInflater.from(ctx)
diff --git a/briar-android/src/org/briarproject/android/view/AuthorView.java b/briar-android/src/org/briarproject/android/view/AuthorView.java
index b31472acad..748d485165 100644
--- a/briar-android/src/org/briarproject/android/view/AuthorView.java
+++ b/briar-android/src/org/briarproject/android/view/AuthorView.java
@@ -4,6 +4,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.res.TypedArray;
 import android.graphics.Typeface;
+import android.support.annotation.DimenRes;
 import android.support.annotation.Nullable;
 import android.support.annotation.UiThread;
 import android.support.v4.app.ActivityOptionsCompat;
@@ -29,7 +30,6 @@ import im.delight.android.identicons.IdenticonDrawable;
 import static android.content.Context.LAYOUT_INFLATER_SERVICE;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
 import static android.graphics.Typeface.BOLD;
-import static android.graphics.Typeface.NORMAL;
 import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
 import static android.util.TypedValue.COMPLEX_UNIT_PX;
 import static org.briarproject.android.BriarActivity.GROUP_ID;
@@ -38,6 +38,11 @@ import static org.briarproject.api.identity.Author.Status.OURSELVES;
 @UiThread
 public class AuthorView extends RelativeLayout {
 
+	public static final int NORMAL = 0;
+	public static final int REBLOGGER = 1;
+	public static final int COMMENTER = 2;
+	public static final int LIST = 3;
+
 	private final CircleImageView avatar;
 	private final ImageView avatarIcon;
 	private final TextView authorName;
@@ -127,44 +132,51 @@ public class AuthorView extends RelativeLayout {
 		setOnClickListener(null);
 	}
 
-	private void setPersona(int persona) {
+	public void setPersona(int persona) {
 		switch (persona) {
-			// reblogger
-			case 1:
+			case REBLOGGER:
 				avatarIcon.setVisibility(VISIBLE);
+				date.setVisibility(VISIBLE);
+				setCenterVertical(authorName, false);
+				setCenterVertical(trustIndicator, false);
 				break;
-			// commenter
-			case 2:
-				LayoutParams params = (LayoutParams) avatar.getLayoutParams();
-				int size = getResources().getDimensionPixelSize(
-						R.dimen.blogs_avatar_comment_size);
-				params.height = size;
-				params.width = size;
-				avatar.setLayoutParams(params);
-				float textSize = getResources()
-						.getDimensionPixelSize(R.dimen.text_size_tiny);
-				authorName.setTextSize(COMPLEX_UNIT_PX, textSize);
+			case COMMENTER:
+				avatarIcon.setVisibility(INVISIBLE);
+				date.setVisibility(VISIBLE);
+				setAvatarSize(R.dimen.blogs_avatar_comment_size);
+				setTextSize(authorName, R.dimen.text_size_tiny);
+				setCenterVertical(authorName, false);
+				setCenterVertical(trustIndicator, false);
 				break;
-			// list
-			case 3:
+			case LIST:
+				avatarIcon.setVisibility(INVISIBLE);
 				date.setVisibility(GONE);
-				params = (LayoutParams) avatar.getLayoutParams();
-				size = getResources().getDimensionPixelSize(
-						R.dimen.listitem_picture_size_small);
-				params.height = size;
-				params.width = size;
-				avatar.setLayoutParams(params);
-				textSize = getResources()
-						.getDimensionPixelSize(R.dimen.text_size_medium);
-				authorName.setTextSize(COMPLEX_UNIT_PX, textSize);
-				params = (LayoutParams) authorName.getLayoutParams();
-				params.addRule(CENTER_VERTICAL);
-				authorName.setLayoutParams(params);
-				params = (LayoutParams) trustIndicator.getLayoutParams();
-				params.addRule(CENTER_VERTICAL);
-				trustIndicator.setLayoutParams(params);
+				setAvatarSize(R.dimen.listitem_picture_size_small);
+				setTextSize(authorName, R.dimen.text_size_medium);
+				setCenterVertical(authorName, true);
+				setCenterVertical(trustIndicator, true);
 				break;
 		}
 	}
 
+	private void setAvatarSize(@DimenRes int res) {
+		LayoutParams params = (LayoutParams) avatar.getLayoutParams();
+		int size = getResources().getDimensionPixelSize(
+				res);
+		params.height = size;
+		params.width = size;
+		avatar.setLayoutParams(params);
+	}
+
+	private void setTextSize(TextView v, @DimenRes int res) {
+		float textSize = getResources().getDimensionPixelSize(res);
+		v.setTextSize(COMPLEX_UNIT_PX, textSize);
+	}
+
+	private void setCenterVertical(View v, boolean center) {
+		LayoutParams params = (LayoutParams) v.getLayoutParams();
+		params.addRule(CENTER_VERTICAL, center ? RelativeLayout.TRUE : 0);
+		v.setLayoutParams(params);
+	}
+
 }
-- 
GitLab