From 73bc86df4a82f92c1ef8f45769747834fe638f01 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 6 Sep 2016 12:52:44 -0300 Subject: [PATCH] show only a teaser for blog posts in lists --- briar-android/res/values/strings.xml | 1 + .../android/blogs/BlogPostViewHolder.java | 34 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml index ba764c356..4bbf13c15 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -211,6 +211,7 @@ This blog is empty This blog is currently empty.\n\nEither the author hasn\'t written anything yet, or the person who shared this blog with you needs to come online, so posts can be synchronized. NEW + read more Write Blog Post Add a title (optional) Type your blog post here diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java index 186792a11..e9a99449e 100644 --- a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java +++ b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java @@ -6,8 +6,13 @@ import android.content.Intent; import android.support.annotation.UiThread; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; +import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewCompat; import android.support.v7.widget.RecyclerView; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.SpannableStringBuilder; +import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -33,6 +38,8 @@ import static org.briarproject.api.blogs.MessageType.POST; @UiThread class BlogPostViewHolder extends RecyclerView.ViewHolder { + private static final int TEASER_LENGTH = 240; + private final Context ctx; private final ViewGroup layout; private final AuthorView reblogger; @@ -106,8 +113,15 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { } // post body - body.setText(item.getBody()); - if (listener == null) body.setTextIsSelectable(true); + CharSequence bodyText = item.getBody(); + if (listener == null) { + body.setTextIsSelectable(true); + } else { + body.setTextIsSelectable(false); + if (item.getBody().length() > TEASER_LENGTH) + bodyText = getTeaser(item.getBody()); + } + body.setText(bodyText); // reblog button reblogButton.setOnClickListener(new OnClickListener() { @@ -162,4 +176,20 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { commentContainer.addView(v); } } + + private SpannableStringBuilder getTeaser(String body) { + SpannableStringBuilder builder = + new SpannableStringBuilder(body.substring(0, TEASER_LENGTH)); + builder.append("… "); + + Spannable readMore = + new SpannableString(ctx.getString(R.string.read_more) + "…"); + ForegroundColorSpan fg = new ForegroundColorSpan( + ContextCompat.getColor(ctx, R.color.briar_text_link)); + readMore.setSpan(fg, 0, readMore.length(), + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + builder.append(readMore); + + return builder; + } }