Various artists is working
This commit is contained in:
parent
2ed5e236da
commit
6747af076f
3 changed files with 31 additions and 5 deletions
|
@ -27,6 +27,8 @@ data class Artist(
|
|||
val name = safeGetFirstAlbum().safeGetFirstSong().albumArtist
|
||||
return if (MusicUtil.isArtistNameUnknown(name)) {
|
||||
UNKNOWN_ARTIST_DISPLAY_NAME
|
||||
} else if (MusicUtil.isVariousArtists(name)) {
|
||||
VARIOUS_ARTISTS_DISPLAY_NAME
|
||||
} else safeGetFirstAlbum().safeGetFirstSong().artistName
|
||||
}
|
||||
|
||||
|
@ -51,6 +53,8 @@ data class Artist(
|
|||
|
||||
companion object {
|
||||
const val UNKNOWN_ARTIST_DISPLAY_NAME = "Unknown Artist"
|
||||
const val VARIOUS_ARTISTS_DISPLAY_NAME = "Various Artists"
|
||||
const val VARIOUS_ARTISTS_ID : Long = -2
|
||||
val empty = Artist(-1, emptyList())
|
||||
|
||||
}
|
||||
|
|
|
@ -40,6 +40,19 @@ class RealArtistRepository(
|
|||
PreferenceUtil.artistSongSortOrder
|
||||
}
|
||||
override fun artist(artistId: Long): Artist {
|
||||
if (artistId == Artist.VARIOUS_ARTISTS_ID) {
|
||||
// Get Various Artists
|
||||
val songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
null,
|
||||
null,
|
||||
getSongLoaderSortOrder()
|
||||
)
|
||||
)
|
||||
val albums = albumRepository.splitIntoAlbums(songs).filter { it.albumArtist == Artist.VARIOUS_ARTISTS_DISPLAY_NAME }
|
||||
return Artist(Artist.VARIOUS_ARTISTS_ID, albums)
|
||||
}
|
||||
|
||||
val songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
AudioColumns.ARTIST_ID + "=?",
|
||||
|
@ -68,9 +81,7 @@ class RealArtistRepository(
|
|||
)
|
||||
)
|
||||
|
||||
val sortString = if (PreferenceUtil.artistSortOrder.contains("DESC")) String.CASE_INSENSITIVE_ORDER.reversed() else String.CASE_INSENSITIVE_ORDER
|
||||
|
||||
return splitIntoAlbumArtists(albumRepository.splitIntoAlbums(songs)).sortedWith(compareBy(sortString) { it.name })
|
||||
return splitIntoAlbumArtists(albumRepository.splitIntoAlbums(songs))
|
||||
}
|
||||
|
||||
override fun artists(query: String): List<Artist> {
|
||||
|
@ -89,8 +100,12 @@ class RealArtistRepository(
|
|||
return albums.groupBy { it.albumArtist }
|
||||
.map {
|
||||
val currentAlbums = it.value
|
||||
if (albums.isNotEmpty()) {
|
||||
if (currentAlbums.isNotEmpty()) {
|
||||
if (currentAlbums[0].albumArtist == Artist.VARIOUS_ARTISTS_DISPLAY_NAME) {
|
||||
Artist(Artist.VARIOUS_ARTISTS_ID, currentAlbums)
|
||||
} else {
|
||||
Artist(currentAlbums[0].artistId, currentAlbums)
|
||||
}
|
||||
} else {
|
||||
Artist.empty
|
||||
}
|
||||
|
|
|
@ -299,6 +299,13 @@ object MusicUtil : KoinComponent {
|
|||
return tempName == "unknown" || tempName == "<unknown>"
|
||||
}
|
||||
|
||||
fun isVariousArtists(artistName: String): Boolean {
|
||||
if (artistName == Artist.VARIOUS_ARTISTS_DISPLAY_NAME) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun isFavorite(context: Context, song: Song): Boolean {
|
||||
return PlaylistsUtil
|
||||
.doPlaylistContains(context, getFavoritesPlaylist(context).id, song.id)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue