Added selection in DetailListFragment.kt (Most Played, Last added, etc.)
This commit is contained in:
parent
dfa3129239
commit
326c2279a0
1 changed files with 55 additions and 7 deletions
|
@ -16,6 +16,7 @@ package code.name.monkey.retromusic.fragments.other
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.activity.addCallback
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.navigation.fragment.FragmentNavigatorExtras
|
import androidx.navigation.fragment.FragmentNavigatorExtras
|
||||||
|
@ -32,17 +33,25 @@ import code.name.monkey.retromusic.adapter.song.SongAdapter
|
||||||
import code.name.monkey.retromusic.databinding.FragmentPlaylistDetailBinding
|
import code.name.monkey.retromusic.databinding.FragmentPlaylistDetailBinding
|
||||||
import code.name.monkey.retromusic.db.toSong
|
import code.name.monkey.retromusic.db.toSong
|
||||||
import code.name.monkey.retromusic.extensions.dipToPix
|
import code.name.monkey.retromusic.extensions.dipToPix
|
||||||
|
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
||||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
||||||
import code.name.monkey.retromusic.interfaces.IArtistClickListener
|
import code.name.monkey.retromusic.interfaces.IArtistClickListener
|
||||||
|
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||||
|
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Album
|
import code.name.monkey.retromusic.model.Album
|
||||||
import code.name.monkey.retromusic.model.Artist
|
import code.name.monkey.retromusic.model.Artist
|
||||||
|
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import code.name.monkey.retromusic.util.RetroUtil
|
||||||
|
import com.afollestad.materialcab.attached.AttachedCab
|
||||||
|
import com.afollestad.materialcab.attached.destroy
|
||||||
|
import com.afollestad.materialcab.attached.isActive
|
||||||
|
import com.afollestad.materialcab.createCab
|
||||||
import com.google.android.material.shape.MaterialShapeDrawable
|
import com.google.android.material.shape.MaterialShapeDrawable
|
||||||
import com.google.android.material.transition.MaterialSharedAxis
|
import com.google.android.material.transition.MaterialSharedAxis
|
||||||
|
|
||||||
class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_detail),
|
class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_detail),
|
||||||
IArtistClickListener, IAlbumClickListener {
|
IArtistClickListener, IAlbumClickListener, ICabHolder {
|
||||||
private val args by navArgs<DetailListFragmentArgs>()
|
private val args by navArgs<DetailListFragmentArgs>()
|
||||||
private var _binding: FragmentPlaylistDetailBinding? = null
|
private var _binding: FragmentPlaylistDetailBinding? = null
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
|
@ -88,6 +97,12 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
MaterialShapeDrawable.createWithElevationOverlay(requireContext())
|
MaterialShapeDrawable.createWithElevationOverlay(requireContext())
|
||||||
postponeEnterTransition()
|
postponeEnterTransition()
|
||||||
view.doOnPreDraw { startPostponedEnterTransition() }
|
view.doOnPreDraw { startPostponedEnterTransition() }
|
||||||
|
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||||
|
if (!handleBackPress()) {
|
||||||
|
remove()
|
||||||
|
findNavController().navigateUp()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun lastAddedSongs() {
|
private fun lastAddedSongs() {
|
||||||
|
@ -95,7 +110,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
val songAdapter = ShuffleButtonSongAdapter(
|
val songAdapter = ShuffleButtonSongAdapter(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
mutableListOf(),
|
mutableListOf(),
|
||||||
R.layout.item_list, null
|
R.layout.item_list, this
|
||||||
)
|
)
|
||||||
binding.recyclerView.apply {
|
binding.recyclerView.apply {
|
||||||
adapter = songAdapter
|
adapter = songAdapter
|
||||||
|
@ -112,7 +127,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
val songAdapter = ShuffleButtonSongAdapter(
|
val songAdapter = ShuffleButtonSongAdapter(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
mutableListOf(),
|
mutableListOf(),
|
||||||
R.layout.item_list, null
|
R.layout.item_list, this
|
||||||
)
|
)
|
||||||
binding.recyclerView.apply {
|
binding.recyclerView.apply {
|
||||||
adapter = songAdapter
|
adapter = songAdapter
|
||||||
|
@ -129,7 +144,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
val songAdapter = ShuffleButtonSongAdapter(
|
val songAdapter = ShuffleButtonSongAdapter(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
mutableListOf(),
|
mutableListOf(),
|
||||||
R.layout.item_list, null
|
R.layout.item_list, this
|
||||||
)
|
)
|
||||||
binding.recyclerView.apply {
|
binding.recyclerView.apply {
|
||||||
adapter = songAdapter
|
adapter = songAdapter
|
||||||
|
@ -145,7 +160,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
val songAdapter = SongAdapter(
|
val songAdapter = SongAdapter(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
mutableListOf(),
|
mutableListOf(),
|
||||||
R.layout.item_list, null
|
R.layout.item_list, this
|
||||||
)
|
)
|
||||||
binding.recyclerView.apply {
|
binding.recyclerView.apply {
|
||||||
adapter = songAdapter
|
adapter = songAdapter
|
||||||
|
@ -181,14 +196,14 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
artists,
|
artists,
|
||||||
R.layout.item_grid_circle,
|
R.layout.item_grid_circle,
|
||||||
null, this@DetailListFragment
|
this, this@DetailListFragment
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun albumAdapter(albums: List<Album>): AlbumAdapter = AlbumAdapter(
|
private fun albumAdapter(albums: List<Album>): AlbumAdapter = AlbumAdapter(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
albums,
|
albums,
|
||||||
R.layout.item_grid,
|
R.layout.item_grid,
|
||||||
null, this@DetailListFragment
|
this, this@DetailListFragment
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun linearLayoutManager(): LinearLayoutManager =
|
private fun linearLayoutManager(): LinearLayoutManager =
|
||||||
|
@ -228,4 +243,37 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
_binding = null
|
_binding = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var cab: AttachedCab? = null
|
||||||
|
|
||||||
|
private fun handleBackPress(): Boolean {
|
||||||
|
cab?.let {
|
||||||
|
if (it.isActive()) {
|
||||||
|
it.destroy()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||||
|
cab?.let {
|
||||||
|
println("Cab")
|
||||||
|
if (it.isActive()) {
|
||||||
|
it.destroy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cab = createCab(R.id.toolbar_container) {
|
||||||
|
menu(menuRes)
|
||||||
|
closeDrawable(R.drawable.ic_close)
|
||||||
|
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||||
|
slideDown()
|
||||||
|
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||||
|
onSelection {
|
||||||
|
callback.onCabItemClicked(it)
|
||||||
|
}
|
||||||
|
onDestroy { callback.onCabFinished(it) }
|
||||||
|
}
|
||||||
|
return cab as AttachedCab
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue