For #13251 - Use bottomSheetCallback in multiselect mode
parent
1e223a8a53
commit
54c24016ba
|
@ -45,6 +45,7 @@ import org.mozilla.fenix.components.toolbar.TabCounter.Companion.SO_MANY_TABS_OP
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
import org.mozilla.fenix.ext.settings
|
import org.mozilla.fenix.ext.settings
|
||||||
import org.mozilla.fenix.tabtray.SaveToCollectionsButtonAdapter.MultiselectModeChange
|
import org.mozilla.fenix.tabtray.SaveToCollectionsButtonAdapter.MultiselectModeChange
|
||||||
|
import org.mozilla.fenix.tabtray.TabTrayDialogFragmentState.Mode
|
||||||
import java.text.NumberFormat
|
import java.text.NumberFormat
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -75,7 +76,6 @@ class TabTrayView(
|
||||||
private val tabTrayItemMenu: TabTrayItemMenu
|
private val tabTrayItemMenu: TabTrayItemMenu
|
||||||
private var menu: BrowserMenu? = null
|
private var menu: BrowserMenu? = null
|
||||||
|
|
||||||
private val bottomSheetCallback: BottomSheetBehavior.BottomSheetCallback
|
|
||||||
private var tabsTouchHelper: TabsTouchHelper
|
private var tabsTouchHelper: TabsTouchHelper
|
||||||
private val collectionsButtonAdapter = SaveToCollectionsButtonAdapter(interactor, isPrivate)
|
private val collectionsButtonAdapter = SaveToCollectionsButtonAdapter(interactor, isPrivate)
|
||||||
|
|
||||||
|
@ -89,9 +89,9 @@ class TabTrayView(
|
||||||
|
|
||||||
toggleFabText(isPrivate)
|
toggleFabText(isPrivate)
|
||||||
|
|
||||||
bottomSheetCallback = object : BottomSheetBehavior.BottomSheetCallback() {
|
behavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
|
||||||
override fun onSlide(bottomSheet: View, slideOffset: Float) {
|
override fun onSlide(bottomSheet: View, slideOffset: Float) {
|
||||||
if (!hasAccessibilityEnabled) {
|
if (interactor.onModeRequested() is Mode.Normal && !hasAccessibilityEnabled) {
|
||||||
if (slideOffset >= SLIDE_OFFSET) {
|
if (slideOffset >= SLIDE_OFFSET) {
|
||||||
fabView.new_tab_button.show()
|
fabView.new_tab_button.show()
|
||||||
} else {
|
} else {
|
||||||
|
@ -106,9 +106,7 @@ class TabTrayView(
|
||||||
interactor.onTabTrayDismissed()
|
interactor.onTabTrayDismissed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
behavior.addBottomSheetCallback(bottomSheetCallback)
|
|
||||||
|
|
||||||
val selectedTabIndex = if (!isPrivate) {
|
val selectedTabIndex = if (!isPrivate) {
|
||||||
DEFAULT_TAB_ID
|
DEFAULT_TAB_ID
|
||||||
|
@ -275,17 +273,17 @@ class TabTrayView(
|
||||||
override fun onTabUnselected(tab: TabLayout.Tab?) { /*noop*/
|
override fun onTabUnselected(tab: TabLayout.Tab?) { /*noop*/
|
||||||
}
|
}
|
||||||
|
|
||||||
var mode: TabTrayDialogFragmentState.Mode = TabTrayDialogFragmentState.Mode.Normal
|
var mode: Mode = Mode.Normal
|
||||||
private set
|
private set
|
||||||
|
|
||||||
fun updateState(state: TabTrayDialogFragmentState) {
|
fun updateState(state: TabTrayDialogFragmentState) {
|
||||||
val oldMode = mode
|
val oldMode = mode
|
||||||
|
|
||||||
if (oldMode::class != state.mode::class) {
|
if (oldMode::class != state.mode::class) {
|
||||||
updateTabsForMultiselectModeChanged(state.mode is TabTrayDialogFragmentState.Mode.MultiSelect)
|
updateTabsForMultiselectModeChanged(state.mode is Mode.MultiSelect)
|
||||||
if (view.context.settings().accessibilityServicesEnabled) {
|
if (view.context.settings().accessibilityServicesEnabled) {
|
||||||
view.announceForAccessibility(
|
view.announceForAccessibility(
|
||||||
if (state.mode == TabTrayDialogFragmentState.Mode.Normal) view.context.getString(
|
if (state.mode == Mode.Normal) view.context.getString(
|
||||||
R.string.tab_tray_exit_multiselect_content_description
|
R.string.tab_tray_exit_multiselect_content_description
|
||||||
) else view.context.getString(R.string.tab_tray_enter_multiselect_content_description)
|
) else view.context.getString(R.string.tab_tray_enter_multiselect_content_description)
|
||||||
)
|
)
|
||||||
|
@ -294,20 +292,18 @@ class TabTrayView(
|
||||||
|
|
||||||
mode = state.mode
|
mode = state.mode
|
||||||
when (state.mode) {
|
when (state.mode) {
|
||||||
TabTrayDialogFragmentState.Mode.Normal -> {
|
Mode.Normal -> {
|
||||||
view.tabsTray.apply {
|
view.tabsTray.apply {
|
||||||
tabsTouchHelper.attachToRecyclerView(this)
|
tabsTouchHelper.attachToRecyclerView(this)
|
||||||
}
|
}
|
||||||
behavior.addBottomSheetCallback(bottomSheetCallback)
|
|
||||||
|
|
||||||
toggleUIMultiselect(multiselect = false)
|
toggleUIMultiselect(multiselect = false)
|
||||||
|
|
||||||
updateUINormalMode(state.browserState)
|
updateUINormalMode(state.browserState)
|
||||||
}
|
}
|
||||||
is TabTrayDialogFragmentState.Mode.MultiSelect -> {
|
is Mode.MultiSelect -> {
|
||||||
// Disable swipe to delete while in multiselect
|
// Disable swipe to delete while in multiselect
|
||||||
tabsTouchHelper.attachToRecyclerView(null)
|
tabsTouchHelper.attachToRecyclerView(null)
|
||||||
behavior.removeBottomSheetCallback(bottomSheetCallback)
|
|
||||||
|
|
||||||
toggleUIMultiselect(multiselect = true)
|
toggleUIMultiselect(multiselect = true)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue