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 cc6e7c7c5..07ee8baf8 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt @@ -65,25 +65,6 @@ fun Long.toAlbumArtURI(): Uri { ) } -// Get the cover art -@BindingAdapter("coverArt") -fun ImageView.getCoverArt(any: Any) { - val uri = when (any) { - is Song -> any.album.coverUri - is Album -> any.coverUri - - // TODO: Artist images - - else -> Uri.EMPTY - } - - load(uri) { - crossfade(true) - placeholder(android.R.color.transparent) - error(R.drawable.ic_music) - } -} - fun Int.toSongCount(): Int { return if (this < 2) { R.string.label_single_song @@ -113,3 +94,30 @@ fun TextView.getSongAlbumCount(artist: Artist) { text = context.getString(R.string.format_combined_song_album, albums, songs) } + +// Get the cover art +@BindingAdapter("coverArt") +fun ImageView.getCoverArt(any: Any) { + val uri = when (any) { + is Song -> any.album.coverUri + is Album -> any.coverUri + + else -> Uri.EMPTY + } + + load(uri) { + crossfade(true) + placeholder(android.R.color.transparent) + error(R.drawable.ic_music) + } +} + +// Get the artist image. +@BindingAdapter("artistImage") +fun ImageView.getArtistImage(artist: Artist) { + load(artist.albums[0].coverUri) { + crossfade(true) + placeholder(android.R.color.transparent) + error(R.drawable.ic_music) + } +} diff --git a/app/src/main/java/org/oxycblt/auxio/music/models/Album.kt b/app/src/main/java/org/oxycblt/auxio/music/models/Album.kt index cd93caeb3..9d5262891 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/models/Album.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/models/Album.kt @@ -14,4 +14,8 @@ data class Album( lateinit var artist: Artist val songs = mutableListOf() + + fun finalize() { + songs.sortBy { it.track } + } } diff --git a/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt b/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt index 91f11ebb2..4bbb2b1a2 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt @@ -9,4 +9,13 @@ data class Artist( val albums = mutableListOf() var numAlbums = 0 var numSongs = 0 + + fun finalize() { + albums.sortByDescending { it.year } + + numAlbums = albums.size + albums.forEach { album -> + numSongs += album.numSongs + } + } } diff --git a/app/src/main/java/org/oxycblt/auxio/music/models/Genre.kt b/app/src/main/java/org/oxycblt/auxio/music/models/Genre.kt index dcbd66219..4840b4fb7 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/models/Genre.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/models/Genre.kt @@ -6,4 +6,9 @@ data class Genre( ) { val artists = mutableListOf() var numArtists = 0 + + fun finalize() { + artists.sortByDescending { it.name } + numArtists = artists.size + } } diff --git a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt index 2ff58d371..d4fcd1250 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt @@ -54,6 +54,7 @@ class MusicSorter( } unknownAlbum.numSongs = unknownAlbum.songs.size + unknownAlbum.finalize() albums.add(unknownAlbum) @@ -62,6 +63,8 @@ class MusicSorter( "${unknownSongs.size} songs were placed into an unknown album." ) } + + albums.sortByDescending { it.title } } private fun sortAlbumsIntoArtists() { @@ -79,10 +82,7 @@ class MusicSorter( artist.albums.add(album) } - artist.numAlbums = artist.albums.size - artist.albums.forEach { album -> - artist.numSongs += album.numSongs - } + artist.finalize() unknownAlbums.removeAll(artistAlbums) } @@ -98,10 +98,7 @@ class MusicSorter( unknownArtist.albums.add(album) } - unknownArtist.numAlbums = unknownArtist.albums.size - unknownArtist.albums.forEach { album -> - unknownArtist.numSongs += album.numSongs - } + unknownArtist.finalize() artists.add(unknownArtist) @@ -110,6 +107,8 @@ class MusicSorter( "${unknownAlbums.size} albums were placed into an unknown artist." ) } + + artists.sortByDescending { it.name } } private fun sortArtistsIntoGenres() { @@ -150,6 +149,8 @@ class MusicSorter( "${unknownArtists.size} albums were placed into an unknown genre." ) } + + genres.sortByDescending { it.name } } // Correct any empty names [""] with the proper placeholders [Unknown Album] diff --git a/app/src/main/res/layout/artist_item.xml b/app/src/main/res/layout/artist_item.xml index ed247cc15..4fb1e8ff1 100644 --- a/app/src/main/res/layout/artist_item.xml +++ b/app/src/main/res/layout/artist_item.xml @@ -18,29 +18,20 @@ android:focusable="true" android:padding="@dimen/padding_medium"> - + @@ -49,13 +40,13 @@ android:id="@+id/album_song_count" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/margin_medium" android:textAppearance="?android:attr/textAppearanceListItemSecondary" android:textColor="?android:attr/textColorSecondary" app:albumSongCount="@{artist}" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@+id/artist_image" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/artist_name" tools:text="2 Albums, 20 Songs" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml index 6505e74fe..a98600dcf 100644 --- a/app/src/main/res/layout/fragment_library.xml +++ b/app/src/main/res/layout/fragment_library.xml @@ -17,7 +17,7 @@ android:elevation="@dimen/elevation_normal" app:titleTextAppearance="@style/TextAppearance.Toolbar.Bold" app:title="@string/title_library_fragment" - tools:titleTextColor="@color/blue"/> + tools:titleTextColor="@color/blue" /> + tools:titleTextColor="@color/blue" /> - \ No newline at end of file + android:duration="@android:integer/config_longAnimTime"> \ No newline at end of file