diff --git a/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt b/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt index 63f773cf9..a4d0e6917 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt @@ -322,7 +322,11 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr * * @param song The [Song] to bind to the view. */ - fun bind(song: Song) = bind(song.album) + fun bind(song: Song) = + bind( + listOf(song), + context.getString(R.string.desc_album_cover, song.album.name), + R.drawable.ic_album_24) /** * Bind an [Album]'s image to this view. diff --git a/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt b/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt index ef9af4c3f..0f0b3fbb7 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt @@ -117,13 +117,17 @@ constructor( * by their names. "Representation" is defined by how many [Song]s were found to be linked to * the given [Album] in the given [Song] list. */ - fun computeCoverOrdering(songs: List) = - Sort(Sort.Mode.ByAlbum, Sort.Direction.ASCENDING) - .songs(songs) - .groupBy { it.album } - .entries - .sortedByDescending { it.value.size } - .map { it.key } + fun computeCoverOrdering(songs: List): List { + if (songs.isEmpty()) return listOf() + if (songs.size == 1) return listOf(songs.first().album) + + val sortedMap = + sortedMapOf(Sort.Mode.ByName.getAlbumComparator(Sort.Direction.ASCENDING)) + for (song in songs) { + sortedMap[song.album] = (sortedMap[song.album] ?: 0) + 1 + } + return sortedMap.keys.sortedByDescending { sortedMap[it] } + } private suspend fun openCoverInputStream(album: Album) = try { @@ -205,7 +209,7 @@ constructor( withContext(Dispatchers.IO) { context.contentResolver.openInputStream(album.coverUri) } /** Derived from phonograph: https://github.com/kabouzeid/Phonograph */ - private suspend fun createMosaic(streams: List, size: Size): FetchResult { + private fun createMosaic(streams: List, size: Size): FetchResult { // Use whatever size coil gives us to create the mosaic. val mosaicSize = AndroidSize(size.width.mosaicSize(), size.height.mosaicSize()) val mosaicFrameSize = diff --git a/app/src/main/java/org/oxycblt/auxio/util/ContextUtil.kt b/app/src/main/java/org/oxycblt/auxio/util/ContextUtil.kt index c8bcd6a9c..bf6d9313b 100644 --- a/app/src/main/java/org/oxycblt/auxio/util/ContextUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/util/ContextUtil.kt @@ -23,7 +23,6 @@ import android.content.Context import android.content.Intent import android.content.res.ColorStateList import android.content.res.Configuration -import android.os.Build import android.util.TypedValue import android.view.LayoutInflater import android.widget.Toast