From ca468047efbb453830f20928856c7d2b8493a6f8 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 26 Jan 2023 15:56:57 -0500 Subject: [PATCH] Adjust media caption height, fix rail visibility. --- .../mediapreview/MediaPreviewV2Fragment.kt | 7 +++- .../caption/ExpandingCaptionView.kt | 36 +++++++++++-------- .../res/layout/fragment_media_preview_v2.xml | 1 + 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt index 437e3a5c09..5f7a993bfa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt @@ -337,7 +337,12 @@ class MediaPreviewV2Fragment : LoggingFragment(R.layout.fragment_media_preview_v albumRail.alpha = 0f } val railItems = albumThumbnailMedia.map { MediaRailAdapter.MediaRailItem(it, it.uri == currentItem.attachment?.uri) } - albumRailAdapter.submitList(railItems) { albumRail.post { scrollAlbumRailToCurrentAdapterPosition(!firstRailDisplay) } } + albumRailAdapter.submitList(railItems) { + albumRail.post { + scrollAlbumRailToCurrentAdapterPosition(!firstRailDisplay) + crossfadeViewIn(albumRail) + } + } } else { albumRail.visibility = View.GONE albumRailAdapter.submitList(emptyList()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/caption/ExpandingCaptionView.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/caption/ExpandingCaptionView.kt index bdfbe822ea..2f47f45b2c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/caption/ExpandingCaptionView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/caption/ExpandingCaptionView.kt @@ -5,7 +5,6 @@ import android.text.method.ScrollingMovementMethod import android.util.AttributeSet import android.view.ViewGroup import androidx.core.view.updateLayoutParams -import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.emoji.EmojiTextView @@ -23,40 +22,49 @@ class ExpandingCaptionView @JvmOverloads constructor( set(value) { field = value expanded = false - updateExpansionState() + updateExpansionState(expanded) } init { setOnClickListener { toggleExpansion() } } - fun toggleExpansion() { - expanded = !expanded - updateExpansionState() + private fun toggleExpansion() { + expanded = if (isExpandable()) { + !expanded + } else { + false + } + updateExpansionState(expanded) } - private fun updateExpansionState() { - if (expanded) { - Log.d(TAG, "The view should be expanded now.") + private fun updateExpansionState(expand: Boolean) { + if (expand) { text = fullCaptionText movementMethod = ScrollingMovementMethod() scrollTo(0, 0) updateLayoutParams { height = expandedHeight } } else { - Log.d(TAG, "The view should be collapsed now.") - text = if (fullCaptionText.length <= CHAR_LIMIT_MESSAGE_PREVIEW) { - fullCaptionText - } else { + text = if (isExpandable()) { context.getString(R.string.MediaPreviewFragment_see_more, fullCaptionText.substring(0, CHAR_LIMIT_MESSAGE_PREVIEW)) + } else { + fullCaptionText } movementMethod = null updateLayoutParams { height = ViewGroup.LayoutParams.WRAP_CONTENT } } - setOnClickListener { toggleExpansion() } + if (isExpandable()) { + setOnClickListener { toggleExpansion() } + } else { + setOnClickListener(null) + } + } + + private fun isExpandable(): Boolean { + return fullCaptionText.length > CHAR_LIMIT_MESSAGE_PREVIEW } companion object { - private val TAG = Log.tag(ExpandingCaptionView::class.java) const val CHAR_LIMIT_MESSAGE_PREVIEW = 280 } } diff --git a/app/src/main/res/layout/fragment_media_preview_v2.xml b/app/src/main/res/layout/fragment_media_preview_v2.xml index a619a737c7..6e8a758896 100644 --- a/app/src/main/res/layout/fragment_media_preview_v2.xml +++ b/app/src/main/res/layout/fragment_media_preview_v2.xml @@ -33,6 +33,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="bottom" + android:paddingTop="16dp" android:paddingStart="16dp" android:paddingEnd="16dp" android:paddingBottom="8dp"