Newer
Older
package org.briarproject.android.util;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import org.briarproject.R;
import org.briarproject.android.blogs.BlogActivity;
import org.briarproject.api.identity.Author;
import org.briarproject.api.identity.Author.Status;
import de.hdodenhof.circleimageview.CircleImageView;
import im.delight.android.identicons.IdenticonDrawable;
import static android.content.Context.LAYOUT_INFLATER_SERVICE;
import static android.graphics.Typeface.BOLD;
import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
import static android.util.TypedValue.COMPLEX_UNIT_PX;
import static org.briarproject.android.BriarActivity.GROUP_ID;
import static org.briarproject.api.identity.Author.Status.OURSELVES;
public class AuthorView extends RelativeLayout {
private final CircleImageView avatar;
private final TextView authorName;
private final TextView date;
private final TrustIndicatorView trustIndicator;
public AuthorView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.author_view, this, true);
avatar = (CircleImageView) findViewById(R.id.avatar);
avatarIcon = (ImageView) findViewById(R.id.avatarIcon);
authorName = (TextView) findViewById(R.id.authorName);
date = (TextView) findViewById(R.id.dateView);
trustIndicator = (TrustIndicatorView) findViewById(R.id.trustIndicator);
TypedArray attributes =
context.obtainStyledAttributes(attrs, R.styleable.AuthorView);
int persona = attributes.getInteger(R.styleable.AuthorView_persona, 0);
setPersona(persona);
attributes.recycle();
}
public AuthorView(Context context) {
this(context, null);
}
public void setAuthor(Author author) {
authorName.setText(author.getName());
IdenticonDrawable d = new IdenticonDrawable(author.getId().getBytes());
avatar.setImageDrawable(d);
}
public void setAuthorStatus(Status status) {
trustIndicator.setTrustLevel(status);
if (status == OURSELVES) {
authorName.setTypeface(authorName.getTypeface(), BOLD);
}
invalidate();
requestLayout();
}
public void setDate(long date) {
this.date.setText(AndroidUtils.formatDate(getContext(), date));
invalidate();
requestLayout();
}
public void setBlogLink(final GroupId groupId) {
setClickable(true);
TypedValue outValue = new TypedValue();
getContext().getTheme().resolveAttribute(
android.R.attr.selectableItemBackground, outValue, true);
setBackgroundResource(outValue.resourceId);
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getContext(), BlogActivity.class);
i.putExtra(GROUP_ID, groupId.getBytes());
ActivityOptionsCompat options =
makeCustomAnimation(getContext(),
android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
Intent[] intents = {i};
ContextCompat.startActivities(getContext(), intents,
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
options.toBundle());
}
});
}
public void unsetBlogLink() {
setClickable(false);
setBackgroundResource(android.R.color.transparent);
setOnClickListener(null);
}
private void setPersona(int persona) {
switch (persona) {
// reblogger
case 1:
avatarIcon.setVisibility(VISIBLE);
break;
// commenter
case 2:
ViewGroup.LayoutParams params = 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);
break;
}