1
0
Fork 0

For #1966: back button from multi-selection toolbar should cancel (#2207)

master
Colin Lee 2019-05-01 16:20:59 -05:00 committed by GitHub
parent 548c3be51e
commit 030912bfc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 5 deletions

View File

@ -37,6 +37,8 @@ class BookmarkUIView(
var mode: BookmarkState.Mode = BookmarkState.Mode.Normal var mode: BookmarkState.Mode = BookmarkState.Mode.Normal
private set private set
var tree: BookmarkNode? = null
private set
private var canGoBack = false private var canGoBack = false
@ -56,11 +58,14 @@ class BookmarkUIView(
override fun updateView() = Consumer<BookmarkState> { override fun updateView() = Consumer<BookmarkState> {
canGoBack = !(listOf(null, BookmarkRoot.Root.id).contains(it.tree?.guid)) canGoBack = !(listOf(null, BookmarkRoot.Root.id).contains(it.tree?.guid))
bookmarkAdapter.updateData(it.tree, it.mode) if (it.tree != tree) {
tree = it.tree
}
if (it.mode != mode) { if (it.mode != mode) {
mode = it.mode mode = it.mode
actionEmitter.onNext(BookmarkAction.ModeChanged) actionEmitter.onNext(BookmarkAction.ModeChanged)
} }
bookmarkAdapter.updateData(it.tree, it.mode)
when (val modeCopy = 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(modeCopy)
@ -68,10 +73,20 @@ class BookmarkUIView(
} }
override fun onBackPressed(): Boolean { override fun onBackPressed(): Boolean {
return if (canGoBack) { return when {
actionEmitter.onNext(BookmarkAction.BackPressed) mode is BookmarkState.Mode.Selecting -> {
true mode = BookmarkState.Mode.Normal
} else false bookmarkAdapter.updateData(tree, mode)
setUIForNormalMode(tree)
actionEmitter.onNext(BookmarkAction.ModeChanged)
true
}
canGoBack -> {
actionEmitter.onNext(BookmarkAction.BackPressed)
true
}
else -> false
}
} }
fun getSelected(): Set<BookmarkNode> = bookmarkAdapter.selected fun getSelected(): Set<BookmarkNode> = bookmarkAdapter.selected