Skip to content
Snippets Groups Projects
Commit a6041451 authored by akwizgran's avatar akwizgran
Browse files

Merge branch '639-reblogger-and-author-look-similar-their-roles-are-unclear' into 'master'

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.

![device-2016-11-21-094221](/uploads/e508937ad2d2d84f97f5be29bdeaac2e/device-2016-11-21-094221.png)

Closes #639

See merge request !426
parents 988c3e4b a7c28f04
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
......@@ -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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment