pull/600/head
Colin Lee 5 years ago committed by GitHub
parent c032ab8cac
commit 12ccf61230

@ -34,19 +34,19 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
private var tree: List<BookmarkNode> = listOf() private var tree: List<BookmarkNode> = listOf()
private var mode: BookmarkState.Mode = BookmarkState.Mode.Normal private var mode: BookmarkState.Mode = BookmarkState.Mode.Normal
var selected = setOf<BookmarkNode>() val selected: Set<BookmarkNode>
get() = (mode as? BookmarkState.Mode.Selecting)?.selectedItems ?: setOf()
private var isFirstRun = true private var isFirstRun = true
lateinit var job: Job lateinit var job: Job
fun updateData(tree: BookmarkNode?, mode: BookmarkState.Mode) { fun updateData(tree: BookmarkNode?, mode: BookmarkState.Mode) {
this.tree = tree?.children?.filterNotNull() ?: listOf() this.tree = tree?.children ?: listOf()
isFirstRun = if (isFirstRun) false else { isFirstRun = if (isFirstRun) false else {
emptyView.visibility = if (this.tree.isEmpty()) View.VISIBLE else View.GONE emptyView.visibility = if (this.tree.isEmpty()) View.VISIBLE else View.GONE
false false
} }
this.mode = mode this.mode = mode
this.selected = if (mode is BookmarkState.Mode.Selecting) mode.selectedItems else setOf()
notifyDataSetChanged() notifyDataSetChanged()
} }
@ -137,9 +137,9 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
val shiftTwoDp = TypedValue.applyDimension( val shiftTwoDp = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, TWO_DIGIT_MARGIN, containerView!!.context.resources.displayMetrics TypedValue.COMPLEX_UNIT_DIP, TWO_DIGIT_MARGIN, containerView!!.context.resources.displayMetrics
).toInt() ).toInt()
val params = bookmark_title.getLayoutParams() as ViewGroup.MarginLayoutParams val params = bookmark_title.layoutParams as ViewGroup.MarginLayoutParams
params.topMargin = shiftTwoDp params.topMargin = shiftTwoDp
bookmark_title.setLayoutParams(params) bookmark_title.layoutParams = params
bookmark_favicon.visibility = View.VISIBLE bookmark_favicon.visibility = View.VISIBLE
bookmark_title.visibility = View.VISIBLE bookmark_title.visibility = View.VISIBLE

@ -56,6 +56,7 @@ sealed class BookmarkAction : Action {
data class Delete(val item: BookmarkNode) : BookmarkAction() data class Delete(val item: BookmarkNode) : BookmarkAction()
object BackPressed : BookmarkAction() object BackPressed : BookmarkAction()
object SwitchMode : BookmarkAction() object SwitchMode : BookmarkAction()
object DeselectAll : BookmarkAction()
} }
sealed class BookmarkChange : Change { sealed class BookmarkChange : Change {

@ -275,11 +275,10 @@ class BookmarkFragment : Fragment(), CoroutineScope, BackHandler, AccountObserve
} }
} }
is BookmarkAction.SwitchMode -> { is BookmarkAction.SwitchMode -> {
if ((bookmarkComponent.uiView as BookmarkUIView).mode is BookmarkState.Mode.Normal) {
getManagedEmitter<BookmarkChange>().onNext(BookmarkChange.ClearSelection)
}
activity?.invalidateOptionsMenu() activity?.invalidateOptionsMenu()
} }
is BookmarkAction.DeselectAll ->
getManagedEmitter<BookmarkChange>().onNext(BookmarkChange.ClearSelection)
} }
} }

@ -65,20 +65,16 @@ class BookmarkUIView(
mode = it.mode mode = it.mode
actionEmitter.onNext(BookmarkAction.SwitchMode) actionEmitter.onNext(BookmarkAction.SwitchMode)
} }
bookmarkAdapter.updateData(it.tree, it.mode) when (val modeCopy = it.mode) {
when (val modeCopy = mode) {
is BookmarkState.Mode.Normal -> setUIForNormalMode(it.tree) is BookmarkState.Mode.Normal -> setUIForNormalMode(it.tree)
is BookmarkState.Mode.Selecting -> setUIForSelectingMode(modeCopy) is BookmarkState.Mode.Selecting -> setUIForSelectingMode(it.tree, modeCopy)
} }
} }
override fun onBackPressed(): Boolean { override fun onBackPressed(): Boolean {
return when { return when {
mode is BookmarkState.Mode.Selecting -> { mode is BookmarkState.Mode.Selecting -> {
mode = BookmarkState.Mode.Normal actionEmitter.onNext(BookmarkAction.DeselectAll)
bookmarkAdapter.updateData(tree, mode)
setUIForNormalMode(tree)
actionEmitter.onNext(BookmarkAction.SwitchMode)
true true
} }
canGoBack -> { canGoBack -> {
@ -107,8 +103,10 @@ class BookmarkUIView(
} }
private fun setUIForSelectingMode( private fun setUIForSelectingMode(
root: BookmarkNode?,
mode: BookmarkState.Mode.Selecting mode: BookmarkState.Mode.Selecting
) { ) {
bookmarkAdapter.updateData(root, mode)
activity?.title = activity?.title =
context.getString(R.string.bookmarks_multi_select_title, mode.selectedItems.size) context.getString(R.string.bookmarks_multi_select_title, mode.selectedItems.size)
setToolbarColors( setToolbarColors(
@ -118,6 +116,7 @@ class BookmarkUIView(
} }
private fun setUIForNormalMode(root: BookmarkNode?) { private fun setUIForNormalMode(root: BookmarkNode?) {
bookmarkAdapter.updateData(root, BookmarkState.Mode.Normal)
setTitle(root) setTitle(root)
setToolbarColors( setToolbarColors(
R.attr.primaryText.getColorIntFromAttr(context!!), R.attr.primaryText.getColorIntFromAttr(context!!),

Loading…
Cancel
Save