Fix details activity tabs

master
Koitharu 2 years ago
parent 61b5b8aa73
commit c80dc08d6c
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -8,12 +8,15 @@ import androidx.activity.OnBackPressedCallback
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.tabs.TabLayout
import org.koitharu.kotatsu.core.ui.util.ActionModeListener import org.koitharu.kotatsu.core.ui.util.ActionModeListener
import org.koitharu.kotatsu.core.util.ext.doOnExpansionsChanged import org.koitharu.kotatsu.core.util.ext.doOnExpansionsChanged
import org.koitharu.kotatsu.core.util.ext.setTabsEnabled
class ChaptersBottomSheetMediator( class ChaptersBottomSheetMediator(
private val behavior: BottomSheetBehavior<*>, private val behavior: BottomSheetBehavior<*>,
private val pager: ViewPager2, private val pager: ViewPager2,
private val tabLayout: TabLayout,
) : OnBackPressedCallback(false), ) : OnBackPressedCallback(false),
ActionModeListener, ActionModeListener,
OnLayoutChangeListener, View.OnGenericMotionListener { OnLayoutChangeListener, View.OnGenericMotionListener {
@ -75,8 +78,7 @@ class ChaptersBottomSheetMediator(
fun lock() { fun lock() {
lockCounter++ lockCounter++
behavior.isDraggable = lockCounter <= 0 updateLock()
pager.isUserInputEnabled = lockCounter <= 0
} }
fun unlock() { fun unlock() {
@ -84,7 +86,12 @@ class ChaptersBottomSheetMediator(
if (lockCounter < 0) { if (lockCounter < 0) {
lockCounter = 0 lockCounter = 0
} }
updateLock()
}
private fun updateLock() {
behavior.isDraggable = lockCounter <= 0 behavior.isDraggable = lockCounter <= 0
pager.isUserInputEnabled = lockCounter <= 0 pager.isUserInputEnabled = lockCounter <= 0
tabLayout.setTabsEnabled(lockCounter <= 0)
} }
} }

@ -107,7 +107,7 @@ class DetailsActivity :
if (viewBinding.layoutBottom != null) { if (viewBinding.layoutBottom != null) {
val behavior = BottomSheetBehavior.from(checkNotNull(viewBinding.layoutBottom)) val behavior = BottomSheetBehavior.from(checkNotNull(viewBinding.layoutBottom))
val bsMediator = ChaptersBottomSheetMediator(behavior, viewBinding.pager) val bsMediator = ChaptersBottomSheetMediator(behavior, viewBinding.pager, viewBinding.tabs)
actionModeDelegate.addListener(bsMediator) actionModeDelegate.addListener(bsMediator)
checkNotNull(viewBinding.layoutBsHeader).addOnLayoutChangeListener(bsMediator) checkNotNull(viewBinding.layoutBsHeader).addOnLayoutChangeListener(bsMediator)
onBackPressedDispatcher.addCallback(bsMediator) onBackPressedDispatcher.addCallback(bsMediator)

Loading…
Cancel
Save