list: clean up menu impl

Clean up the some minor mistakes in the new menu dialog implementation.
This commit is contained in:
Alexander Capehart 2023-07-03 16:07:54 -06:00
parent db2e9e12f0
commit 0d896c04e3
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
5 changed files with 34 additions and 24 deletions

View file

@ -58,6 +58,8 @@ abstract class MenuDialogFragment<T : Music> :
super.onBindingCreated(binding, savedInstanceState)
// --- UI SETUP ---
binding.menuName.isSelected = true
binding.menuInfo.isSelected = true
binding.menuOptionRecycler.apply {
adapter = menuAdapter
itemAnimator = null
@ -75,6 +77,8 @@ abstract class MenuDialogFragment<T : Music> :
override fun onDestroyBinding(binding: DialogMenuBinding) {
super.onDestroyBinding(binding)
binding.menuName.isSelected = false
binding.menuInfo.isSelected = false
binding.menuOptionRecycler.adapter = null
}
@ -87,6 +91,7 @@ abstract class MenuDialogFragment<T : Music> :
}
final override fun onClick(item: MenuItem, viewHolder: RecyclerView.ViewHolder) {
findNavController().navigateUp()
@Suppress("UNCHECKED_CAST") onClick(menuModel.currentMusic.value as T, item.itemId)
}
}

View file

@ -26,6 +26,7 @@ import org.oxycblt.auxio.databinding.DialogMenuBinding
import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.resolveNames
@ -36,13 +37,15 @@ class SongMenuDialogFragment : MenuDialogFragment<Song>() {
override val menuModel: MenuViewModel by viewModels()
private val args: SongMenuDialogFragmentArgs by navArgs()
override val menuRes = args.menuRes
override val uid = args.songUid
override val menuRes: Int
get() = args.menuRes
override val uid: Music.UID
get() = args.songUid
override fun updateMusic(binding: DialogMenuBinding, music: Song) {
val context = requireContext()
binding.menuCover.bind(music)
binding.menuInfo.text = getString(R.string.lbl_song)
binding.menuType.text = getString(R.string.lbl_song)
binding.menuName.text = music.name.resolve(context)
binding.menuInfo.text = music.artists.resolveNames(context)
}
@ -55,13 +58,15 @@ class AlbumMenuDialogFragment : MenuDialogFragment<Album>() {
override val menuModel: MenuViewModel by viewModels()
private val args: AlbumMenuDialogFragmentArgs by navArgs()
override val menuRes = args.menuRes
override val uid = args.albumUid
override val menuRes: Int
get() = args.menuRes
override val uid: Music.UID
get() = args.albumUid
override fun updateMusic(binding: DialogMenuBinding, music: Album) {
val context = requireContext()
binding.menuCover.bind(music)
binding.menuInfo.text = getString(music.releaseType.stringRes)
binding.menuType.text = getString(music.releaseType.stringRes)
binding.menuName.text = music.name.resolve(context)
binding.menuInfo.text = music.artists.resolveNames(context)
}
@ -74,13 +79,15 @@ class ArtistMenuDialogFragment : MenuDialogFragment<Artist>() {
override val menuModel: MenuViewModel by viewModels()
private val args: ArtistMenuDialogFragmentArgs by navArgs()
override val menuRes = args.menuRes
override val uid = args.artistUid
override val menuRes: Int
get() = args.menuRes
override val uid: Music.UID
get() = args.artistUid
override fun updateMusic(binding: DialogMenuBinding, music: Artist) {
val context = requireContext()
binding.menuCover.bind(music)
binding.menuInfo.text = getString(R.string.lbl_artist)
binding.menuType.text = getString(R.string.lbl_artist)
binding.menuName.text = music.name.resolve(context)
binding.menuInfo.text =
getString(
@ -101,13 +108,15 @@ class GenreMenuDialogFragment : MenuDialogFragment<Genre>() {
override val menuModel: MenuViewModel by viewModels()
private val args: GenreMenuDialogFragmentArgs by navArgs()
override val menuRes = args.menuRes
override val uid = args.genreUid
override val menuRes: Int
get() = args.menuRes
override val uid: Music.UID
get() = args.genreUid
override fun updateMusic(binding: DialogMenuBinding, music: Genre) {
val context = requireContext()
binding.menuCover.bind(music)
binding.menuInfo.text = getString(R.string.lbl_genre)
binding.menuType.text = getString(R.string.lbl_genre)
binding.menuName.text = music.name.resolve(context)
binding.menuInfo.text =
getString(
@ -124,13 +133,15 @@ class PlaylistMenuDialogFragment : MenuDialogFragment<Playlist>() {
override val menuModel: MenuViewModel by viewModels()
private val args: PlaylistMenuDialogFragmentArgs by navArgs()
override val menuRes = args.menuRes
override val uid = args.playlistUid
override val menuRes: Int
get() = args.menuRes
override val uid: Music.UID
get() = args.playlistUid
override fun updateMusic(binding: DialogMenuBinding, music: Playlist) {
val context = requireContext()
binding.menuCover.bind(music)
binding.menuInfo.text = getString(R.string.lbl_genre)
binding.menuType.text = getString(R.string.lbl_playlist)
binding.menuName.text = music.name.resolve(context)
binding.menuInfo.text = context.getPlural(R.plurals.fmt_song_count, music.songs.size)
}

View file

@ -39,7 +39,7 @@ class MenuOptionAdapter(private val listener: ClickableListListener<MenuItem>) :
MenuOptionViewHolder.from(parent)
override fun onBindViewHolder(holder: MenuOptionViewHolder, position: Int) {
holder.bind(getItem(position))
holder.bind(getItem(position), listener)
}
}
@ -50,7 +50,8 @@ class MenuOptionAdapter(private val listener: ClickableListListener<MenuItem>) :
*/
class MenuOptionViewHolder private constructor(private val binding: ItemMenuOptionBinding) :
DialogRecyclerView.ViewHolder(binding.root) {
fun bind(item: MenuItem) {
fun bind(item: MenuItem, listener: ClickableListListener<MenuItem>) {
listener.bind(item, this)
binding.title.text = item.title
}

View file

@ -12,7 +12,6 @@
<!-- Size Namespace | Width & Heights for UI elements -->
<dimen name="size_cover_compact">48dp</dimen>
<dimen name="size_cover_medium">56dp</dimen>
<dimen name="size_cover_mid_large">92dp</dimen>
<dimen name="size_cover_large">128dp</dimen>
<dimen name="size_cover_mid_huge">192dp</dimen>
<dimen name="size_cover_huge">256dp</dimen>

View file

@ -65,12 +65,6 @@
<item name="sizing">medium</item>
</style>
<style name="Widget.Auxio.Image.MidLarge" parent="">
<item name="android:layout_width">@dimen/size_cover_mid_large</item>
<item name="android:layout_height">@dimen/size_cover_mid_large</item>
<item name="sizing">medium</item>
</style>
<style name="Widget.Auxio.Image.Large" parent="">
<item name="android:layout_width">@dimen/size_cover_large</item>
<item name="android:layout_height">@dimen/size_cover_large</item>