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:
parent
7b3490d5d3
commit
0cef51fa97
11 changed files with 89 additions and 32 deletions
|
@ -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() }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" />
|
||||
|
||||
|
|
|
@ -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" />
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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" />
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
||||
<!--
|
||||
|
|
Loading…
Reference in a new issue