Current category logic update + hopper up button update
Current category header now works by the first visual item in the view, not the first completely visible item anymore. Saving current item pref still relies on first completely visible Hopper up button now goes to the top of the current category before going to the next category
This commit is contained in:
parent
97367f0558
commit
f78daf7156
1 changed files with 20 additions and 14 deletions
|
@ -119,6 +119,7 @@ class LibraryController(
|
|||
* Position of the active category.
|
||||
*/
|
||||
private var activeCategory: Int = preferences.lastUsedCategory().getOrDefault()
|
||||
private var lastUsedCategory: Int = preferences.lastUsedCategory().getOrDefault()
|
||||
|
||||
private var justStarted = true
|
||||
|
||||
|
@ -215,6 +216,11 @@ class LibraryController(
|
|||
showCategoryText(currentCategory.name)
|
||||
}
|
||||
}
|
||||
val savedCurrentCategory = getHeader(true)?.category ?: return
|
||||
if (savedCurrentCategory.order != lastUsedCategory) {
|
||||
lastUsedCategory = savedCurrentCategory.order
|
||||
preferences.lastUsedCategory().set(savedCurrentCategory.order)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
|
@ -240,7 +246,6 @@ class LibraryController(
|
|||
}
|
||||
|
||||
fun saveActiveCategory(category: Category) {
|
||||
preferences.lastUsedCategory().set(category.order)
|
||||
activeCategory = category.order
|
||||
val headerItem = getHeader() ?: return
|
||||
header_title.text = headerItem.category.name
|
||||
|
@ -515,12 +520,16 @@ class LibraryController(
|
|||
private fun jumpToNextCategory(next: Boolean) {
|
||||
val category = getVisibleHeader() ?: return
|
||||
if (presenter.showAllCategories) {
|
||||
if (!next) {
|
||||
val fPosition =
|
||||
(recycler.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
|
||||
if (fPosition != adapter.currentItems.indexOf(category)) {
|
||||
scrollToHeader(category.category.order)
|
||||
return
|
||||
}
|
||||
}
|
||||
val newOffset = adapter.headerItems.indexOf(category) + (if (next) 1 else -1)
|
||||
if (if (!next) {
|
||||
newOffset > -1
|
||||
} else {
|
||||
newOffset < adapter.headerItems.size
|
||||
}) {
|
||||
if (if (!next) newOffset > -1 else newOffset < adapter.headerItems.size) {
|
||||
val newCategory = (adapter.headerItems[newOffset] as LibraryHeaderItem).category
|
||||
val newOrder = newCategory.order
|
||||
scrollToHeader(newOrder)
|
||||
|
@ -546,9 +555,12 @@ class LibraryController(
|
|||
}
|
||||
}
|
||||
|
||||
private fun getHeader(): LibraryHeaderItem? {
|
||||
val position =
|
||||
private fun getHeader(firstCompletelyVisible: Boolean = false): LibraryHeaderItem? {
|
||||
val position = if (firstCompletelyVisible) {
|
||||
(recycler.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition()
|
||||
} else {
|
||||
-1
|
||||
}
|
||||
if (position > 0) {
|
||||
when (val item = adapter.getItem(position)) {
|
||||
is LibraryHeaderItem -> return item
|
||||
|
@ -566,12 +578,6 @@ class LibraryController(
|
|||
}
|
||||
|
||||
private fun getVisibleHeader(): LibraryHeaderItem? {
|
||||
val position =
|
||||
(recycler.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition()
|
||||
when (val item = adapter.getItem(position)) {
|
||||
is LibraryHeaderItem -> return item
|
||||
is LibraryItem -> return item.header
|
||||
}
|
||||
val fPosition =
|
||||
(recycler.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
|
||||
when (val item = adapter.getItem(fPosition)) {
|
||||
|
|
Reference in a new issue