diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt index ed46fa96d..8aafaaed1 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt @@ -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) } } diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt index 9a0e4644a..b9f3c6911 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt @@ -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) diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkFolderViewHolder.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkFolderViewHolder.kt index ff81425ff..5941dc4da 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkFolderViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkFolderViewHolder.kt @@ -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 diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkItemViewHolder.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkItemViewHolder.kt index 23aab9ca0..6ef5f87a3 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkItemViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkItemViewHolder.kt @@ -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 diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkNodeViewHolder.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkNodeViewHolder.kt index a8bf8c4c3..9e6d7caee 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkNodeViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkNodeViewHolder.kt @@ -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) { containerView.setSelectionInteractor(item, selectionHolder, interactor) diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkSeparatorViewHolder.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkSeparatorViewHolder.kt index 49e5faff8..daafbf0ba 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkSeparatorViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkSeparatorViewHolder.kt @@ -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)