@ -53,8 +53,6 @@ import com.bumptech.glide.request.transition.Transition
import com.bumptech.glide.signature.ObjectKey
import com.bumptech.glide.signature.ObjectKey
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.snackbar.Snackbar
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
import com.reddit.indicatorfastscroll.FastScrollerView
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.SelectableAdapter
import eu.davidea.flexibleadapter.SelectableAdapter
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.R
@ -101,14 +99,10 @@ import eu.kanade.tachiyomi.util.system.isOnline
import eu.kanade.tachiyomi.util.system.launchUI
import eu.kanade.tachiyomi.util.system.launchUI
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.getText
import eu.kanade.tachiyomi.util.view.getText
import eu.kanade.tachiyomi.util.view.hide
import eu.kanade.tachiyomi.util.view.requestPermissionsSafe
import eu.kanade.tachiyomi.util.view.requestPermissionsSafe
import eu.kanade.tachiyomi.util.view.scrollViewWith
import eu.kanade.tachiyomi.util.view.scrollViewWith
import eu.kanade.tachiyomi.util.view.setBackground
import eu.kanade.tachiyomi.util.view.setOnQueryTextChangeListener
import eu.kanade.tachiyomi.util.view.setOnQueryTextChangeListener
import eu.kanade.tachiyomi.util.view.setStartTranslationX
import eu.kanade.tachiyomi.util.view.setStyle
import eu.kanade.tachiyomi.util.view.setStyle
import eu.kanade.tachiyomi.util.view.show
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.updateLayoutParams
import eu.kanade.tachiyomi.util.view.updatePaddingRelative
import eu.kanade.tachiyomi.util.view.updatePaddingRelative
@ -205,7 +199,7 @@ class MangaDetailsController : BaseController,
setRecycler ( view )
setRecycler ( view )
setPaletteColor ( )
setPaletteColor ( )
setFastScroller( )
adapter?. fastScroller = fast _scroller2
presenter . onCreate ( )
presenter . onCreate ( )
swipe _refresh . isRefreshing = presenter . isLoading
swipe _refresh . isRefreshing = presenter . isLoading
@ -259,17 +253,6 @@ class MangaDetailsController : BaseController,
override fun onScrollStateChanged ( recyclerView : RecyclerView , newState : Int ) {
override fun onScrollStateChanged ( recyclerView : RecyclerView , newState : Int ) {
val atTop = ! recycler . canScrollVertically ( - 1 )
val atTop = ! recycler . canScrollVertically ( - 1 )
if ( atTop ) getHeader ( ) ?. backdrop ?. translationY = 0f
if ( atTop ) getHeader ( ) ?. backdrop ?. translationY = 0f
when ( newState ) {
RecyclerView . SCROLL _STATE _DRAGGING -> {
scrollAnim ?. cancel ( )
if ( fast _scroller . translationX != 0f ) {
showFastScroller ( )
}
}
RecyclerView . SCROLL _STATE _IDLE -> {
scrollAnim = fast _scroller . hide ( )
}
}
}
}
} )
} )
}
}
@ -281,51 +264,12 @@ class MangaDetailsController : BaseController,
swipe _refresh . setProgressViewOffset ( false , ( - 40 ) . dpToPx , headerHeight + offset )
swipe _refresh . setProgressViewOffset ( false , ( - 40 ) . dpToPx , headerHeight + offset )
// 1dp extra to line up chapter header and manga header
// 1dp extra to line up chapter header and manga header
getHeader ( ) ?. setTopHeight ( headerHeight )
getHeader ( ) ?. setTopHeight ( headerHeight )
fast _scroll _layout . updateLayoutParams < ViewGroup . MarginLayoutParams > {
fast _scroll er2 . updateLayoutParams < ViewGroup . MarginLayoutParams > {
topMargin = headerHeight
topMargin = headerHeight
bottomMargin = insets . systemWindowInsetBottom
bottomMargin = insets . systemWindowInsetBottom
}
}
}
}
private fun setFastScroller ( ) {
fast _scroller . setStartTranslationX ( true )
fast _scroller . setBackground ( true )
fast _scroller . setupWithRecyclerView ( recycler , { position ->
val letter = adapter ?. getSectionText ( position )
when {
presenter . scrollType == 0 -> null
letter != null -> FastScrollItemIndicator . Text ( letter )
else -> FastScrollItemIndicator . Icon ( R . drawable . ic _star _24dp )
}
} )
fast _scroller . useDefaultScroller = false
fast _scroller . itemIndicatorSelectedCallbacks += object :
FastScrollerView . ItemIndicatorSelectedCallback {
override fun onItemIndicatorSelected (
indicator : FastScrollItemIndicator ,
indicatorCenterY : Int ,
itemPosition : Int
) {
scrollAnim ?. cancel ( )
scrollAnim = fast _scroller . hide ( 2000 )
textAnim ?. cancel ( )
textAnim = text _view _m . animate ( ) . alpha ( 0f ) . setDuration ( 250L ) . setStartDelay ( 1000 )
textAnim ?. start ( )
text _view _m . translationY = indicatorCenterY . toFloat ( ) - text _view _m . height / 2
text _view _m . alpha = 1f
text _view _m . text = adapter ?. getFullText ( itemPosition )
val appbar = activity ?. appbar
appbar ?. y = 0f
( recycler . layoutManager as LinearLayoutManager ) . scrollToPositionWithOffset (
itemPosition , headerHeight
)
colorToolbar ( itemPosition > 0 , false )
}
}
}
/** Set the toolbar to fully transparent or colored and translucent */
/** Set the toolbar to fully transparent or colored and translucent */
fun colorToolbar ( isColor : Boolean , animate : Boolean = true ) {
fun colorToolbar ( isColor : Boolean , animate : Boolean = true ) {
if ( isColor == toolbarIsColored ) return
if ( isColor == toolbarIsColored ) return
@ -594,12 +538,6 @@ class MangaDetailsController : BaseController,
activity ?. invalidateOptionsMenu ( )
activity ?. invalidateOptionsMenu ( )
}
}
private fun showFastScroller ( animate : Boolean = true ) {
if ( presenter . scrollType != 0 ) {
fast _scroller . show ( animate )
}
}
private fun addMangaHeader ( ) {
private fun addMangaHeader ( ) {
if ( adapter ?. scrollableHeaders ?. isEmpty ( ) == true ) {
if ( adapter ?. scrollableHeaders ?. isEmpty ( ) == true ) {
adapter ?. removeAllScrollableHeaders ( )
adapter ?. removeAllScrollableHeaders ( )