From 0e6750b19cae6d01fa4719857523086cf8806059 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Mon, 14 Sep 2020 15:06:10 -0600 Subject: [PATCH] Add more details to ArtistDetailFragment Add the Artist Name/Genre/Counts to ArtistDetailFragment. --- .../org/oxycblt/auxio/music/MusicUtils.kt | 19 ++++++- .../auxio/music/processing/MusicLoader.kt | 3 +- .../res/layout/fragment_artist_detail.xml | 56 +++++++++++++++++-- app/src/main/res/layout/item_song.xml | 2 +- app/src/main/res/values/dimens.xml | 6 +- app/src/main/res/values/strings.xml | 2 +- app/src/main/res/values/styles.xml | 6 ++ 7 files changed, 83 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt index 9629e68d2..8f02e6116 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt @@ -1,6 +1,7 @@ package org.oxycblt.auxio.music import android.content.ContentUris +import android.content.Context import android.net.Uri import android.provider.MediaStore import android.widget.TextView @@ -69,8 +70,7 @@ fun TextView.getAlbumSongs(album: Album) { } @BindingAdapter("artistCounts") -fun TextView.getArtistCounts(artist: Artist) { - // Get the quantity string for both albums & artists, and then stitch them together. +fun TextView.bindArtistCounts(artist: Artist) { val albums = context.resources.getQuantityString( R.plurals.format_albums, artist.numAlbums, artist.numAlbums ) @@ -80,3 +80,18 @@ fun TextView.getArtistCounts(artist: Artist) { text = context.getString(R.string.format_double_counts, albums, songs) } + +@BindingAdapter("artistGenre") +fun TextView.getArtistGenre(artist: Artist) { + // If the artist has more than one genre, pick the most used one. + // TODO: Add an option to display all genres. + val genre: String = if (artist.genres.size > 1) { + val genres = artist.genres.groupBy { it.name } + + genres.keys.sortedByDescending { genres[it]?.size }[0] + } else { + artist.genres[0].name + } + + text = genre +} diff --git a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt index 36cd0dfa2..a001332d8 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt @@ -81,8 +81,7 @@ class MusicLoader(private val resolver: ContentResolver) { var name = cursor.getString(nameIndex) ?: "" // If a genre is still in an old int-based format [Android formats it as "(INT)"], - // convert that to the corresponding ID3 genre. Really hope anyone doesn't have - // a genre that contains parentheses. + // convert that to the corresponding ID3 genre. if (name.contains(Regex("[0123456789)]"))) { name = name.toNamedGenre() } diff --git a/app/src/main/res/layout/fragment_artist_detail.xml b/app/src/main/res/layout/fragment_artist_detail.xml index 593ba2a9d..8d4ca8ae8 100644 --- a/app/src/main/res/layout/fragment_artist_detail.xml +++ b/app/src/main/res/layout/fragment_artist_detail.xml @@ -13,8 +13,8 @@ + android:animateLayoutChanges="true" + android:orientation="vertical"> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_song.xml b/app/src/main/res/layout/item_song.xml index 0783afcb8..2b1fa0af7 100644 --- a/app/src/main/res/layout/item_song.xml +++ b/app/src/main/res/layout/item_song.xml @@ -58,7 +58,7 @@ android:maxLines="1" android:textAppearance="?android:attr/textAppearanceListItemSecondary" android:textColor="?android:attr/textColorSecondary" - android:text="@{@string/format_song_info(song.album.artist.name, song.album.name)}" + android:text="@{@string/format_info(song.album.artist.name, song.album.name)}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/duration" app:layout_constraintStart_toEndOf="@+id/cover" diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 19aa3c947..8fbf3deb6 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -13,7 +13,11 @@ 44dp 56dp - 168dp + 230dp + + 26sp + 10sp' + 2sp 4dp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c863d435d..9d27a952f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,7 +16,7 @@ Unknown Artist Unknown Album - %1$s / %2$s + %1$s / %2$s %1$s, %2$s diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 37696048a..e43d5d0c8 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -11,4 +11,10 @@ @font/inter_black ?android:attr/colorPrimary + + \ No newline at end of file