mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 00:59:49 +01:00
Prepare conversation fragment navigation for two-pane conversation settings.
This commit is contained in:
committed by
Cody Henthorne
parent
78d3db319c
commit
72cbe61f6c
@@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.components.settings.conversation
|
||||
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme
|
||||
|
||||
class CallInfoActivity : ConversationSettingsActivity(), ConversationSettingsFragment.Callback {
|
||||
class CallInfoActivity : ConversationSettingsActivity(), ConversationSettingsFragment.TransitionCallback {
|
||||
|
||||
override val dynamicTheme: DynamicTheme = DynamicNoActionBarTheme()
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.app.ActivityOptionsCompat
|
||||
import androidx.core.util.Pair
|
||||
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.settings.DSLSettingsActivity
|
||||
@@ -17,7 +16,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.util.DynamicConversationSettingsTheme
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme
|
||||
|
||||
open class ConversationSettingsActivity : DSLSettingsActivity(), ConversationSettingsFragment.Callback {
|
||||
open class ConversationSettingsActivity : DSLSettingsActivity(), ConversationSettingsFragment.TransitionCallback {
|
||||
|
||||
override val dynamicTheme: DynamicTheme = DynamicConversationSettingsTheme()
|
||||
|
||||
@@ -27,7 +26,7 @@ open class ConversationSettingsActivity : DSLSettingsActivity(), ConversationSet
|
||||
super.onCreate(savedInstanceState, ready)
|
||||
}
|
||||
|
||||
override fun onContentWillRender() {
|
||||
override fun onReadyForEnterTransition() {
|
||||
ActivityCompat.startPostponedEnterTransition(this)
|
||||
}
|
||||
|
||||
|
||||
@@ -120,6 +120,11 @@ private const val REQUEST_CODE_ADD_CONTACT = 2
|
||||
private const val REQUEST_CODE_ADD_MEMBERS_TO_GROUP = 3
|
||||
private const val REQUEST_CODE_RETURN_FROM_MEDIA = 4
|
||||
|
||||
/**
|
||||
* Settings screen for a conversation.
|
||||
*
|
||||
* Hosts that want shared element enter transitions should implement [TransitionCallback].
|
||||
*/
|
||||
class ConversationSettingsFragment :
|
||||
DSLSettingsFragment(
|
||||
layoutId = R.layout.conversation_settings_fragment,
|
||||
@@ -156,7 +161,7 @@ class ConversationSettingsFragment :
|
||||
}
|
||||
)
|
||||
|
||||
private lateinit var callback: Callback
|
||||
private var transitionCallback: TransitionCallback? = null
|
||||
|
||||
private lateinit var toolbar: Toolbar
|
||||
private lateinit var toolbarAvatarContainer: FrameLayout
|
||||
@@ -172,8 +177,7 @@ class ConversationSettingsFragment :
|
||||
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
|
||||
callback = context as Callback
|
||||
transitionCallback = context as? TransitionCallback
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
@@ -300,7 +304,7 @@ class ConversationSettingsFragment :
|
||||
adapter.submitList(getConfiguration(state).toMappingModelList()) {
|
||||
if (state.isLoaded) {
|
||||
(view?.parent as? ViewGroup)?.doOnPreDraw {
|
||||
callback.onContentWillRender()
|
||||
transitionCallback?.onReadyForEnterTransition()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1136,7 +1140,13 @@ class ConversationSettingsFragment :
|
||||
}
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
fun onContentWillRender()
|
||||
/**
|
||||
* Implemented by hosts that postpone enter transitions (for example, shared element flows).
|
||||
*
|
||||
* Called when this fragment has loaded enough UI state to safely run the postponed enter
|
||||
* transition.
|
||||
*/
|
||||
interface TransitionCallback {
|
||||
fun onReadyForEnterTransition()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user