Fix capitalization retention for text stories.

fork-5.53.8
Alex Hart 2022-03-23 12:50:32 -03:00 zatwierdzone przez Greyson Parrelli
rodzic 2b3f16d3ad
commit 954e45ed97
5 zmienionych plików z 31 dodań i 16 usunięć

Wyświetl plik

@ -100,11 +100,13 @@ class ScaleTransition : Transition {
end.view.scaleX = (startWidth / endWidth) * startScaleX end.view.scaleX = (startWidth / endWidth) * startScaleX
end.view.scaleY = (startHeight / endHeight) * startScaleY end.view.scaleY = (startHeight / endHeight) * startScaleY
return ObjectAnimator.ofPropertyValuesHolder(end.view, return ObjectAnimator.ofPropertyValuesHolder(
end.view,
ofFloat(View.TRANSLATION_X, 0f), ofFloat(View.TRANSLATION_X, 0f),
ofFloat(View.TRANSLATION_Y, 0f), ofFloat(View.TRANSLATION_Y, 0f),
ofFloat(View.SCALE_X, 1f), ofFloat(View.SCALE_X, 1f),
ofFloat(View.SCALE_Y, 1f)).apply { ofFloat(View.SCALE_Y, 1f)
).apply {
addListener(object : AnimatorListenerAdapter() { addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) { override fun onAnimationEnd(animation: Animator?) {
resetValues(start.view) resetValues(start.view)
@ -113,4 +115,4 @@ class ScaleTransition : Transition {
}) })
} }
} }
} }

Wyświetl plik

@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.stories package org.thoughtcrime.securesms.stories
import android.content.Context import android.content.Context
import android.graphics.Color
import android.graphics.Typeface import android.graphics.Typeface
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.util.AttributeSet import android.util.AttributeSet
@ -10,11 +9,9 @@ import android.view.View
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.annotation.Px import androidx.annotation.Px
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.content.res.AppCompatResources
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.doOnNextLayout import androidx.core.view.doOnNextLayout
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.airbnb.lottie.SimpleColorFilter
import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.imageview.ShapeableImageView
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.conversation.colors.ChatColors import org.thoughtcrime.securesms.conversation.colors.ChatColors
@ -120,6 +117,12 @@ class StoryTextPostView @JvmOverloads constructor(
setText( setText(
state.body.ifEmpty { state.body.ifEmpty {
context.getString(R.string.TextStoryPostCreationFragment__tap_to_add_text) context.getString(R.string.TextStoryPostCreationFragment__tap_to_add_text)
}.let {
if (state.textFont.isAllCaps) {
it.toString().toUpperCase(Locale.getDefault())
} else {
it
}
}, },
state.body.isEmpty() state.body.isEmpty()
) )
@ -137,13 +140,20 @@ class StoryTextPostView @JvmOverloads constructor(
textAlignment = TextAlignment.CENTER textAlignment = TextAlignment.CENTER
val font = TextFont.fromStyle(storyTextPost.style)
setPostBackground(ChatColors.forChatColor(ChatColors.Id.NotSet, storyTextPost.background).chatBubbleMask) 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) setTextColor(storyTextPost.textForegroundColor)
setTextBackgroundColor(storyTextPost.textBackgroundColor) setTextBackgroundColor(storyTextPost.textBackgroundColor)
setTextGravity(TextAlignment.CENTER) 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.Immediate -> setTypeface(fontResult.typeface)
is Fonts.FontResult.Async -> setTypeface(fontResult.future.get()) is Fonts.FontResult.Async -> setTypeface(fontResult.future.get())
} }

Wyświetl plik

@ -4,7 +4,6 @@ import android.content.Context
import android.graphics.Canvas import android.graphics.Canvas
import android.graphics.Color import android.graphics.Color
import android.graphics.Paint import android.graphics.Paint
import android.graphics.Rect
import android.graphics.RectF import android.graphics.RectF
import android.util.AttributeSet import android.util.AttributeSet
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
@ -12,7 +11,8 @@ import org.signal.core.util.DimensionUnit
import org.thoughtcrime.securesms.components.emoji.EmojiTextView import org.thoughtcrime.securesms.components.emoji.EmojiTextView
class StoryTextView @JvmOverloads constructor( class StoryTextView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null context: Context,
attrs: AttributeSet? = null
) : EmojiTextView(context, attrs) { ) : EmojiTextView(context, attrs) {
private val textBounds: RectF = RectF() private val textBounds: RectF = RectF()
@ -55,4 +55,4 @@ class StoryTextView @JvmOverloads constructor(
super.onDraw(canvas) super.onDraw(canvas)
} }
} }

Wyświetl plik

@ -34,11 +34,14 @@ class MyStoriesFragment : DSLSettingsFragment(
override fun bindAdapter(adapter: DSLSettingsAdapter) { override fun bindAdapter(adapter: DSLSettingsAdapter) {
MyStoriesItem.register(adapter) MyStoriesItem.register(adapter)
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) { requireActivity().onBackPressedDispatcher.addCallback(
override fun handleOnBackPressed() { viewLifecycleOwner,
requireActivity().finish() object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
requireActivity().finish()
}
} }
}) )
lifecycleDisposable.bindTo(viewLifecycleOwner) lifecycleDisposable.bindTo(viewLifecycleOwner)
viewModel.state.observe(viewLifecycleOwner) { viewModel.state.observe(viewLifecycleOwner) {

Wyświetl plik

@ -706,7 +706,7 @@ class StoryViewerPageFragment :
sharedViewModel.setIsChildScrolling(isXMagnitudeGreaterThanYMagnitude || isFirstAndHasYTranslationOrNegativeY) sharedViewModel.setIsChildScrolling(isXMagnitudeGreaterThanYMagnitude || isFirstAndHasYTranslationOrNegativeY)
if (isFirstStory) { if (isFirstStory) {
val delta = max(0f, (e2.rawY - e1.rawY)) / 3f 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 val distance = maxSlide * percent
viewToTranslate.animate().cancel() viewToTranslate.animate().cancel()