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) {
|
override fun bind(item: Album, listener: AlbumDetailAdapter.Listener) {
|
||||||
binding.detailCover.bind(item)
|
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.detailName.text = item.resolveName(binding.context)
|
||||||
|
|
||||||
binding.detailSubhead.apply {
|
binding.detailSubhead.apply {
|
||||||
|
@ -131,17 +134,7 @@ private class AlbumDetailViewHolder private constructor(private val binding: Ite
|
||||||
|
|
||||||
val duration = item.durationSecs.formatDuration(true)
|
val duration = item.durationSecs.formatDuration(true)
|
||||||
|
|
||||||
text =
|
text = context.getString(R.string.fmt_three, date, songCount, duration)
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.detailPlayButton.setOnClickListener { listener.onPlayParent() }
|
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) {
|
override fun bind(item: Artist, listener: DetailAdapter.Listener) {
|
||||||
binding.detailCover.bind(item)
|
binding.detailCover.bind(item)
|
||||||
|
binding.detailType?.text = binding.context.getString(R.string.lbl_artist)
|
||||||
binding.detailName.text = item.resolveName(binding.context)
|
binding.detailName.text = item.resolveName(binding.context)
|
||||||
|
|
||||||
// Get the genre that corresponds to the most songs in this artist, which would be
|
// 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) {
|
BindingViewHolder<Genre, DetailAdapter.Listener>(binding.root) {
|
||||||
override fun bind(item: Genre, listener: DetailAdapter.Listener) {
|
override fun bind(item: Genre, listener: DetailAdapter.Listener) {
|
||||||
binding.detailCover.bind(item)
|
binding.detailCover.bind(item)
|
||||||
|
binding.detailType?.text = binding.context.getString(R.string.lbl_genre)
|
||||||
binding.detailName.text = item.resolveName(binding.context)
|
binding.detailName.text = item.resolveName(binding.context)
|
||||||
binding.detailSubhead.text =
|
binding.detailSubhead.text =
|
||||||
binding.context.getPlural(R.plurals.fmt_song_count, item.songs.size)
|
binding.context.getPlural(R.plurals.fmt_song_count, item.songs.size)
|
||||||
|
|
|
@ -13,18 +13,29 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="ContentDescription"
|
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
|
<TextView
|
||||||
android:id="@+id/detail_name"
|
android:id="@+id/detail_name"
|
||||||
style="@style/Widget.Auxio.TextView.Detail"
|
style="@style/Widget.Auxio.TextView.Detail"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/spacing_medium"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
|
app:layout_constraintTop_toBottomOf="@+id/detail_type"
|
||||||
tools:text="Name" />
|
tools:text="Name" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -12,7 +12,20 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="ContentDescription"
|
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
|
<TextView
|
||||||
android:id="@+id/detail_name"
|
android:id="@+id/detail_name"
|
||||||
|
@ -26,7 +39,7 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/detail_cover"
|
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"
|
app:layout_constraintVertical_chainStyle="packed"
|
||||||
tools:text="Name" />
|
tools:text="Name" />
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,20 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="ContentDescription"
|
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
|
<TextView
|
||||||
android:id="@+id/detail_name"
|
android:id="@+id/detail_name"
|
||||||
|
@ -28,7 +41,7 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/detail_cover"
|
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"
|
app:layout_constraintVertical_chainStyle="packed"
|
||||||
tools:text="Name" />
|
tools:text="Name" />
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,20 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="ContentDescription"
|
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
|
<TextView
|
||||||
android:id="@+id/detail_name"
|
android:id="@+id/detail_name"
|
||||||
|
@ -26,10 +39,9 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/detail_cover"
|
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"
|
app:layout_constraintVertical_chainStyle="packed"
|
||||||
tools:text="Name" />
|
tools:text="Name" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/detail_subhead"
|
android:id="@+id/detail_subhead"
|
||||||
style="@style/Widget.Auxio.TextView.Secondary"
|
style="@style/Widget.Auxio.TextView.Secondary"
|
||||||
|
|
|
@ -14,18 +14,29 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="ContentDescription"
|
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
|
<TextView
|
||||||
android:id="@+id/detail_name"
|
android:id="@+id/detail_name"
|
||||||
style="@style/Widget.Auxio.TextView.Detail"
|
style="@style/Widget.Auxio.TextView.Detail"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/spacing_medium"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
|
app:layout_constraintTop_toBottomOf="@+id/detail_type"
|
||||||
tools:text="Name" />
|
tools:text="Name" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -48,6 +59,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
||||||
tools:text="Info B" />
|
tools:text="Info B" />
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/detail_play_button"
|
android:id="@+id/detail_play_button"
|
||||||
style="@style/Widget.Auxio.Button.Secondary"
|
style="@style/Widget.Auxio.Button.Secondary"
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
android:layout_gravity="bottom|start"
|
android:layout_gravity="bottom|start"
|
||||||
android:layout_marginStart="@dimen/spacing_medium"
|
android:layout_marginStart="@dimen/spacing_medium"
|
||||||
android:layout_marginBottom="@dimen/spacing_tiny"
|
android:layout_marginBottom="@dimen/spacing_tiny"
|
||||||
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
|
android:textAppearance="@style/TextAppearance.Auxio.BodySmall"
|
||||||
android:textColor="@color/sel_accented_secondary"
|
android:textColor="@color/sel_accented_secondary"
|
||||||
tools:text="11:38" />
|
tools:text="11:38" />
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
android:layout_gravity="bottom|end"
|
android:layout_gravity="bottom|end"
|
||||||
android:layout_marginEnd="@dimen/spacing_medium"
|
android:layout_marginEnd="@dimen/spacing_medium"
|
||||||
android:layout_marginBottom="@dimen/spacing_tiny"
|
android:layout_marginBottom="@dimen/spacing_tiny"
|
||||||
android:textAppearance="@style/TextAppearance.Auxio.LabelMedium"
|
android:textAppearance="@style/TextAppearance.Auxio.BodySmall"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
tools:text="16:16" />
|
tools:text="16:16" />
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
<string name="lbl_artist">Artist</string>
|
<string name="lbl_artist">Artist</string>
|
||||||
<string name="lbl_artists">Artists</string>
|
<string name="lbl_artists">Artists</string>
|
||||||
|
|
||||||
|
<string name="lbl_genre">Genre</string>
|
||||||
<string name="lbl_genres">Genres</string>
|
<string name="lbl_genres">Genres</string>
|
||||||
|
|
||||||
<string name="lbl_search">Search</string>
|
<string name="lbl_search">Search</string>
|
||||||
|
|
|
@ -101,17 +101,17 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Auxio.LabelMedium" parent="TextAppearance.Material3.LabelMedium">
|
<style name="TextAppearance.Auxio.LabelMedium" parent="TextAppearance.Material3.LabelMedium">
|
||||||
<item name="fontFamily">@font/inter_regular</item>
|
<item name="fontFamily">@font/inter_semibold</item>
|
||||||
<item name="android:fontFamily">@font/inter_regular</item>
|
<item name="android:fontFamily">@font/inter_semibold</item>
|
||||||
<item name="android:textStyle">normal</item>
|
<item name="android:textStyle">normal</item>
|
||||||
<item name="android:letterSpacing">0.00</item>
|
<item name="android:letterSpacing">0.003</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Auxio.LabelSmall" parent="TextAppearance.Material3.LabelSmall">
|
<style name="TextAppearance.Auxio.LabelSmall" parent="TextAppearance.Material3.LabelSmall">
|
||||||
<item name="fontFamily">@font/inter_regular</item>
|
<item name="fontFamily">@font/inter_semibold</item>
|
||||||
<item name="android:fontFamily">@font/inter_regular</item>
|
<item name="android:fontFamily">@font/inter_semibold</item>
|
||||||
<item name="android:textStyle">normal</item>
|
<item name="android:textStyle">normal</item>
|
||||||
<item name="android:letterSpacing">0.0045454545</item>
|
<item name="android:letterSpacing">0.0075454545</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
Loading…
Reference in a new issue