From 8e0d27696d9c2c6fedea35aa563af7be26f949a4 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sun, 6 Feb 2022 11:17:22 -0700 Subject: [PATCH] detail: improve track number handling Improve the way track numbers are handled in the album detail view. Previously, Auxio would show track numbers by simplying stringifying the integer and then showing it in a TextView. This was problematic for two reasons: - Numerics from other languages like Arabic would not be respected - Invalid track numbers [e.g 0] would be shown regardless of the situation. This commit fixes that by placing all track numbers through a format string first, and showing a generic song icon instead of a number whenever the track number is 0. --- .../detail/recycler/AlbumDetailAdapter.kt | 9 +++++++- app/src/main/res/layout/item_album_song.xml | 21 +++++++++++++++++-- app/src/main/res/values/donottranslate.xml | 1 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 29 insertions(+), 3 deletions(-) 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 9ed3d3998..c48a069d3 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 @@ -20,6 +20,7 @@ package org.oxycblt.auxio.detail.recycler import android.view.View import android.view.ViewGroup +import androidx.core.view.isInvisible import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.R @@ -178,13 +179,19 @@ class AlbumDetailAdapter( ) : BaseViewHolder(binding, doOnClick, doOnLongClick), Highlightable { override fun onBind(data: Song) { binding.song = data - binding.songName.requestLayout() + + // Hide the track number view if the track is zero, as generally a track number of + // zero implies that the song does not have a track number. + val usePlaceholder = data.track < 1 + binding.songTrack.isInvisible = usePlaceholder + binding.songTrackPlaceholder.isInvisible = !usePlaceholder } override fun setHighlighted(isHighlighted: Boolean) { binding.songName.isActivated = isHighlighted binding.songTrack.isActivated = isHighlighted + binding.songTrackPlaceholder.isActivated = isHighlighted } } diff --git a/app/src/main/res/layout/item_album_song.xml b/app/src/main/res/layout/item_album_song.xml index 2493bbaac..5be733658 100644 --- a/app/src/main/res/layout/item_album_song.xml +++ b/app/src/main/res/layout/item_album_song.xml @@ -13,6 +13,21 @@ + + + diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 315b91419..18505b690 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -7,4 +7,5 @@ %1$s • %2$s %1$s • %2$s • %3$s %1$s, %2$s + %d \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 994114ff1..08b0888d2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -145,6 +145,7 @@ Unknown Artist Unknown Genre No Date + No Track Number No music playing Song Name Artist Name