From 73bc86df4a82f92c1ef8f45769747834fe638f01 Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> 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 ba764c356d..4bbf13c15f 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -211,6 +211,7 @@ <string name="blogs_blog_is_empty">This blog is empty</string> <string name="blogs_other_blog_empty_state">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.</string> <string name="tag_new">NEW</string> + <string name="read_more">read more</string> <string name="blogs_write_blog_post">Write Blog Post</string> <string name="blogs_write_blog_post_title_hint">Add a title (optional)</string> <string name="blogs_write_blog_post_body_hint">Type your blog post here</string> diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java index 186792a11b..e9a99449e0 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; + } } -- GitLab