Fix back button behaviour

This commit is contained in:
tomaThomas 2024-12-07 11:27:20 +01:00
parent 4e5ff47324
commit e80082d5a8
No known key found for this signature in database
GPG key ID: DEE963DC84059108
2 changed files with 17 additions and 11 deletions

View file

@ -117,9 +117,6 @@ class MainActivity : AbsCastActivity() {
}
}
override fun onSupportNavigateUp(): Boolean =
findNavController(R.id.fragment_container).navigateUp()
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
val expand = intent?.extra<Boolean>(EXPAND_PANEL)?.value ?: false

View file

@ -33,6 +33,7 @@ import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.commit
import androidx.navigation.fragment.NavHostFragment
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.ADAPTIVE_COLOR_APP
import code.name.monkey.retromusic.ALBUM_COVER_STYLE
@ -132,6 +133,8 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
private val panelState: Int
get() = bottomSheetBehavior.state
private var panelStateBefore: Int? = null
private var panelStateCurrent: Int? = null
private lateinit var binding: SlidingMusicPanelLayoutBinding
private var isInOneTabMode = false
@ -140,10 +143,13 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
println("Handle back press ${bottomSheetBehavior.state}")
if (!handleBackPress()) {
remove()
onBackPressedDispatcher.onBackPressed()
if (handleBackPress()) {
return
}
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment
if (!navHostFragment.navController.navigateUp()) {
finish()
}
}
}
@ -164,7 +170,10 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
}
override fun onStateChanged(bottomSheet: View, newState: Int) {
onBackPressedCallback.isEnabled = newState == STATE_EXPANDED
if (panelStateCurrent != null) {
panelStateBefore = panelStateCurrent
}
panelStateCurrent = newState
when (newState) {
STATE_EXPANDED -> {
onPanelExpanded()
@ -224,7 +233,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
navigationBarColor = surfaceColor()
onBackPressedDispatcher.addCallback(onBackPressedCallback)
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
private fun setupBottomSheet() {
@ -276,7 +285,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
ALBUM_COVER_TRANSFORM, CAROUSEL_EFFECT,
ALBUM_COVER_STYLE, TOGGLE_VOLUME, EXTRA_SONG_INFO, CIRCLE_PLAY_BUTTON,
-> {
-> {
chooseFragmentForTheme()
onServiceConnected()
}
@ -408,7 +417,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
}
private fun handleBackPress(): Boolean {
if (panelState == STATE_EXPANDED) {
if (panelState == STATE_EXPANDED || (panelState == STATE_SETTLING && panelStateBefore != STATE_EXPANDED)) {
collapsePanel()
return true
}