From 0417a77b33f826d72550fb53856ea6f1608a41e6 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sun, 13 Mar 2022 20:18:26 -0600 Subject: [PATCH] music: make resolvedName standard Make resolvedName the standard name to use across all music items. Previously, the way Auxio differentiated between names in UIs was to use name for normal items and resolvedName for parents. This was odd and disjointed, as it muddled the meanings of the two fields and lead to a lot of bugs. Fix this by making resolvedName *the* standard name to use across all music items, even in ones that don't have to resolve their name. --- .../java/org/oxycblt/auxio/MainActivity.kt | 4 +- .../detail/recycler/AlbumDetailAdapter.kt | 4 +- .../org/oxycblt/auxio/home/HomeFragment.kt | 3 +- .../auxio/home/list/AlbumListFragment.kt | 2 +- .../auxio/home/list/SongListFragment.kt | 4 +- .../auxio/home/tabs/TabDragCallback.kt | 4 +- .../java/org/oxycblt/auxio/music/Models.kt | 50 +++++++++---------- .../org/oxycblt/auxio/music/MusicLoader.kt | 8 +-- .../auxio/playback/PlaybackFragment.kt | 4 +- .../playback/state/PlaybackStateManager.kt | 6 +-- .../playback/system/PlaybackNotification.kt | 2 +- .../auxio/playback/system/PlaybackService.kt | 6 +-- .../system/PlaybackSessionConnector.kt | 4 +- .../oxycblt/auxio/search/SearchFragment.kt | 2 +- .../oxycblt/auxio/search/SearchViewModel.kt | 13 +---- .../java/org/oxycblt/auxio/ui/ActionMenu.kt | 4 +- .../main/java/org/oxycblt/auxio/ui/Sort.kt | 2 +- .../java/org/oxycblt/auxio/widgets/Forms.kt | 2 +- .../res/layout-land/fragment_playback.xml | 4 +- .../layout-sw600dp-land/fragment_playback.xml | 4 +- .../res/layout-sw600dp/fragment_playback.xml | 4 +- .../res/layout-sw640dp/view_playback_bar.xml | 4 +- .../layout-w600dp-land/fragment_playback.xml | 4 +- .../res/layout-w600dp/view_playback_bar.xml | 4 +- app/src/main/res/layout/fragment_playback.xml | 4 +- app/src/main/res/layout/item_album.xml | 4 +- app/src/main/res/layout/item_album_song.xml | 2 +- app/src/main/res/layout/item_artist_album.xml | 4 +- app/src/main/res/layout/item_artist_song.xml | 4 +- app/src/main/res/layout/item_genre_song.xml | 4 +- app/src/main/res/layout/item_queue_song.xml | 4 +- app/src/main/res/layout/item_song.xml | 4 +- app/src/main/res/layout/view_playback_bar.xml | 4 +- 33 files changed, 83 insertions(+), 99 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index 473ea97de..ef04cd764 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -40,8 +40,8 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat /** * The single [AppCompatActivity] for Auxio. * - * TODO: Add a new view for crashes with a stack trace - * TODO: Custom language support TODO: Rework menus [perhaps add multi-select] + * TODO: Add a new view for crashes with a stack trace TODO: Custom language support TODO: Rework + * menus [perhaps add multi-select] */ class MainActivity : AppCompatActivity() { private val playbackModel: PlaybackViewModel by viewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt index 004cb456c..29e362868 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt @@ -127,10 +127,10 @@ class AlbumDetailAdapter( override fun onBind(data: Album) { binding.detailCover.apply { bindAlbumArt(data) - contentDescription = context.getString(R.string.desc_album_cover, data.name) + contentDescription = context.getString(R.string.desc_album_cover, data.resolvedName) } - binding.detailName.text = data.name + binding.detailName.text = data.resolvedName binding.detailSubhead.apply { text = data.artist.resolvedName diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index 021e60cd8..80442000c 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -55,8 +55,7 @@ import org.oxycblt.auxio.util.logTraceOrThrow * respective item. * @author OxygenCobalt * - * TODO: Make tabs invisible when there is only one - * TODO: Add duration and song count sorts + * TODO: Make tabs invisible when there is only one TODO: Add duration and song count sorts */ class HomeFragment : Fragment() { private val playbackModel: PlaybackViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt index e90872c90..830b310df 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt @@ -67,7 +67,7 @@ class AlbumListFragment : HomeListFragment() { // Change how we display the popup depending on the mode. when (homeModel.getSortForDisplay(DisplayMode.SHOW_ALBUMS)) { // By Name -> Use Name - is Sort.ByName -> album.name.sliceArticle().first().uppercase() + is Sort.ByName -> album.resolvedName.sliceArticle().first().uppercase() // By Artist -> Use Artist Name is Sort.ByArtist -> album.artist.resolvedName.sliceArticle().first().uppercase() diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index f0068aa15..4ee24dba9 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -62,14 +62,14 @@ class SongListFragment : HomeListFragment() { // based off the names of the parent objects and not the child objects. when (homeModel.getSortForDisplay(DisplayMode.SHOW_SONGS)) { // Name -> Use name - is Sort.ByName -> song.name.sliceArticle().first().uppercase() + is Sort.ByName -> song.resolvedName.sliceArticle().first().uppercase() // Artist -> Use Artist Name is Sort.ByArtist -> song.album.artist.resolvedName.sliceArticle().first().uppercase() // Album -> Use Album Name - is Sort.ByAlbum -> song.album.name.sliceArticle().first().uppercase() + is Sort.ByAlbum -> song.album.resolvedName.sliceArticle().first().uppercase() // Year -> Use Full Year is Sort.ByYear -> song.album.year?.toString() ?: getString(R.string.def_date) diff --git a/app/src/main/java/org/oxycblt/auxio/home/tabs/TabDragCallback.kt b/app/src/main/java/org/oxycblt/auxio/home/tabs/TabDragCallback.kt index 037fec391..0b86b8f2a 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/tabs/TabDragCallback.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/tabs/TabDragCallback.kt @@ -25,8 +25,8 @@ import androidx.recyclerview.widget.RecyclerView * A simple [ItemTouchHelper.Callback] that handles dragging items in the tab customization menu. * Unlike QueueAdapter's ItemTouchHelper, this one is bare and simple. * - * TODO: Consider unifying the - * shared behavior between this and QueueDragCallback into a single class. + * TODO: Consider unifying the shared behavior between this and QueueDragCallback into a single + * class. */ class TabDragCallback(private val getTabs: () -> Array) : ItemTouchHelper.Callback() { private val tabs: Array diff --git a/app/src/main/java/org/oxycblt/auxio/music/Models.kt b/app/src/main/java/org/oxycblt/auxio/music/Models.kt index e22ff0847..1b7364ede 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/Models.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/Models.kt @@ -32,23 +32,10 @@ sealed class Item { abstract val id: Long } -/** - * [Item] variant that represents a music item. - * - * TODO: Make name the actual display name and move raw names (including file names) to a - * new field called rawName. - */ +/** [Item] variant that represents a music item. */ sealed class Music : Item() { /** The raw name of this item. */ - abstract val name: String -} - -/** - * [Music] variant that denotes that this object is a parent of other data objects, such as an - * [Album] or [Artist] - * @property resolvedName - */ -sealed class MusicParent : Music() { + abstract val rawName: String /** * A name resolved from it's raw form to a form suitable to be shown in a ui. Ex. "unknown" * would become Unknown Artist, (124) would become its proper genre name, etc. @@ -56,9 +43,15 @@ sealed class MusicParent : Music() { abstract val resolvedName: String } +/** + * [Music] variant that denotes that this object is a parent of other data objects, such as an + * [Album] or [Artist] + */ +sealed class MusicParent : Music() + /** The data object for a song. */ data class Song( - override val name: String, + override val rawName: String, /** The file name of this song, excluding the full path. */ val fileName: String, /** The total duration of this song, in millis. */ @@ -80,14 +73,17 @@ data class Song( ) : Music() { override val id: Long get() { - var result = name.hashCode().toLong() - result = 31 * result + album.name.hashCode() - result = 31 * result + album.artist.name.hashCode() + var result = rawName.hashCode().toLong() + result = 31 * result + album.rawName.hashCode() + result = 31 * result + album.artist.rawName.hashCode() result = 31 * result + (track ?: 0) result = 31 * result + duration.hashCode() return result } + override val resolvedName: String + get() = rawName + /** The URI for this song. */ val uri: Uri get() = @@ -155,7 +151,7 @@ data class Song( /** The data object for an album. */ data class Album( - override val name: String, + override val rawName: String, /** The latest year of the songs in this album. Null if none of the songs had metadata. */ val year: Int?, /** The URI for the cover art corresponding to this album. */ @@ -173,14 +169,14 @@ data class Album( override val id: Long get() { - var result = name.hashCode().toLong() - result = 31 * result + artist.name.hashCode() + var result = rawName.hashCode().toLong() + result = 31 * result + artist.rawName.hashCode() result = 31 * result + (year ?: 0) return result } override val resolvedName: String - get() = name + get() = rawName /** The formatted total duration of this album */ val totalDuration: String @@ -214,7 +210,7 @@ data class Album( * artist or artist field, not the individual performers of an artist. */ data class Artist( - override val name: String, + override val rawName: String, override val resolvedName: String, /** The albums of this artist. */ val albums: List @@ -225,7 +221,7 @@ data class Artist( } } - override val id = name.hashCode().toLong() + override val id = rawName.hashCode().toLong() /** The songs of this artist. */ val songs = albums.flatMap { it.songs } @@ -233,7 +229,7 @@ data class Artist( /** The data object for a genre. */ data class Genre( - override val name: String, + override val rawName: String, override val resolvedName: String, val songs: List ) : MusicParent() { @@ -243,7 +239,7 @@ data class Genre( } } - override val id = name.hashCode().toLong() + override val id = rawName.hashCode().toLong() /** The formatted total duration of this genre */ val totalDuration: String diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt index a7eb4da02..2db8378cf 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt @@ -112,7 +112,7 @@ class MusicLoader { song.internalIsMissingArtist || song.internalIsMissingGenre) { throw IllegalStateException( - "Found malformed song: ${song.name} [" + + "Found malformed song: ${song.rawName} [" + "album: ${!song.internalIsMissingAlbum} " + "artist: ${!song.internalIsMissingArtist} " + "genre: ${!song.internalIsMissingGenre}]") @@ -240,7 +240,7 @@ class MusicLoader { songs = songs .distinctBy { - it.name to + it.rawName to it.internalMediaStoreAlbumName to it.internalMediaStoreArtistName to it.internalMediaStoreAlbumArtistName to @@ -366,8 +366,8 @@ class MusicLoader { // Songs that don't have a genre will be thrown into an unknown genre. val unknownGenre = Genre( - name = MediaStore.UNKNOWN_STRING, - resolvedName = context.getString(R.string.def_genre), + MediaStore.UNKNOWN_STRING, + context.getString(R.string.def_genre), songsWithoutGenres) genres.add(unknownGenre) diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt index 93ce82a10..2956284b1 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt @@ -65,9 +65,7 @@ class PlaybackFragment : Fragment() { binding.root.setOnApplyWindowInsetsListener { _, insets -> val bars = insets.systemBarInsetsCompat - binding.root.updatePadding(top = bars.top, bottom = bars.bottom) - insets } @@ -97,7 +95,7 @@ class PlaybackFragment : Fragment() { playbackModel.song.observe(viewLifecycleOwner) { song -> if (song != null) { - logD("Updating song display to ${song.name}") + logD("Updating song display to ${song.rawName}") binding.song = song binding.playbackSeekBar.setDuration(song.seconds) } else { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt index f1c07d8fe..19c583df8 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt @@ -150,7 +150,7 @@ class PlaybackStateManager private constructor() { * @param mode The [PlaybackMode] to construct the queue off of. */ fun playSong(song: Song, mode: PlaybackMode) { - logD("Updating song to ${song.name} and mode to $mode") + logD("Updating song to ${song.rawName} and mode to $mode") when (mode) { PlaybackMode.ALL_SONGS -> { @@ -185,7 +185,7 @@ class PlaybackStateManager private constructor() { * @param shuffled Whether the queue is shuffled or not */ fun playParent(parent: MusicParent, shuffled: Boolean) { - logD("Playing ${parent.name}") + logD("Playing ${parent.rawName}") mParent = parent mIndex = 0 @@ -270,7 +270,7 @@ class PlaybackStateManager private constructor() { return false } - logD("Removing item ${mQueue[index].name}") + logD("Removing item ${mQueue[index].rawName}") mQueue.removeAt(index) pushQueueUpdate() return true diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt index a88e4fe99..de315b24f 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt @@ -73,7 +73,7 @@ private constructor(private val context: Context, mediaToken: MediaSessionCompat * @param onDone What to do when the loading of the album art is finished */ fun setMetadata(song: Song, onDone: () -> Unit) { - setContentTitle(song.name) + setContentTitle(song.resolvedName) setContentText(song.resolvedArtistName) // On older versions of android [API <24], show the song's album on the subtext instead of diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt index 9fa263e4b..b700790d6 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt @@ -256,7 +256,7 @@ class PlaybackService : override fun onSongUpdate(song: Song?) { if (song != null) { - logD("Setting player to ${song.name}") + logD("Setting player to ${song.rawName}") player.setMediaItem(MediaItem.fromUri(song.uri)) player.prepare() notification.setMetadata(song, ::startForegroundOrNotify) @@ -500,8 +500,8 @@ class PlaybackService : /** * Pause from a headset plug. * - * TODO: Find a way to centralize this stuff into a single BroadcastReceiver instead of - * the weird disjointed arrangement between MediaSession and this. + * TODO: Find a way to centralize this stuff into a single BroadcastReceiver instead of the + * weird disjointed arrangement between MediaSession and this. */ private fun pauseFromPlug() { if (playbackManager.song != null) { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackSessionConnector.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackSessionConnector.kt index afb9c999c..4953d5aea 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackSessionConnector.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackSessionConnector.kt @@ -118,8 +118,8 @@ class PlaybackSessionConnector( val builder = MediaMetadataCompat.Builder() - .putString(MediaMetadataCompat.METADATA_KEY_TITLE, song.name) - .putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, song.name) + .putString(MediaMetadataCompat.METADATA_KEY_TITLE, song.resolvedName) + .putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, song.resolvedName) .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artistName) .putString(MediaMetadataCompat.METADATA_KEY_AUTHOR, artistName) .putString(MediaMetadataCompat.METADATA_KEY_COMPOSER, artistName) diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index ae2ac2011..dffe98ae1 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -180,7 +180,7 @@ class SearchFragment : Fragment() { if (!searchModel.isNavigating) { searchModel.setNavigating(true) - logD("Navigating to the detail fragment for ${item.name}") + logD("Navigating to the detail fragment for ${item.rawName}") findNavController() .navigate( diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt index 2cccf928e..ef47a3320 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt @@ -28,7 +28,6 @@ import org.oxycblt.auxio.R import org.oxycblt.auxio.music.Header import org.oxycblt.auxio.music.Item import org.oxycblt.auxio.music.Music -import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.settings.SettingsManager import org.oxycblt.auxio.ui.DisplayMode @@ -144,19 +143,11 @@ class SearchViewModel : ViewModel() { */ private fun List.filterByOrNull(value: String): List? { val filtered = filter { - // Ensure the name we match with is correct. - val name = - if (it is MusicParent) { - it.resolvedName - } else { - it.name - } - // First see if the normal item name will work. If that fails, try the "normalized" // [e.g all accented/unicode chars become latin chars] instead. Hopefully this // shouldn't break other language's search functionality. - name.contains(value, ignoreCase = true) || - name.normalized().contains(value, ignoreCase = true) + it.resolvedName.contains(value, ignoreCase = true) || + it.resolvedName.normalized().contains(value, ignoreCase = true) } return filtered.ifEmpty { null } diff --git a/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt b/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt index 9b8948dd6..73e6f33ca 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt @@ -56,8 +56,8 @@ fun Fragment.newMenu(anchor: View, data: Item, flag: Int = ActionMenu.FLAG_NONE) * @throws IllegalStateException When there is no menu for this specific datatype/flag * @author OxygenCobalt * - * TODO: Stop scrolling when a menu is open TODO: Prevent duplicate menus from showing up - * TODO: Maybe replace this with a bottom sheet? + * TODO: Stop scrolling when a menu is open TODO: Prevent duplicate menus from showing up TODO: + * Maybe replace this with a bottom sheet? */ class ActionMenu( activity: AppCompatActivity, diff --git a/app/src/main/java/org/oxycblt/auxio/ui/Sort.kt b/app/src/main/java/org/oxycblt/auxio/ui/Sort.kt index d82026d36..7465b333f 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/Sort.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/Sort.kt @@ -98,7 +98,7 @@ sealed class Sort(open val isAscending: Boolean) { */ fun sortSongs(songs: Collection): List { return when (this) { - is ByName -> songs.stringSort { it.name } + is ByName -> songs.stringSort { it.resolvedName } else -> sortAlbums(songs.groupBy { it.album }.keys).flatMap { album -> album.songs.intSort(true) { it.track ?: 0 } diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt b/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt index 9bb15a4e2..094e2f4ce 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt @@ -90,7 +90,7 @@ private fun createViews(context: Context, @LayoutRes layout: Int): RemoteViews { private fun RemoteViews.applyMeta(context: Context, state: WidgetState): RemoteViews { applyCover(context, state) - setTextViewText(R.id.widget_song, state.song.name) + setTextViewText(R.id.widget_song, state.song.resolvedName) setTextViewText(R.id.widget_artist, state.song.resolvedArtistName) return this diff --git a/app/src/main/res/layout-land/fragment_playback.xml b/app/src/main/res/layout-land/fragment_playback.xml index af7f8d7f9..9f646b1cc 100644 --- a/app/src/main/res/layout-land/fragment_playback.xml +++ b/app/src/main/res/layout-land/fragment_playback.xml @@ -39,7 +39,7 @@ style="@style/Widget.Auxio.Image.Full" android:layout_marginStart="@dimen/spacing_mid_large" android:layout_marginTop="@dimen/spacing_mid_large" - android:contentDescription="@{@string/desc_album_cover(song.name)}" + android:contentDescription="@{@string/desc_album_cover(song.resolvedName)}" app:albumArt="@{song}" app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar" app:layout_constraintStart_toStartOf="parent" @@ -68,7 +68,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:onClick="@{() -> detailModel.navToItem(playbackModel.song)}" - android:text="@{song.name}" + android:text="@{song.resolvedName}" tools:text="Song Name" /> diff --git a/app/src/main/res/layout-sw600dp-land/fragment_playback.xml b/app/src/main/res/layout-sw600dp-land/fragment_playback.xml index 81d65ddd1..5d543e24c 100644 --- a/app/src/main/res/layout-sw600dp-land/fragment_playback.xml +++ b/app/src/main/res/layout-sw600dp-land/fragment_playback.xml @@ -38,7 +38,7 @@ android:id="@+id/playback_cover" style="@style/Widget.Auxio.Image.Full" android:layout_margin="@dimen/spacing_mid_large" - android:contentDescription="@{@string/desc_album_cover(song.name)}" + android:contentDescription="@{@string/desc_album_cover(song.resolvedName)}" app:albumArt="@{song}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/playback_song_container" @@ -67,7 +67,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:onClick="@{() -> detailModel.navToItem(playbackModel.song)}" - android:text="@{song.name}" + android:text="@{song.resolvedName}" tools:text="Song Name" /> diff --git a/app/src/main/res/layout-sw600dp/fragment_playback.xml b/app/src/main/res/layout-sw600dp/fragment_playback.xml index f745b58d0..f4d7aff03 100644 --- a/app/src/main/res/layout-sw600dp/fragment_playback.xml +++ b/app/src/main/res/layout-sw600dp/fragment_playback.xml @@ -38,7 +38,7 @@ android:id="@+id/playback_cover" style="@style/Widget.Auxio.Image.Full" android:layout_margin="@dimen/spacing_large" - android:contentDescription="@{@string/desc_album_cover(song.name)}" + android:contentDescription="@{@string/desc_album_cover(song.resolvedName)}" app:albumArt="@{song}" app:layout_constraintBottom_toTopOf="@+id/playback_song" app:layout_constraintEnd_toEndOf="parent" @@ -54,7 +54,7 @@ android:layout_marginStart="@dimen/spacing_large" android:layout_marginEnd="@dimen/spacing_large" android:onClick="@{() -> detailModel.navToItem(playbackModel.song)}" - android:text="@{song.name}" + android:text="@{song.resolvedName}" app:layout_constraintBottom_toTopOf="@+id/playback_artist" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout-sw640dp/view_playback_bar.xml b/app/src/main/res/layout-sw640dp/view_playback_bar.xml index 19af73eb0..794ad3054 100644 --- a/app/src/main/res/layout-sw640dp/view_playback_bar.xml +++ b/app/src/main/res/layout-sw640dp/view_playback_bar.xml @@ -21,7 +21,7 @@ android:id="@+id/playback_cover" style="@style/Widget.Auxio.Image.Medium" android:layout_margin="@dimen/spacing_small" - android:contentDescription="@{@string/desc_album_cover(song.name)}" + android:contentDescription="@{@string/desc_album_cover(song.resolvedName)}" app:albumArt="@{song}" app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar" app:layout_constraintStart_toStartOf="parent" @@ -35,7 +35,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/spacing_small" - android:text="@{song.name}" + android:text="@{song.resolvedName}" android:layout_marginEnd="@dimen/spacing_small" app:layout_constraintBottom_toTopOf="@+id/playback_info" app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev" diff --git a/app/src/main/res/layout-w600dp-land/fragment_playback.xml b/app/src/main/res/layout-w600dp-land/fragment_playback.xml index 6f8851a8a..cdb2c3f24 100644 --- a/app/src/main/res/layout-w600dp-land/fragment_playback.xml +++ b/app/src/main/res/layout-w600dp-land/fragment_playback.xml @@ -38,7 +38,7 @@ android:id="@+id/playback_cover" style="@style/Widget.Auxio.Image.Full" android:layout_margin="@dimen/spacing_mid_large" - android:contentDescription="@{@string/desc_album_cover(song.name)}" + android:contentDescription="@{@string/desc_album_cover(song.resolvedName)}" app:albumArt="@{song}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -66,7 +66,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:onClick="@{() -> detailModel.navToItem(playbackModel.song)}" - android:text="@{song.name}" + android:text="@{song.resolvedName}" tools:text="Song Name" /> diff --git a/app/src/main/res/layout-w600dp/view_playback_bar.xml b/app/src/main/res/layout-w600dp/view_playback_bar.xml index 10413c794..9eb19e546 100644 --- a/app/src/main/res/layout-w600dp/view_playback_bar.xml +++ b/app/src/main/res/layout-w600dp/view_playback_bar.xml @@ -21,7 +21,7 @@ android:id="@+id/playback_cover" style="@style/Widget.Auxio.Image.Small" android:layout_margin="@dimen/spacing_small" - android:contentDescription="@{@string/desc_album_cover(song.name)}" + android:contentDescription="@{@string/desc_album_cover(song.resolvedName)}" app:albumArt="@{song}" app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar" app:layout_constraintStart_toStartOf="parent" @@ -34,7 +34,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/spacing_small" - android:text="@{song.name}" + android:text="@{song.resolvedName}" android:layout_marginEnd="@dimen/spacing_small" app:layout_constraintBottom_toTopOf="@+id/playback_info" app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev" diff --git a/app/src/main/res/layout/fragment_playback.xml b/app/src/main/res/layout/fragment_playback.xml index 76638d630..a3cdfc8b1 100644 --- a/app/src/main/res/layout/fragment_playback.xml +++ b/app/src/main/res/layout/fragment_playback.xml @@ -37,7 +37,7 @@ android:id="@+id/playback_cover" style="@style/Widget.Auxio.Image.Full" android:layout_margin="@dimen/spacing_mid_large" - android:contentDescription="@{@string/desc_album_cover(song.name)}" + android:contentDescription="@{@string/desc_album_cover(song.resolvedName)}" app:albumArt="@{song}" app:layout_constraintBottom_toTopOf="@+id/playback_song" app:layout_constraintEnd_toEndOf="parent" @@ -53,7 +53,7 @@ android:layout_marginStart="@dimen/spacing_mid_large" android:layout_marginEnd="@dimen/spacing_mid_large" android:onClick="@{() -> detailModel.navToItem(playbackModel.song)}" - android:text="@{song.name}" + android:text="@{song.resolvedName}" app:layout_constraintBottom_toTopOf="@+id/playback_artist" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/item_album.xml b/app/src/main/res/layout/item_album.xml index fe541cab6..2e01aad92 100644 --- a/app/src/main/res/layout/item_album.xml +++ b/app/src/main/res/layout/item_album.xml @@ -16,7 +16,7 @@