mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-05-08 09:18:39 +01:00
Add GiphyMp4 controller to V2 Conversation Fragment.
This commit is contained in:
committed by
Cody Henthorne
parent
bd8060e533
commit
d079f85eca
@@ -48,6 +48,11 @@ import org.thoughtcrime.securesms.database.model.InMemoryMessageRecord
|
|||||||
import org.thoughtcrime.securesms.database.model.MessageRecord
|
import org.thoughtcrime.securesms.database.model.MessageRecord
|
||||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
||||||
import org.thoughtcrime.securesms.databinding.V2ConversationFragmentBinding
|
import org.thoughtcrime.securesms.databinding.V2ConversationFragmentBinding
|
||||||
|
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ItemDecoration
|
||||||
|
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4PlaybackController
|
||||||
|
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4PlaybackPolicy
|
||||||
|
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionPlayerHolder
|
||||||
|
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionRecycler
|
||||||
import org.thoughtcrime.securesms.groups.GroupId
|
import org.thoughtcrime.securesms.groups.GroupId
|
||||||
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange
|
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange
|
||||||
import org.thoughtcrime.securesms.invites.InviteActions
|
import org.thoughtcrime.securesms.invites.InviteActions
|
||||||
@@ -178,6 +183,7 @@ class ConversationFragment : LoggingFragment(R.layout.v2_conversation_fragment)
|
|||||||
adapter.setPagingController(viewModel.pagingController)
|
adapter.setPagingController(viewModel.pagingController)
|
||||||
viewLifecycleOwner.lifecycle.addObserver(LastSeenPositionUpdater(adapter, layoutManager, viewModel))
|
viewLifecycleOwner.lifecycle.addObserver(LastSeenPositionUpdater(adapter, layoutManager, viewModel))
|
||||||
binding.conversationItemRecycler.adapter = adapter
|
binding.conversationItemRecycler.adapter = adapter
|
||||||
|
initializeGiphyMp4()
|
||||||
|
|
||||||
binding.conversationItemRecycler.addItemDecoration(
|
binding.conversationItemRecycler.addItemDecoration(
|
||||||
MultiselectItemDecoration(
|
MultiselectItemDecoration(
|
||||||
@@ -292,6 +298,24 @@ class ConversationFragment : LoggingFragment(R.layout.v2_conversation_fragment)
|
|||||||
|
|
||||||
private fun getVoiceNoteMediaController() = requireListener<VoiceNoteMediaControllerOwner>().voiceNoteMediaController
|
private fun getVoiceNoteMediaController() = requireListener<VoiceNoteMediaControllerOwner>().voiceNoteMediaController
|
||||||
|
|
||||||
|
private fun initializeGiphyMp4(): GiphyMp4ProjectionRecycler {
|
||||||
|
val maxPlayback = GiphyMp4PlaybackPolicy.maxSimultaneousPlaybackInConversation()
|
||||||
|
val holders = GiphyMp4ProjectionPlayerHolder.injectVideoViews(
|
||||||
|
requireContext(),
|
||||||
|
viewLifecycleOwner.lifecycle,
|
||||||
|
binding.conversationVideoContainer,
|
||||||
|
maxPlayback
|
||||||
|
)
|
||||||
|
|
||||||
|
val callback = GiphyMp4ProjectionRecycler(holders)
|
||||||
|
GiphyMp4PlaybackController.attach(binding.conversationItemRecycler, callback, maxPlayback)
|
||||||
|
binding.conversationItemRecycler.addItemDecoration(GiphyMp4ItemDecoration(callback) { translationY: Float ->
|
||||||
|
// TODO [alex] reactionsShade.setTranslationY(translationY + list.getHeight())
|
||||||
|
}, 0)
|
||||||
|
return callback
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private inner class ConversationItemClickListener : ConversationAdapter.ItemClickListener {
|
private inner class ConversationItemClickListener : ConversationAdapter.ItemClickListener {
|
||||||
override fun onQuoteClicked(messageRecord: MmsMessageRecord?) {
|
override fun onQuoteClicked(messageRecord: MmsMessageRecord?) {
|
||||||
// TODO [alex] - ("Not yet implemented")
|
// TODO [alex] - ("Not yet implemented")
|
||||||
|
|||||||
@@ -5,6 +5,15 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/conversation_video_container"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/conversation_item_recycler"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/conversation_item_recycler"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/conversation_item_recycler"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/conversation_item_recycler" />
|
||||||
|
|
||||||
<include layout="@layout/system_ui_guidelines" />
|
<include layout="@layout/system_ui_guidelines" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|||||||
Reference in New Issue
Block a user