diff --git a/CHANGELOG.md b/CHANGELOG.md index 00c2bfb19..40b39161f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Upgraded music ID management: - Added support for MusicBrainz IDs (MBIDs) - Use the more unique MD5 hash of metadata when MBIDs can't be used +- Genres now display a list of artists - Added toggle to load non-music (Such as podcasts) - Music loader now caches parsed metadata for faster load times - Redesigned icon diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt index e4de4a462..ac3787331 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt @@ -277,6 +277,8 @@ class DetailViewModel(application: Application) : private fun refreshGenreData(genre: Genre) { logD("Refreshing genre data") val data = mutableListOf(genre) + data.add(Header(R.string.lbl_artists)) + data.addAll(genre.artists) data.add(SortHeader(R.string.lbl_songs)) data.addAll(genreSort.songs(genre.songs)) _genreData.value = data diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt index ba2257865..780261460 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt @@ -35,6 +35,7 @@ import org.oxycblt.auxio.ui.recycler.MenuItemListener import org.oxycblt.auxio.ui.recycler.SimpleItemCallback import org.oxycblt.auxio.util.context import org.oxycblt.auxio.util.inflater +import org.oxycblt.auxio.util.logD abstract class DetailAdapter( private val listener: L, diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt index c82b8115e..75074a82d 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt @@ -24,9 +24,12 @@ import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.ItemDetailBinding +import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.playback.formatDurationMs +import org.oxycblt.auxio.ui.recycler.ArtistViewHolder +import org.oxycblt.auxio.ui.recycler.Header import org.oxycblt.auxio.ui.recycler.Item import org.oxycblt.auxio.ui.recycler.SimpleItemCallback import org.oxycblt.auxio.ui.recycler.SongViewHolder @@ -43,6 +46,7 @@ class GenreDetailAdapter(private val listener: Listener) : override fun getItemViewType(position: Int) = when (differ.currentList[position]) { is Genre -> GenreDetailViewHolder.VIEW_TYPE + is Artist -> ArtistViewHolder.VIEW_TYPE is Song -> SongViewHolder.VIEW_TYPE else -> super.getItemViewType(position) } @@ -50,6 +54,7 @@ class GenreDetailAdapter(private val listener: Listener) : override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = when (viewType) { GenreDetailViewHolder.VIEW_TYPE -> GenreDetailViewHolder.new(parent) + ArtistViewHolder.VIEW_TYPE -> ArtistViewHolder.new(parent) SongViewHolder.VIEW_TYPE -> SongViewHolder.new(parent) else -> super.onCreateViewHolder(parent, viewType) } @@ -64,6 +69,7 @@ class GenreDetailAdapter(private val listener: Listener) : if (payloads.isEmpty()) { when (val item = differ.currentList[position]) { is Genre -> (holder as GenreDetailViewHolder).bind(item, listener) + is Artist -> (holder as ArtistViewHolder).bind(item, listener) is Song -> (holder as SongViewHolder).bind(item, listener) } }