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 @@