mirror of
https://github.com/clangen/musikcube.git
synced 2025-03-14 04:18:36 +00:00
Fixed playlist fab
This commit is contained in:
parent
841eff56f5
commit
81332c2af8
@ -29,6 +29,8 @@ class BrowseFragmentAdapter(private val context: Context,
|
||||
}
|
||||
}
|
||||
|
||||
var onFragmentInstantiated: ((Int) -> Unit?)? = null
|
||||
|
||||
fun onTransportChanged() =
|
||||
fragments.forEach {
|
||||
(it.value as? ITransportObserver)?.onTransportChanged()
|
||||
@ -73,6 +75,7 @@ class BrowseFragmentAdapter(private val context: Context,
|
||||
val result = super.instantiateItem(container, position)
|
||||
fragments[position] = result as Fragment
|
||||
(result as? IFilterable)?.setFilter(filter)
|
||||
onFragmentInstantiated?.invoke(position)
|
||||
return result
|
||||
}
|
||||
}
|
@ -26,20 +26,41 @@ class BrowseFragment: BaseFragment(), ITransportObserver, IFilterable, ITitlePro
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
|
||||
inflater.inflate(R.layout.browse_fragment, container, false).apply {
|
||||
adapter = BrowseFragmentAdapter(appCompatActivity, childFragmentManager, R.id.content_container)
|
||||
|
||||
val pager = findViewById<ViewPager>(R.id.view_pager)
|
||||
pager.adapter = adapter
|
||||
pager.currentItem = adapter.indexOf(extras.getString(Browse.Extras.INITIAL_CATEGORY_TYPE))
|
||||
|
||||
val tabs = findViewById<TabLayout>(R.id.tab_layout)
|
||||
tabs.setupWithViewPager(pager)
|
||||
|
||||
val fab = findViewById<FloatingActionButton>(R.id.fab)
|
||||
val pager = findViewById<ViewPager>(R.id.view_pager)
|
||||
val tabs = findViewById<TabLayout>(R.id.tab_layout)
|
||||
|
||||
val showFabIfNecessary = { pos: Int ->
|
||||
adapter.fragmentAt(pos)?.let {
|
||||
when (it is IFabConsumer) {
|
||||
true -> {
|
||||
when (it.fabVisible) {
|
||||
true -> fab.show()
|
||||
false -> fab.hide()
|
||||
}
|
||||
}
|
||||
false -> fab.hide()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fab.setOnClickListener {
|
||||
(adapter.fragmentAt(pager.currentItem) as? IFabConsumer)?.onFabPress(fab)
|
||||
}
|
||||
|
||||
adapter = BrowseFragmentAdapter(appCompatActivity, childFragmentManager, R.id.content_container)
|
||||
|
||||
adapter.onFragmentInstantiated = { pos ->
|
||||
if (pos == pager.currentItem) {
|
||||
showFabIfNecessary(pos)
|
||||
}
|
||||
}
|
||||
|
||||
pager.adapter = adapter
|
||||
pager.currentItem = adapter.indexOf(extras.getString(Browse.Extras.INITIAL_CATEGORY_TYPE))
|
||||
|
||||
tabs.setupWithViewPager(pager)
|
||||
|
||||
pager.addOnPageChangeListener(object: ViewPager.OnPageChangeListener {
|
||||
override fun onPageScrollStateChanged(state: Int) {
|
||||
}
|
||||
@ -48,21 +69,13 @@ class BrowseFragment: BaseFragment(), ITransportObserver, IFilterable, ITitlePro
|
||||
}
|
||||
|
||||
override fun onPageSelected(pos: Int) {
|
||||
adapter.fragmentAt(pos)?.let {
|
||||
when (it is IFabConsumer) {
|
||||
true -> {
|
||||
when (it.fabVisible) {
|
||||
true -> fab.show()
|
||||
false -> fab.hide()
|
||||
}
|
||||
}
|
||||
false -> fab.hide()
|
||||
}
|
||||
}
|
||||
showFabIfNecessary(pos)
|
||||
}
|
||||
})
|
||||
|
||||
initToolbarIfNecessary(appCompatActivity, this)
|
||||
|
||||
showFabIfNecessary(pager.currentItem)
|
||||
}
|
||||
|
||||
override fun onTransportChanged() =
|
||||
|
@ -38,16 +38,25 @@ import io.reactivex.rxkotlin.subscribeBy
|
||||
|
||||
class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITransportObserver, IFabConsumer {
|
||||
private lateinit var adapter: CategoryBrowseAdapter
|
||||
private var navigationType: NavigationType = NavigationType.Albums
|
||||
private var lastFilter: String? = null
|
||||
private var category: String = ""
|
||||
private var predicateType: String = ""
|
||||
private var predicateId: Long = -1
|
||||
private lateinit var rootView: View
|
||||
private lateinit var emptyView: EmptyListView
|
||||
private lateinit var data: DataProviderMixin
|
||||
private lateinit var playback: PlaybackMixin
|
||||
|
||||
private val navigationType: NavigationType
|
||||
get() = NavigationType.get(extras.getInt(
|
||||
Category.Extra.NAVIGATION_TYPE, NavigationType.Albums.ordinal))
|
||||
|
||||
private val category
|
||||
get() = extras.getString(Category.Extra.CATEGORY, "")
|
||||
|
||||
private val predicateType: String
|
||||
get() = extras.getString(Category.Extra.PREDICATE_TYPE, "")
|
||||
|
||||
private val predicateId: Long
|
||||
get() = extras.getLong(Category.Extra.PREDICATE_ID, -1L)
|
||||
|
||||
override val title: String
|
||||
get() {
|
||||
Category.NAME_TO_TITLE[category]?.let {
|
||||
@ -64,13 +73,6 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
playback = mixin(PlaybackMixin())
|
||||
mixin(ItemContextMenuMixin(appCompatActivity, contextMenuListener, this))
|
||||
|
||||
extras.run {
|
||||
category = getString(Category.Extra.CATEGORY, category)
|
||||
predicateType = getString(Category.Extra.PREDICATE_TYPE, predicateType)
|
||||
predicateId = getLong(Category.Extra.PREDICATE_ID, predicateId)
|
||||
navigationType = NavigationType.get(getInt(Category.Extra.NAVIGATION_TYPE, navigationType.ordinal))
|
||||
}
|
||||
|
||||
adapter = CategoryBrowseAdapter(adapterListener, playback, navigationType, category, prefs)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user