detail: add item type

Add an item type indicator to the top of the detail header.

This is primarily for release type functionality, but also makes it
more clear the item one is looking at.
This commit is contained in:
OxygenCobalt 2022-08-06 14:53:06 -06:00
parent 7b3490d5d3
commit 0cef51fa97
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
11 changed files with 89 additions and 32 deletions

View file

@ -115,6 +115,9 @@ private class AlbumDetailViewHolder private constructor(private val binding: Ite
override fun bind(item: Album, listener: AlbumDetailAdapter.Listener) {
binding.detailCover.bind(item)
binding.detailType?.text =
binding.context.getString(item.releaseType?.stringRes ?: R.string.lbl_album)
binding.detailName.text = item.resolveName(binding.context)
binding.detailSubhead.apply {
@ -131,17 +134,7 @@ private class AlbumDetailViewHolder private constructor(private val binding: Ite
val duration = item.durationSecs.formatDuration(true)
text =
if (item.releaseType != null) {
context.getString(
R.string.fmt_four,
context.getString(item.releaseType.stringRes),
date,
songCount,
duration)
} else {
context.getString(R.string.fmt_three, date, songCount, duration)
}
text = context.getString(R.string.fmt_three, date, songCount, duration)
}
binding.detailPlayButton.setOnClickListener { listener.onPlayParent() }

View file

@ -123,6 +123,7 @@ private class ArtistDetailViewHolder private constructor(private val binding: It
override fun bind(item: Artist, listener: DetailAdapter.Listener) {
binding.detailCover.bind(item)
binding.detailType?.text = binding.context.getString(R.string.lbl_artist)
binding.detailName.text = item.resolveName(binding.context)
// Get the genre that corresponds to the most songs in this artist, which would be

View file

@ -104,6 +104,7 @@ private class GenreDetailViewHolder private constructor(private val binding: Ite
BindingViewHolder<Genre, DetailAdapter.Listener>(binding.root) {
override fun bind(item: Genre, listener: DetailAdapter.Listener) {
binding.detailCover.bind(item)
binding.detailType?.text = binding.context.getString(R.string.lbl_genre)
binding.detailName.text = item.resolveName(binding.context)
binding.detailSubhead.text =
binding.context.getPlural(R.plurals.fmt_song_count, item.songs.size)

View file

@ -13,18 +13,29 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:staticIcon="@drawable/ic_song_48" />
tools:staticIcon="@drawable/ic_song_24" />
<TextView
android:id="@+id/detail_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Type"
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
android:textColor="?attr/colorSecondary"
android:layout_marginTop="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/detail_name"
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
tools:layout_editor_absoluteX="16dp" />
<TextView
android:id="@+id/detail_name"
style="@style/Widget.Auxio.TextView.Detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_type"
tools:text="Name" />
<TextView

View file

@ -12,7 +12,20 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:staticIcon="@drawable/ic_song_48" />
tools:staticIcon="@drawable/ic_song_24" />
<TextView
android:id="@+id/detail_type"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
android:textColor="?attr/colorSecondary"
app:layout_constraintBottom_toTopOf="@+id/detail_name"
app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toTopOf="@+id/detail_cover"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Type" />
<TextView
android:id="@+id/detail_name"
@ -26,7 +39,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toTopOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_type"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Name" />

View file

@ -14,7 +14,20 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:staticIcon="@drawable/ic_song_48" />
tools:staticIcon="@drawable/ic_song_24" />
<TextView
android:id="@+id/detail_type"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
android:textColor="?attr/colorSecondary"
app:layout_constraintBottom_toTopOf="@+id/detail_name"
app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toTopOf="@+id/detail_cover"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Type" />
<TextView
android:id="@+id/detail_name"
@ -28,7 +41,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toTopOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_type"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Name" />

View file

@ -12,7 +12,20 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:staticIcon="@drawable/ic_song_48" />
tools:staticIcon="@drawable/ic_song_24" />
<TextView
android:id="@+id/detail_type"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
android:textColor="?attr/colorSecondary"
app:layout_constraintBottom_toTopOf="@+id/detail_name"
app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toTopOf="@+id/detail_cover"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Type" />
<TextView
android:id="@+id/detail_name"
@ -26,10 +39,9 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toTopOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_type"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Name" />
<TextView
android:id="@+id/detail_subhead"
style="@style/Widget.Auxio.TextView.Secondary"

View file

@ -14,18 +14,29 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:staticIcon="@drawable/ic_song_48" />
tools:staticIcon="@drawable/ic_song_24" />
<TextView
android:id="@+id/detail_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Type"
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
android:textColor="?attr/colorSecondary"
android:layout_marginTop="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/detail_name"
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
tools:layout_editor_absoluteX="16dp" />
<TextView
android:id="@+id/detail_name"
style="@style/Widget.Auxio.TextView.Detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_type"
tools:text="Name" />
<TextView
@ -48,6 +59,7 @@
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
tools:text="Info B" />
<Button
android:id="@+id/detail_play_button"
style="@style/Widget.Auxio.Button.Secondary"

View file

@ -19,7 +19,7 @@
android:layout_gravity="bottom|start"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_tiny"
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
android:textAppearance="@style/TextAppearance.Auxio.BodySmall"
android:textColor="@color/sel_accented_secondary"
tools:text="11:38" />
@ -30,7 +30,7 @@
android:layout_gravity="bottom|end"
android:layout_marginEnd="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_tiny"
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
android:textAppearance="@style/TextAppearance.Auxio.BodySmall"
android:textColor="?android:attr/textColorSecondary"
tools:text="16:16" />

View file

@ -59,6 +59,7 @@
<string name="lbl_artist">Artist</string>
<string name="lbl_artists">Artists</string>
<string name="lbl_genre">Genre</string>
<string name="lbl_genres">Genres</string>
<string name="lbl_search">Search</string>

View file

@ -101,17 +101,17 @@
</style>
<style name="TextAppearance.Auxio.LabelMedium" parent="TextAppearance.Material3.LabelMedium">
<item name="fontFamily">@font/inter_regular</item>
<item name="android:fontFamily">@font/inter_regular</item>
<item name="fontFamily">@font/inter_semibold</item>
<item name="android:fontFamily">@font/inter_semibold</item>
<item name="android:textStyle">normal</item>
<item name="android:letterSpacing">0.00</item>
<item name="android:letterSpacing">0.003</item>
</style>
<style name="TextAppearance.Auxio.LabelSmall" parent="TextAppearance.Material3.LabelSmall">
<item name="fontFamily">@font/inter_regular</item>
<item name="android:fontFamily">@font/inter_regular</item>
<item name="fontFamily">@font/inter_semibold</item>
<item name="android:fontFamily">@font/inter_semibold</item>
<item name="android:textStyle">normal</item>
<item name="android:letterSpacing">0.0045454545</item>
<item name="android:letterSpacing">0.0075454545</item>
</style>
<!--