From a0172ddb2fb331d5207f3b16b7405016ee4205ee Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 13 Oct 2022 15:47:33 -0300 Subject: [PATCH] Autoscale story text so all content fits in viewer. --- .../securesms/mediasend/v2/text/TextStoryTextWatcher.kt | 9 +++++++++ .../thoughtcrime/securesms/sharing/MultiShareArgs.java | 4 ---- .../thoughtcrime/securesms/stories/StoryTextPostView.kt | 6 ------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryTextWatcher.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryTextWatcher.kt index 571c138817..2322dd10d3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryTextWatcher.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryTextWatcher.kt @@ -9,6 +9,7 @@ import android.widget.TextView import org.signal.core.util.BreakIteratorCompat import org.signal.core.util.DimensionUnit import org.signal.core.util.EditTextUtil +import org.thoughtcrime.securesms.util.doOnEachLayout class TextStoryTextWatcher private constructor(private val textView: TextView) : TextWatcher { @@ -45,6 +46,14 @@ class TextStoryTextWatcher private constructor(private val textView: TextView) : if (textView is EditText) { EditTextUtil.addGraphemeClusterLimitFilter(textView, 700) + } else { + textView.doOnEachLayout { + val contentHeight = textView.height - textView.paddingTop - textView.paddingBottom + if (textView.layout != null && textView.layout.height > contentHeight) { + val percentShown = contentHeight / textView.layout.height.toFloat() + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, DimensionUnit.DP.toPixels(18f * percentShown)) + } + } } textView.addTextChangedListener(watcher) diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java index 7caf1f417c..923dbc5191 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java @@ -168,10 +168,6 @@ public final class MultiShareArgs implements Parcelable { return false; } - if (!Util.isEmpty(getDraftText()) && getDraftText().split("\n").length > Stories.MAX_TEXT_STORY_LINE_COUNT) { - return false; - } - if (!Util.isEmpty(getDraftText())) { BreakIteratorCompat breakIteratorCompat = BreakIteratorCompat.getInstance(); breakIteratorCompat.setText(getDraftText()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostView.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostView.kt index 953b42cd73..cda4a9bb08 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostView.kt @@ -4,11 +4,9 @@ import android.content.Context import android.graphics.Typeface import android.graphics.drawable.Drawable import android.util.AttributeSet -import android.util.TypedValue import android.view.View import android.widget.ImageView import androidx.annotation.ColorInt -import androidx.annotation.Px import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.graphics.ColorUtils import androidx.core.view.doOnNextLayout @@ -85,10 +83,6 @@ class StoryTextPostView @JvmOverloads constructor( textView.text = text } - private fun setTextSize(@Px textSize: Float) { - textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize) - } - private fun setTextGravity(textAlignment: TextAlignment) { textView.gravity = textAlignment.gravity }