You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/main/java/org/mozilla/fenix/tabstray/TraySheetBehaviorCallback.kt

45 lines
1.6 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.tabstray
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_HIDDEN
class TraySheetBehaviorCallback(
private val behavior: BottomSheetBehavior<ConstraintLayout>,
private val trayInteractor: NavigationInteractor
) : BottomSheetBehavior.BottomSheetCallback() {
override fun onStateChanged(bottomSheet: View, newState: Int) {
if (newState == STATE_HIDDEN) {
trayInteractor.onTabTrayDismissed()
} else if (newState == BottomSheetBehavior.STATE_HALF_EXPANDED) {
// We only support expanded and collapsed states.
// But why??
behavior.state = STATE_HIDDEN
}
}
override fun onSlide(bottomSheet: View, slideOffset: Float) = Unit
}
fun BottomSheetBehavior<ConstraintLayout>.setUpTrayBehavior(
isLandscape: Boolean,
maxNumberOfTabs: Int,
numberForExpandingTray: Int,
navigationInteractor: DefaultNavigationInteractor
) {
addBottomSheetCallback(
TraySheetBehaviorCallback(this, navigationInteractor)
)
state = if (isLandscape || maxNumberOfTabs >= numberForExpandingTray) {
BottomSheetBehavior.STATE_EXPANDED
} else {
BottomSheetBehavior.STATE_COLLAPSED
}
}