1
0
Fork 0

For #13301, #13038: hide overflow menu for all bookmark items in selected mode

master
ankur 2020-08-04 23:58:40 +05:30 committed by Jeff Boek
parent 25cd1dbac2
commit dd5bb94f8c
6 changed files with 32 additions and 11 deletions

View File

@ -91,7 +91,7 @@ class BookmarkAdapter(val emptyView: View, val interactor: BookmarkViewInteracto
override fun getItemCount(): Int = tree.size
override fun onBindViewHolder(holder: BookmarkNodeViewHolder, position: Int) {
holder.bind(tree[position])
holder.bind(tree[position], mode)
}
}

View File

@ -139,6 +139,7 @@ class BookmarkView(
}
fun update(state: BookmarkFragmentState) {
val oldMode = mode
tree = state.tree
if (state.mode != mode) {
mode = state.mode
@ -148,6 +149,10 @@ class BookmarkView(
}
bookmarkAdapter.updateData(state.tree, mode)
if (state.mode != oldMode) {
bookmarkAdapter.notifyDataSetChanged()
}
when (mode) {
is BookmarkFragmentState.Mode.Normal -> {
setUiForNormalMode(state.tree)

View File

@ -13,6 +13,7 @@ import org.mozilla.fenix.ext.hideAndDisable
import org.mozilla.fenix.ext.showAndEnable
import org.mozilla.fenix.library.LibrarySiteItemView
import org.mozilla.fenix.library.SelectionHolder
import org.mozilla.fenix.library.bookmarks.BookmarkFragmentState
import org.mozilla.fenix.library.bookmarks.BookmarkViewInteractor
import org.mozilla.fenix.library.bookmarks.inRoots
@ -27,7 +28,10 @@ class BookmarkFolderViewHolder(
override var item: BookmarkNode? = null
override fun bind(item: BookmarkNode) {
override fun bind(
item: BookmarkNode,
mode: BookmarkFragmentState.Mode
) {
this.item = item
containerView.displayAs(LibrarySiteItemView.ItemType.FOLDER)
@ -36,10 +40,10 @@ class BookmarkFolderViewHolder(
if (!item.inRoots()) {
setupMenu(item)
if (selectionHolder.selectedItems.isEmpty()) {
containerView.overflowView.showAndEnable()
} else {
if (mode is BookmarkFragmentState.Mode.Selecting) {
containerView.overflowView.hideAndDisable()
} else {
containerView.overflowView.showAndEnable()
}
} else {
containerView.overflowView.visibility = View.GONE

View File

@ -9,6 +9,7 @@ import org.mozilla.fenix.ext.hideAndDisable
import org.mozilla.fenix.ext.showAndEnable
import org.mozilla.fenix.library.LibrarySiteItemView
import org.mozilla.fenix.library.SelectionHolder
import org.mozilla.fenix.library.bookmarks.BookmarkFragmentState
import org.mozilla.fenix.library.bookmarks.BookmarkViewInteractor
/**
@ -22,15 +23,18 @@ class BookmarkItemViewHolder(
override var item: BookmarkNode? = null
override fun bind(item: BookmarkNode) {
override fun bind(
item: BookmarkNode,
mode: BookmarkFragmentState.Mode
) {
this.item = item
containerView.displayAs(LibrarySiteItemView.ItemType.SITE)
if (selectionHolder.selectedItems.isEmpty()) {
containerView.overflowView.showAndEnable()
} else {
if (mode is BookmarkFragmentState.Mode.Selecting) {
containerView.overflowView.hideAndDisable()
} else {
containerView.overflowView.showAndEnable()
}
setupMenu(item)
containerView.titleView.text = if (item.title.isNullOrBlank()) item.url else item.title

View File

@ -9,6 +9,7 @@ import kotlinx.android.extensions.LayoutContainer
import mozilla.components.concept.storage.BookmarkNode
import org.mozilla.fenix.library.LibrarySiteItemView
import org.mozilla.fenix.library.SelectionHolder
import org.mozilla.fenix.library.bookmarks.BookmarkFragmentState
import org.mozilla.fenix.library.bookmarks.BookmarkItemMenu
import org.mozilla.fenix.library.bookmarks.BookmarkViewInteractor
@ -22,7 +23,10 @@ abstract class BookmarkNodeViewHolder(
abstract var item: BookmarkNode?
abstract fun bind(item: BookmarkNode)
abstract fun bind(
item: BookmarkNode,
mode: BookmarkFragmentState.Mode
)
protected fun setSelectionListeners(item: BookmarkNode, selectionHolder: SelectionHolder<BookmarkNode>) {
containerView.setSelectionInteractor(item, selectionHolder, interactor)

View File

@ -6,6 +6,7 @@ package org.mozilla.fenix.library.bookmarks.viewholders
import mozilla.components.concept.storage.BookmarkNode
import org.mozilla.fenix.library.LibrarySiteItemView
import org.mozilla.fenix.library.bookmarks.BookmarkFragmentState
import org.mozilla.fenix.library.bookmarks.BookmarkViewInteractor
/**
@ -18,7 +19,10 @@ class BookmarkSeparatorViewHolder(
override var item: BookmarkNode? = null
override fun bind(item: BookmarkNode) {
override fun bind(
item: BookmarkNode,
mode: BookmarkFragmentState.Mode
) {
this.item = item
containerView.displayAs(LibrarySiteItemView.ItemType.SEPARATOR)
setupMenu(item)