|
|
@ -7,10 +7,9 @@ import android.view.Gravity
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.View
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import android.widget.LinearLayout
|
|
|
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
|
|
|
|
import androidx.appcompat.view.ActionMode
|
|
|
|
import androidx.appcompat.view.ActionMode
|
|
|
|
import androidx.appcompat.widget.PopupMenu
|
|
|
|
import androidx.appcompat.widget.PopupMenu
|
|
|
|
|
|
|
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
|
|
import androidx.core.math.MathUtils.clamp
|
|
|
|
import androidx.core.math.MathUtils.clamp
|
|
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
|
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
@ -28,12 +27,13 @@ import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
|
|
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
|
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
|
|
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
|
|
|
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
|
|
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
|
|
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
|
|
|
import eu.kanade.tachiyomi.ui.main.MainActivity
|
|
|
|
|
|
|
|
import eu.kanade.tachiyomi.ui.main.SwipeGestureInterface
|
|
|
|
import eu.kanade.tachiyomi.ui.main.SwipeGestureInterface
|
|
|
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
|
|
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
|
|
|
import eu.kanade.tachiyomi.util.system.launchUI
|
|
|
|
import eu.kanade.tachiyomi.util.system.launchUI
|
|
|
|
import eu.kanade.tachiyomi.util.view.inflate
|
|
|
|
import eu.kanade.tachiyomi.util.view.inflate
|
|
|
|
|
|
|
|
import eu.kanade.tachiyomi.util.view.scrollViewWith
|
|
|
|
import eu.kanade.tachiyomi.util.view.snack
|
|
|
|
import eu.kanade.tachiyomi.util.view.snack
|
|
|
|
|
|
|
|
import eu.kanade.tachiyomi.util.view.updateLayoutParams
|
|
|
|
import eu.kanade.tachiyomi.util.view.updatePaddingRelative
|
|
|
|
import eu.kanade.tachiyomi.util.view.updatePaddingRelative
|
|
|
|
import kotlinx.android.synthetic.main.filter_bottom_sheet.*
|
|
|
|
import kotlinx.android.synthetic.main.filter_bottom_sheet.*
|
|
|
|
import kotlinx.android.synthetic.main.library_grid_recycler.*
|
|
|
|
import kotlinx.android.synthetic.main.library_grid_recycler.*
|
|
|
@ -61,7 +61,7 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
|
|
|
|
|
|
|
|
private var lastItemPosition:Int? = null
|
|
|
|
private var lastItemPosition:Int? = null
|
|
|
|
private var lastItem:IFlexible<*>? = null
|
|
|
|
private var lastItem:IFlexible<*>? = null
|
|
|
|
private lateinit var customTitleSpinner: LinearLayout
|
|
|
|
private lateinit var customTitleSpinner: ViewGroup
|
|
|
|
private lateinit var titlePopupMenu:PopupMenu
|
|
|
|
private lateinit var titlePopupMenu:PopupMenu
|
|
|
|
|
|
|
|
|
|
|
|
private var switchingCategories = false
|
|
|
|
private var switchingCategories = false
|
|
|
@ -73,13 +73,15 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
|
|
|
|
|
|
|
|
override fun contentView():View = recycler_layout
|
|
|
|
override fun contentView():View = recycler_layout
|
|
|
|
|
|
|
|
|
|
|
|
override fun getTitle(): String? {
|
|
|
|
/* override fun getTitle(): String? {
|
|
|
|
return when {
|
|
|
|
return if (::customTitleSpinner.isInitialized) customTitleSpinner.category_title.text.toString()
|
|
|
|
spinnerAdapter?.array?.size ?: 0 > 1 -> null
|
|
|
|
else super.getTitle()
|
|
|
|
spinnerAdapter?.array?.size == 1 -> return spinnerAdapter?.array?.firstOrNull()
|
|
|
|
// when {
|
|
|
|
else -> return super.getTitle()
|
|
|
|
// spinnerAdapter?.array?.size ?: 0 > 1 -> null
|
|
|
|
}
|
|
|
|
// spinnerAdapter?.array?.size == 1 -> return spinnerAdapter?.array?.firstOrNull()
|
|
|
|
}
|
|
|
|
// else -> return super.getTitle()
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
private var scrollListener = object : RecyclerView.OnScrollListener () {
|
|
|
|
private var scrollListener = object : RecyclerView.OnScrollListener () {
|
|
|
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
|
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
|
@ -97,6 +99,9 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
val category = presenter.categories.find { it.order == order }
|
|
|
|
val category = presenter.categories.find { it.order == order }
|
|
|
|
|
|
|
|
|
|
|
|
customTitleSpinner.category_title.text = category?.name ?: ""
|
|
|
|
customTitleSpinner.category_title.text = category?.name ?: ""
|
|
|
|
|
|
|
|
val isCurrentController = router?.backstack?.lastOrNull()?.controller() ==
|
|
|
|
|
|
|
|
this@LibraryListController
|
|
|
|
|
|
|
|
if (isCurrentController) setTitle()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -135,8 +140,8 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
val tv = TypedValue()
|
|
|
|
val tv = TypedValue()
|
|
|
|
activity!!.theme.resolveAttribute(R.attr.actionBarTintColor, tv, true)
|
|
|
|
activity!!.theme.resolveAttribute(R.attr.actionBarTintColor, tv, true)
|
|
|
|
|
|
|
|
|
|
|
|
customTitleSpinner = library_layout.inflate(R.layout.spinner_title) as LinearLayout
|
|
|
|
customTitleSpinner = library_layout.inflate(R.layout.spinner_title) as ViewGroup
|
|
|
|
(activity as MainActivity).supportActionBar?.setDisplayShowCustomEnabled(false)
|
|
|
|
// (activity as MainActivity).supportActionBar?.setDisplayShowCustomEnabled(false)
|
|
|
|
spinnerAdapter = SpinnerAdapter(
|
|
|
|
spinnerAdapter = SpinnerAdapter(
|
|
|
|
view.context,
|
|
|
|
view.context,
|
|
|
|
R.layout.library_spinner_textview,
|
|
|
|
R.layout.library_spinner_textview,
|
|
|
@ -151,12 +156,17 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
scrollToHeader(item.itemId)
|
|
|
|
scrollToHeader(item.itemId)
|
|
|
|
true
|
|
|
|
true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(activity as MainActivity).supportActionBar?.customView = customTitleSpinner
|
|
|
|
//(activity as MainActivity).supportActionBar?.customView = customTitleSpinner
|
|
|
|
|
|
|
|
scrollViewWith(recycler) { insets ->
|
|
|
|
|
|
|
|
fast_scroller.updateLayoutParams<CoordinatorLayout.LayoutParams> {
|
|
|
|
|
|
|
|
topMargin = insets.systemWindowInsetTop
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
|
|
|
|
override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
|
|
|
|
super.onChangeStarted(handler, type)
|
|
|
|
super.onChangeStarted(handler, type)
|
|
|
|
if (type.isEnter) {
|
|
|
|
/*if (type.isEnter) {
|
|
|
|
(activity as MainActivity).supportActionBar
|
|
|
|
(activity as MainActivity).supportActionBar
|
|
|
|
?.setDisplayShowCustomEnabled(router?.backstack?.lastOrNull()?.controller() ==
|
|
|
|
?.setDisplayShowCustomEnabled(router?.backstack?.lastOrNull()?.controller() ==
|
|
|
|
this && spinnerAdapter?.array?.size ?: 0 > 1)
|
|
|
|
this && spinnerAdapter?.array?.size ?: 0 > 1)
|
|
|
@ -165,11 +175,11 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
(activity as MainActivity).toolbar.menu.findItem(R.id
|
|
|
|
(activity as MainActivity).toolbar.menu.findItem(R.id
|
|
|
|
.action_search)?.collapseActionView()
|
|
|
|
.action_search)?.collapseActionView()
|
|
|
|
(activity as MainActivity).supportActionBar?.setDisplayShowCustomEnabled(false)
|
|
|
|
(activity as MainActivity).supportActionBar?.setDisplayShowCustomEnabled(false)
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun onDestroy() {
|
|
|
|
override fun onDestroy() {
|
|
|
|
(activity as MainActivity).supportActionBar?.setDisplayShowCustomEnabled(false)
|
|
|
|
// (activity as MainActivity).supportActionBar?.setDisplayShowCustomEnabled(false)
|
|
|
|
super.onDestroy()
|
|
|
|
super.onDestroy()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -195,14 +205,14 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
|
|
|
|
|
|
|
|
val isCurrentController = router?.backstack?.lastOrNull()?.controller() ==
|
|
|
|
val isCurrentController = router?.backstack?.lastOrNull()?.controller() ==
|
|
|
|
this
|
|
|
|
this
|
|
|
|
(activity as AppCompatActivity).supportActionBar
|
|
|
|
// (activity as AppCompatActivity).supportActionBar
|
|
|
|
?.setDisplayShowCustomEnabled(isCurrentController && presenter.categories.size > 1)
|
|
|
|
// ?.setDisplayShowCustomEnabled(isCurrentController && presenter.categories.size > 1)
|
|
|
|
if (isCurrentController) setTitle()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
customTitleSpinner.category_title.text =
|
|
|
|
customTitleSpinner.category_title.text =
|
|
|
|
presenter.categories[clamp(activeCategory,
|
|
|
|
presenter.categories[clamp(activeCategory,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
presenter.categories.size - 1)].name
|
|
|
|
presenter.categories.size - 1)].name
|
|
|
|
|
|
|
|
if (isCurrentController) setTitle()
|
|
|
|
updateScroll = false
|
|
|
|
updateScroll = false
|
|
|
|
if (!freshStart) {
|
|
|
|
if (!freshStart) {
|
|
|
|
justStarted = false
|
|
|
|
justStarted = false
|
|
|
@ -232,6 +242,7 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
val headerPosition = adapter.indexOf(pos)
|
|
|
|
val headerPosition = adapter.indexOf(pos)
|
|
|
|
switchingCategories = true
|
|
|
|
switchingCategories = true
|
|
|
|
if (headerPosition > -1) {
|
|
|
|
if (headerPosition > -1) {
|
|
|
|
|
|
|
|
activity?.appbar?.y = 0f
|
|
|
|
recycler.suppressLayout(true)
|
|
|
|
recycler.suppressLayout(true)
|
|
|
|
(recycler.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(
|
|
|
|
(recycler.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(
|
|
|
|
headerPosition, if (headerPosition == 0) 0 else (-30).dpToPx
|
|
|
|
headerPosition, if (headerPosition == 0) 0 else (-30).dpToPx
|
|
|
@ -544,7 +555,13 @@ class LibraryListController(bundle: Bundle? = null) : LibraryController(bundle),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun onSwipeBottom(x: Float, y: Float) { }
|
|
|
|
override fun onSwipeBottom(x: Float, y: Float) { }
|
|
|
|
override fun onSwipeTop(x: Float, y: Float) { }
|
|
|
|
|
|
|
|
|
|
|
|
override fun onSwipeTop(x: Float, y: Float) {
|
|
|
|
|
|
|
|
val sheetRect = Rect()
|
|
|
|
|
|
|
|
activity!!.navigationView.getGlobalVisibleRect(sheetRect)
|
|
|
|
|
|
|
|
if (sheetRect.contains(x.toInt(), y.toInt()))
|
|
|
|
|
|
|
|
showFiltersBottomSheet()
|
|
|
|
|
|
|
|
}
|
|
|
|
override fun onSwipeLeft(x: Float, y: Float) = goToNextCategory(x, y,-1)
|
|
|
|
override fun onSwipeLeft(x: Float, y: Float) = goToNextCategory(x, y,-1)
|
|
|
|
override fun onSwipeRight(x: Float, y: Float) = goToNextCategory(x, y,1)
|
|
|
|
override fun onSwipeRight(x: Float, y: Float) = goToNextCategory(x, y,1)
|
|
|
|
|
|
|
|
|
|
|
|