From 954e45ed97f61eb9f41b8afdd51c73b50ba134a1 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 23 Mar 2022 12:50:32 -0300 Subject: [PATCH] Fix capitalization retention for text stories. --- .../securesms/stories/ScaleTransition.kt | 8 +++++--- .../securesms/stories/StoryTextPostView.kt | 20 ++++++++++++++----- .../securesms/stories/StoryTextView.kt | 6 +++--- .../securesms/stories/my/MyStoriesFragment.kt | 11 ++++++---- .../viewer/page/StoryViewerPageFragment.kt | 2 +- 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/ScaleTransition.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/ScaleTransition.kt index 0bfb58d92..0c3082f0c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/ScaleTransition.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/ScaleTransition.kt @@ -100,11 +100,13 @@ class ScaleTransition : Transition { end.view.scaleX = (startWidth / endWidth) * startScaleX end.view.scaleY = (startHeight / endHeight) * startScaleY - return ObjectAnimator.ofPropertyValuesHolder(end.view, + return ObjectAnimator.ofPropertyValuesHolder( + end.view, ofFloat(View.TRANSLATION_X, 0f), ofFloat(View.TRANSLATION_Y, 0f), ofFloat(View.SCALE_X, 1f), - ofFloat(View.SCALE_Y, 1f)).apply { + ofFloat(View.SCALE_Y, 1f) + ).apply { addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { resetValues(start.view) @@ -113,4 +115,4 @@ class ScaleTransition : Transition { }) } } -} \ No newline at end of file +} 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 20bda20ca..ec7d4f21a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostView.kt @@ -1,7 +1,6 @@ package org.thoughtcrime.securesms.stories import android.content.Context -import android.graphics.Color import android.graphics.Typeface import android.graphics.drawable.Drawable import android.util.AttributeSet @@ -10,11 +9,9 @@ import android.view.View import androidx.annotation.ColorInt import androidx.annotation.Px import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.content.res.AppCompatResources import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.doOnNextLayout import androidx.core.view.isVisible -import com.airbnb.lottie.SimpleColorFilter import com.google.android.material.imageview.ShapeableImageView import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.conversation.colors.ChatColors @@ -120,6 +117,12 @@ class StoryTextPostView @JvmOverloads constructor( setText( state.body.ifEmpty { context.getString(R.string.TextStoryPostCreationFragment__tap_to_add_text) + }.let { + if (state.textFont.isAllCaps) { + it.toString().toUpperCase(Locale.getDefault()) + } else { + it + } }, state.body.isEmpty() ) @@ -137,13 +140,20 @@ class StoryTextPostView @JvmOverloads constructor( textAlignment = TextAlignment.CENTER + val font = TextFont.fromStyle(storyTextPost.style) setPostBackground(ChatColors.forChatColor(ChatColors.Id.NotSet, storyTextPost.background).chatBubbleMask) - setText(storyTextPost.body, false) + + if (font.isAllCaps) { + setText(storyTextPost.body.toUpperCase(Locale.getDefault()), false) + } else { + setText(storyTextPost.body, false) + } + setTextColor(storyTextPost.textForegroundColor) setTextBackgroundColor(storyTextPost.textBackgroundColor) setTextGravity(TextAlignment.CENTER) - when (val fontResult = Fonts.resolveFont(context, Locale.getDefault(), TextFont.fromStyle(storyTextPost.style))) { + when (val fontResult = Fonts.resolveFont(context, Locale.getDefault(), font)) { is Fonts.FontResult.Immediate -> setTypeface(fontResult.typeface) is Fonts.FontResult.Async -> setTypeface(fontResult.future.get()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextView.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextView.kt index 9419ca255..dded60060 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextView.kt @@ -4,7 +4,6 @@ import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint -import android.graphics.Rect import android.graphics.RectF import android.util.AttributeSet import androidx.annotation.ColorInt @@ -12,7 +11,8 @@ import org.signal.core.util.DimensionUnit import org.thoughtcrime.securesms.components.emoji.EmojiTextView class StoryTextView @JvmOverloads constructor( - context: Context, attrs: AttributeSet? = null + context: Context, + attrs: AttributeSet? = null ) : EmojiTextView(context, attrs) { private val textBounds: RectF = RectF() @@ -55,4 +55,4 @@ class StoryTextView @JvmOverloads constructor( super.onDraw(canvas) } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt index 8360faf7b..83e4654fb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt @@ -34,11 +34,14 @@ class MyStoriesFragment : DSLSettingsFragment( override fun bindAdapter(adapter: DSLSettingsAdapter) { MyStoriesItem.register(adapter) - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - requireActivity().finish() + requireActivity().onBackPressedDispatcher.addCallback( + viewLifecycleOwner, + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + requireActivity().finish() + } } - }) + ) lifecycleDisposable.bindTo(viewLifecycleOwner) viewModel.state.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt index 52ba73229..b89cb5732 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt @@ -706,7 +706,7 @@ class StoryViewerPageFragment : sharedViewModel.setIsChildScrolling(isXMagnitudeGreaterThanYMagnitude || isFirstAndHasYTranslationOrNegativeY) if (isFirstStory) { val delta = max(0f, (e2.rawY - e1.rawY)) / 3f - val percent = INTERPOLATOR.getInterpolation(delta/maxSlide) + val percent = INTERPOLATOR.getInterpolation(delta / maxSlide) val distance = maxSlide * percent viewToTranslate.animate().cancel()