all: cleanup

Clean up the project after the previous changes and update some
dependencies.
This commit is contained in:
OxygenCobalt 2022-03-23 12:27:49 -06:00
parent d79592e029
commit 595a982d59
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
50 changed files with 1749 additions and 1749 deletions

View file

@ -97,10 +97,13 @@ dependencies {
implementation fileTree(dir: "libs", include: ["extension-*.aar"]) implementation fileTree(dir: "libs", include: ["extension-*.aar"])
// Image loading // Image loading
implementation "io.coil-kt:coil:2.0.0-rc01" implementation "io.coil-kt:coil:2.0.0-rc02"
// Material // Material
implementation "com.google.android.material:material:1.6.0-alpha03" implementation "com.google.android.material:material:1.6.0-beta01"
// LeakCanary
debugImplementation "com.squareup.leakcanary:leakcanary-android:2.8.1"
} }
spotless { spotless {

View file

@ -38,19 +38,19 @@ import org.oxycblt.auxio.music.Song
// --- BINDING ADAPTERS --- // --- BINDING ADAPTERS ---
/** Bind the album cover for a [song]. */ /** Bind the album cover for a [song]. */
fun ImageView.applyAlbumCover(song: Song?) = fun ImageView.bindAlbumCover(song: Song?) =
load(song, R.drawable.ic_album, R.string.desc_album_cover) load(song, R.drawable.ic_album, R.string.desc_album_cover)
/** Bind the album cover for an [album]. */ /** Bind the album cover for an [album]. */
fun ImageView.applyAlbumCover(album: Album?) = fun ImageView.bindAlbumCover(album: Album?) =
load(album, R.drawable.ic_album, R.string.desc_album_cover) load(album, R.drawable.ic_album, R.string.desc_album_cover)
/** Bind the image for an [artist] */ /** Bind the image for an [artist] */
fun ImageView.applyArtistImage(artist: Artist?) = fun ImageView.bindArtistImage(artist: Artist?) =
load(artist, R.drawable.ic_artist, R.string.desc_artist_image) load(artist, R.drawable.ic_artist, R.string.desc_artist_image)
/** Bind the image for a [genre] */ /** Bind the image for a [genre] */
fun ImageView.applyGenreImage(genre: Genre?) = fun ImageView.bindGenreImage(genre: Genre?) =
load(genre, R.drawable.ic_genre, R.string.desc_genre_image) load(genre, R.drawable.ic_genre, R.string.desc_genre_image)
fun <T : Music> ImageView.load(music: T?, @DrawableRes error: Int, @StringRes desc: Int) { fun <T : Music> ImageView.load(music: T?, @DrawableRes error: Int, @StringRes desc: Int) {

View file

@ -24,7 +24,7 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.coil.applyAlbumCover import org.oxycblt.auxio.coil.bindAlbumCover
import org.oxycblt.auxio.databinding.ItemAlbumSongBinding import org.oxycblt.auxio.databinding.ItemAlbumSongBinding
import org.oxycblt.auxio.databinding.ItemDetailBinding import org.oxycblt.auxio.databinding.ItemDetailBinding
import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.detail.DetailViewModel
@ -129,7 +129,7 @@ class AlbumDetailAdapter(
override fun onBind(data: Album) { override fun onBind(data: Album) {
binding.detailCover.apply { binding.detailCover.apply {
applyAlbumCover(data) bindAlbumCover(data)
contentDescription = context.getString(R.string.desc_album_cover, data.resolvedName) contentDescription = context.getString(R.string.desc_album_cover, data.resolvedName)
} }

View file

@ -23,8 +23,8 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.coil.applyAlbumCover import org.oxycblt.auxio.coil.bindAlbumCover
import org.oxycblt.auxio.coil.applyArtistImage import org.oxycblt.auxio.coil.bindArtistImage
import org.oxycblt.auxio.databinding.ItemDetailBinding import org.oxycblt.auxio.databinding.ItemDetailBinding
import org.oxycblt.auxio.databinding.ItemParentBinding import org.oxycblt.auxio.databinding.ItemParentBinding
import org.oxycblt.auxio.databinding.ItemSongBinding import org.oxycblt.auxio.databinding.ItemSongBinding
@ -176,7 +176,7 @@ class ArtistDetailAdapter(
val context = binding.root.context val context = binding.root.context
binding.detailCover.apply { binding.detailCover.apply {
applyArtistImage(data) bindArtistImage(data)
contentDescription = contentDescription =
context.getString(R.string.desc_artist_image, data.resolvedName) context.getString(R.string.desc_artist_image, data.resolvedName)
} }
@ -209,7 +209,7 @@ class ArtistDetailAdapter(
private val binding: ItemParentBinding, private val binding: ItemParentBinding,
) : BaseViewHolder<Album>(binding, doOnClick, doOnLongClick), Highlightable { ) : BaseViewHolder<Album>(binding, doOnClick, doOnLongClick), Highlightable {
override fun onBind(data: Album) { override fun onBind(data: Album) {
binding.parentImage.applyAlbumCover(data) binding.parentImage.bindAlbumCover(data)
binding.parentName.textSafe = data.resolvedName binding.parentName.textSafe = data.resolvedName
binding.parentInfo.textSafe = binding.context.getString(R.string.fmt_number, data.year) binding.parentInfo.textSafe = binding.context.getString(R.string.fmt_number, data.year)
} }
@ -223,7 +223,7 @@ class ArtistDetailAdapter(
private val binding: ItemSongBinding, private val binding: ItemSongBinding,
) : BaseViewHolder<Song>(binding, doOnSongClick, doOnLongClick), Highlightable { ) : BaseViewHolder<Song>(binding, doOnSongClick, doOnLongClick), Highlightable {
override fun onBind(data: Song) { override fun onBind(data: Song) {
binding.songAlbumCover.applyAlbumCover(data) binding.songAlbumCover.bindAlbumCover(data)
binding.songName.textSafe = data.resolvedName binding.songName.textSafe = data.resolvedName
binding.songInfo.textSafe = data.resolvedAlbumName binding.songInfo.textSafe = data.resolvedAlbumName
} }

View file

@ -23,8 +23,8 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.coil.applyAlbumCover import org.oxycblt.auxio.coil.bindAlbumCover
import org.oxycblt.auxio.coil.applyGenreImage import org.oxycblt.auxio.coil.bindGenreImage
import org.oxycblt.auxio.databinding.ItemDetailBinding import org.oxycblt.auxio.databinding.ItemDetailBinding
import org.oxycblt.auxio.databinding.ItemSongBinding import org.oxycblt.auxio.databinding.ItemSongBinding
import org.oxycblt.auxio.music.ActionHeader import org.oxycblt.auxio.music.ActionHeader
@ -128,7 +128,7 @@ class GenreDetailAdapter(
val context = binding.root.context val context = binding.root.context
binding.detailCover.apply { binding.detailCover.apply {
applyGenreImage(data) bindGenreImage(data)
contentDescription = context.getString(R.string.desc_genre_image, data.resolvedName) contentDescription = context.getString(R.string.desc_genre_image, data.resolvedName)
} }
@ -150,7 +150,7 @@ class GenreDetailAdapter(
) : BaseViewHolder<Song>(binding, doOnClick, doOnLongClick), Highlightable { ) : BaseViewHolder<Song>(binding, doOnClick, doOnLongClick), Highlightable {
override fun onBind(data: Song) { override fun onBind(data: Song) {
binding.songAlbumCover.applyAlbumCover(data) binding.songAlbumCover.bindAlbumCover(data)
binding.songName.textSafe = data.resolvedName binding.songName.textSafe = data.resolvedName
binding.songInfo.textSafe = data.resolvedArtistName binding.songInfo.textSafe = data.resolvedArtistName
} }

View file

@ -28,6 +28,7 @@ import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.ui.GenreViewHolder import org.oxycblt.auxio.ui.GenreViewHolder
import org.oxycblt.auxio.ui.newMenu import org.oxycblt.auxio.ui.newMenu
import org.oxycblt.auxio.ui.sliceArticle import org.oxycblt.auxio.ui.sliceArticle
import org.oxycblt.auxio.util.context
/** /**
* A [HomeListFragment] for showing a list of [Genre]s. * A [HomeListFragment] for showing a list of [Genre]s.

View file

@ -25,7 +25,7 @@ import androidx.core.view.updatePadding
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import com.google.android.material.color.MaterialColors import com.google.android.material.color.MaterialColors
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.coil.applyAlbumCover import org.oxycblt.auxio.coil.bindAlbumCover
import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding
import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.detail.DetailViewModel
import org.oxycblt.auxio.ui.BottomSheetLayout import org.oxycblt.auxio.ui.BottomSheetLayout
@ -99,7 +99,7 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
playbackModel.song.observe(viewLifecycleOwner) { song -> playbackModel.song.observe(viewLifecycleOwner) { song ->
if (song != null) { if (song != null) {
binding.playbackCover.applyAlbumCover(song) binding.playbackCover.bindAlbumCover(song)
binding.playbackSong.textSafe = song.resolvedName binding.playbackSong.textSafe = song.resolvedName
binding.playbackInfo.textSafe = binding.playbackInfo.textSafe =
getString(R.string.fmt_two, song.resolvedArtistName, song.resolvedAlbumName) getString(R.string.fmt_two, song.resolvedArtistName, song.resolvedAlbumName)

View file

@ -29,7 +29,7 @@ import com.google.android.material.slider.Slider
import kotlin.math.max import kotlin.math.max
import org.oxycblt.auxio.MainFragmentDirections import org.oxycblt.auxio.MainFragmentDirections
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.coil.applyAlbumCover import org.oxycblt.auxio.coil.bindAlbumCover
import org.oxycblt.auxio.databinding.FragmentPlaybackPanelBinding import org.oxycblt.auxio.databinding.FragmentPlaybackPanelBinding
import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.detail.DetailViewModel
import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicParent
@ -175,7 +175,7 @@ class PlaybackPanelFragment :
if (song == null) return if (song == null) return
val binding = requireBinding() val binding = requireBinding()
binding.playbackCover.applyAlbumCover(song) binding.playbackCover.bindAlbumCover(song)
binding.playbackSong.textSafe = song.resolvedName binding.playbackSong.textSafe = song.resolvedName
binding.playbackArtist.textSafe = song.resolvedArtistName binding.playbackArtist.textSafe = song.resolvedArtistName
binding.playbackAlbum.textSafe = song.resolvedAlbumName binding.playbackAlbum.textSafe = song.resolvedAlbumName

View file

@ -28,7 +28,7 @@ import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.MaterialShapeDrawable
import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.coil.applyAlbumCover import org.oxycblt.auxio.coil.bindAlbumCover
import org.oxycblt.auxio.databinding.ItemQueueSongBinding import org.oxycblt.auxio.databinding.ItemQueueSongBinding
import org.oxycblt.auxio.music.ActionHeader import org.oxycblt.auxio.music.ActionHeader
import org.oxycblt.auxio.music.Header import org.oxycblt.auxio.music.Header
@ -127,7 +127,7 @@ class QueueAdapter(private val touchHelper: ItemTouchHelper) :
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
override fun onBind(data: Song) { override fun onBind(data: Song) {
binding.songAlbumCover.applyAlbumCover(data) binding.songAlbumCover.bindAlbumCover(data)
binding.songName.textSafe = data.resolvedName binding.songName.textSafe = data.resolvedName
binding.songInfo.textSafe = data.resolvedArtistName binding.songInfo.textSafe = data.resolvedArtistName

View file

@ -23,9 +23,9 @@ import androidx.appcompat.widget.TooltipCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.coil.applyAlbumCover import org.oxycblt.auxio.coil.bindAlbumCover
import org.oxycblt.auxio.coil.applyArtistImage import org.oxycblt.auxio.coil.bindArtistImage
import org.oxycblt.auxio.coil.applyGenreImage import org.oxycblt.auxio.coil.bindGenreImage
import org.oxycblt.auxio.databinding.ItemActionHeaderBinding import org.oxycblt.auxio.databinding.ItemActionHeaderBinding
import org.oxycblt.auxio.databinding.ItemHeaderBinding import org.oxycblt.auxio.databinding.ItemHeaderBinding
import org.oxycblt.auxio.databinding.ItemParentBinding import org.oxycblt.auxio.databinding.ItemParentBinding
@ -96,7 +96,7 @@ private constructor(
) : BaseViewHolder<Song>(binding, doOnClick, doOnLongClick) { ) : BaseViewHolder<Song>(binding, doOnClick, doOnLongClick) {
override fun onBind(data: Song) { override fun onBind(data: Song) {
binding.songAlbumCover.applyAlbumCover(data) binding.songAlbumCover.bindAlbumCover(data)
binding.songName.textSafe = data.resolvedName binding.songName.textSafe = data.resolvedName
binding.songInfo.textSafe = data.resolvedArtistName binding.songInfo.textSafe = data.resolvedArtistName
} }
@ -123,13 +123,9 @@ private constructor(
) : BaseViewHolder<Album>(binding, doOnClick, doOnLongClick) { ) : BaseViewHolder<Album>(binding, doOnClick, doOnLongClick) {
override fun onBind(data: Album) { override fun onBind(data: Album) {
binding.parentImage.applyAlbumCover(data) binding.parentImage.bindAlbumCover(data)
binding.parentName.textSafe = data.resolvedName binding.parentName.textSafe = data.resolvedName
binding.parentInfo.textSafe = binding.parentInfo.textSafe = data.resolvedArtistName
binding.context.getString(
R.string.fmt_two,
data.resolvedArtistName,
binding.context.getPluralSafe(R.plurals.fmt_song_count, data.songs.size))
} }
companion object { companion object {
@ -154,7 +150,7 @@ private constructor(
) : BaseViewHolder<Artist>(binding, doOnClick, doOnLongClick) { ) : BaseViewHolder<Artist>(binding, doOnClick, doOnLongClick) {
override fun onBind(data: Artist) { override fun onBind(data: Artist) {
binding.parentImage.applyArtistImage(data) binding.parentImage.bindArtistImage(data)
binding.parentName.textSafe = data.resolvedName binding.parentName.textSafe = data.resolvedName
binding.parentInfo.textSafe = binding.parentInfo.textSafe =
binding.context.getString( binding.context.getString(
@ -185,7 +181,7 @@ private constructor(
) : BaseViewHolder<Genre>(binding, doOnClick, doOnLongClick) { ) : BaseViewHolder<Genre>(binding, doOnClick, doOnLongClick) {
override fun onBind(data: Genre) { override fun onBind(data: Genre) {
binding.parentImage.applyGenreImage(data) binding.parentImage.bindGenreImage(data)
binding.parentName.textSafe = data.resolvedName binding.parentName.textSafe = data.resolvedName
binding.parentInfo.textSafe = binding.parentInfo.textSafe =
binding.context.getPluralSafe(R.plurals.fmt_song_count, data.songs.size) binding.context.getPluralSafe(R.plurals.fmt_song_count, data.songs.size)

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorOnSurface" android:alpha="0.12" android:state_enabled="false" /> <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false" />
<item android:color="?attr/colorOnPrimary" android:state_checked="true" /> <item android:color="?attr/colorOnPrimary" android:state_checked="true" />
<item android:color="?attr/colorSurfaceVariant" /> <item android:color="?attr/colorSurfaceVariant" />
</selector> </selector>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorOnSurface" android:alpha="0.38" android:state_enabled="false" /> <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false" />
<item android:color="?attr/colorPrimary" android:state_checked="true" /> <item android:color="?attr/colorPrimary" android:state_checked="true" />
<item android:color="?attr/colorOnSurfaceVariant" /> <item android:color="?attr/colorOnSurfaceVariant" />
</selector> </selector>

View file

@ -2,9 +2,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorPrimary"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorPrimary">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M12,3v10.55c-0.59,-0.34 -1.27,-0.55 -2,-0.55 -2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4V7h4V3h-6z" /> android:pathData="M12,3v10.55c-0.59,-0.34 -1.27,-0.55 -2,-0.55 -2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4V7h4V3h-6z" />

View file

@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"> android:shape="oval">
<size <size
android:height="4dp" android:width="4dp"
android:width="4dp" /> android:height="4dp" />
<solid android:color="?attr/colorPrimary" /> <solid android:color="?attr/colorPrimary" />
</shape> </shape>

View file

@ -1,73 +1,73 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.Huge"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:src="@drawable/ic_artist" />
<TextView
android:id="@+id/detail_name"
style="@style/Widget.Auxio.TextView.Detail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:padding="@dimen/spacing_medium"> 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"
tools:text="Name" />
<org.oxycblt.auxio.coil.RoundableImageView <TextView
android:id="@+id/detail_cover" android:id="@+id/detail_subhead"
style="@style/Widget.Auxio.Image.Huge" style="@style/Widget.Auxio.TextView.Secondary"
app:layout_constraintEnd_toEndOf="parent" android:layout_width="match_parent"
app:layout_constraintStart_toStartOf="parent" android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" android:textColor="?android:attr/textColorSecondary"
tools:ignore="ContentDescription" app:layout_constraintStart_toStartOf="parent"
tools:src="@drawable/ic_artist" /> app:layout_constraintTop_toBottomOf="@+id/detail_name"
tools:text="Info A" />
<TextView <TextView
android:id="@+id/detail_name" android:id="@+id/detail_info"
style="@style/Widget.Auxio.TextView.Detail" style="@style/Widget.Auxio.TextView.Secondary"
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" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
app:layout_constraintStart_toStartOf="parent" tools:text="Info B" />
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
tools:text="Name" />
<TextView <Button
android:id="@+id/detail_subhead" android:id="@+id/detail_play_button"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.Button.Secondary"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/textColorSecondary" android:layout_marginTop="@dimen/spacing_medium"
app:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintTop_toBottomOf="@+id/detail_name" android:text="@string/lbl_play"
tools:text="Info A" /> app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
<TextView <Button
android:id="@+id/detail_info" android:id="@+id/detail_shuffle_button"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.Button.Primary"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/textColorSecondary" android:layout_marginStart="@dimen/spacing_small"
app:layout_constraintStart_toStartOf="parent" android:text="@string/lbl_shuffle"
app:layout_constraintTop_toBottomOf="@+id/detail_subhead" app:layout_constraintBottom_toBottomOf="@+id/detail_play_button"
tools:text="Info B" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_play_button"
<Button app:layout_constraintTop_toTopOf="@+id/detail_play_button" />
android:id="@+id/detail_play_button" </androidx.constraintlayout.widget.ConstraintLayout>
style="@style/Widget.Auxio.Button.Secondary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_small"
android:text="@string/lbl_play"
app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
<Button
android:id="@+id/detail_shuffle_button"
style="@style/Widget.Auxio.Button.Primary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:text="@string/lbl_shuffle"
app:layout_constraintBottom_toBottomOf="@+id/detail_play_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_play_button"
app:layout_constraintTop_toTopOf="@+id/detail_play_button" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,86 +1,86 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:padding="@dimen/spacing_medium"> android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/detail_cover" android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.Large" style="@style/Widget.Auxio.Image.Large"
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:src="@drawable/ic_artist" /> tools:src="@drawable/ic_artist" />
<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="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
app:layout_constraintBottom_toTopOf="@+id/detail_subhead" app:layout_constraintBottom_toTopOf="@+id/detail_subhead"
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_toTopOf="@+id/detail_cover"
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"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintBottom_toTopOf="@+id/detail_info" app:layout_constraintBottom_toTopOf="@+id/detail_info"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_cover" app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_name" app:layout_constraintTop_toBottomOf="@+id/detail_name"
tools:text="Info A" /> tools:text="Info A" />
<TextView <TextView
android:id="@+id/detail_info" android:id="@+id/detail_info"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintBottom_toBottomOf="@+id/detail_cover" app:layout_constraintBottom_toBottomOf="@+id/detail_cover"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_cover" app:layout_constraintStart_toEndOf="@+id/detail_cover"
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"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium" android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
android:text="@string/lbl_play" android:text="@string/lbl_play"
app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button" app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button"
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_cover" />
<Button <Button
android:id="@+id/detail_shuffle_button" android:id="@+id/detail_shuffle_button"
style="@style/Widget.Auxio.Button.Primary" style="@style/Widget.Auxio.Button.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:text="@string/lbl_shuffle" android:text="@string/lbl_shuffle"
app:layout_constraintBottom_toBottomOf="@+id/detail_play_button" app:layout_constraintBottom_toBottomOf="@+id/detail_play_button"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_play_button" app:layout_constraintStart_toEndOf="@+id/detail_play_button"
app:layout_constraintTop_toTopOf="@+id/detail_play_button" /> app:layout_constraintTop_toTopOf="@+id/detail_play_button" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -10,171 +10,171 @@
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon.Down" style="@style/Widget.Auxio.Toolbar.Icon.Down"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:title="@string/lbl_playback" app:layout_constraintTop_toTopOf="parent"
tools:subtitle="@string/lbl_all_songs" app:menu="@menu/menu_playback"
app:layout_constraintTop_toTopOf="parent" app:title="@string/lbl_playback"
app:menu="@menu/menu_playback" /> tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full" style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_mid_large" android:layout_margin="@dimen/spacing_mid_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/playback_song_container" app:layout_constraintEnd_toStartOf="@+id/playback_song_container"
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/playback_toolbar" app:layout_constraintTop_toBottomOf="@+id/playback_toolbar"
tools:src="@drawable/ic_album" /> tools:src="@drawable/ic_album" />
<!-- TextView is wrapped in a container so that marquee doesn't break --> <!-- TextView is wrapped in a container so that marquee doesn't break -->
<FrameLayout <FrameLayout
android:id="@+id/playback_song_container" android:id="@+id/playback_song_container"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_mid_large" android:layout_marginEnd="@dimen/spacing_mid_large"
app:layout_constraintBottom_toTopOf="@+id/playback_artist" app:layout_constraintBottom_toTopOf="@+id/playback_artist"
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/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_toolbar" app:layout_constraintTop_toBottomOf="@+id/playback_toolbar"
app:layout_constraintVertical_chainStyle="packed"> app:layout_constraintVertical_chainStyle="packed">
<TextView
android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Primary"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:text="Song Name" />
</FrameLayout>
<TextView <TextView
android:id="@+id/playback_artist" android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Primary"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
app:layout_constraintBottom_toTopOf="@+id/playback_album" tools:text="Song Name" />
app:layout_constraintStart_toStartOf="@+id/playback_song_container"
app:layout_constraintEnd_toEndOf="@+id/playback_song_container"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintTop_toBottomOf="@+id/playback_song_container"
tools:text="Artist Name" />
<TextView </FrameLayout>
android:id="@+id/playback_album"
style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/playback_song_container"
app:layout_constraintEnd_toEndOf="@+id/playback_song_container"
app:layout_constraintTop_toBottomOf="@+id/playback_artist"
tools:text="Album Name" />
<com.google.android.material.slider.Slider <TextView
android:id="@+id/playback_seek_bar" android:id="@+id/playback_artist"
android:layout_width="0dp" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_height="wrap_content" android:layout_width="0dp"
android:layout_marginBottom="@dimen/spacing_medium" android:layout_height="wrap_content"
android:valueFrom="0" app:layout_constraintBottom_toTopOf="@+id/playback_album"
android:valueTo="1" app:layout_constraintEnd_toEndOf="@+id/playback_song_container"
app:haloRadius="@dimen/slider_halo_radius" app:layout_constraintHorizontal_bias="0.0"
app:labelBehavior="gone" app:layout_constraintStart_toStartOf="@+id/playback_song_container"
android:layout_marginStart="@dimen/spacing_small" app:layout_constraintTop_toBottomOf="@+id/playback_song_container"
android:layout_marginEnd="@dimen/spacing_small" tools:text="Artist Name" />
app:labelStyle="@style/TextAppearance.Auxio.BodySmall"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_album"
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView <TextView
android:id="@+id/playback_position" android:id="@+id/playback_album"
android:layout_width="wrap_content" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_height="wrap_content" android:layout_width="0dp"
android:layout_marginStart="@dimen/spacing_medium" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv" app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" app:layout_constraintEnd_toEndOf="@+id/playback_song_container"
android:textColor="@color/sel_accented_secondary" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/playback_seek_bar" app:layout_constraintStart_toStartOf="@+id/playback_song_container"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintTop_toBottomOf="@+id/playback_artist"
tools:text="11:38" /> tools:text="Album Name" />
<TextView <com.google.android.material.slider.Slider
android:id="@+id/playback_duration" android:id="@+id/playback_seek_bar"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginTop="@dimen/spacing_small_inv" android:layout_marginEnd="@dimen/spacing_small"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:layout_marginBottom="@dimen/spacing_medium"
android:textColor="?android:attr/textColorSecondary" android:valueFrom="0"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar" android:valueTo="1"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:haloRadius="@dimen/slider_halo_radius"
tools:text="16:16" /> app:labelBehavior="gone"
app:labelStyle="@style/TextAppearance.Auxio.BodySmall"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_album"
app:thumbRadius="@dimen/slider_thumb_radius" />
<org.oxycblt.auxio.playback.PlaybackButton <TextView
android:id="@+id/playback_loop" android:id="@+id/playback_position"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_large" android:layout_marginStart="@dimen/spacing_medium"
android:contentDescription="@string/desc_change_loop" android:layout_marginTop="@dimen/spacing_small_inv"
android:src="@drawable/ic_loop" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
app:hasIndicator="true" android:textColor="@color/sel_accented_secondary"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev" app:layout_constraintStart_toStartOf="@+id/playback_seek_bar"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev" app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
app:layout_constraintHorizontal_chainStyle="packed" tools:text="11:38" />
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
<org.oxycblt.auxio.playback.PlaybackButton <TextView
android:id="@+id/playback_skip_prev" android:id="@+id/playback_duration"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_large" android:layout_marginTop="@dimen/spacing_small_inv"
android:contentDescription="@string/desc_skip_prev" android:layout_marginEnd="@dimen/spacing_medium"
android:src="@drawable/ic_skip_prev" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
tools:text="16:16" />
<com.google.android.material.floatingactionbutton.FloatingActionButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_loop"
style="@style/Widget.Auxio.FloatingActionButton.PlayPause" android:layout_width="wrap_content"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:layout_marginEnd="@dimen/spacing_large"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_change_loop"
android:src="@drawable/sel_playing_state" android:src="@drawable/ic_loop"
app:layout_constraintBottom_toBottomOf="parent" app:hasIndicator="true"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
app:layout_constraintStart_toStartOf="@+id/playback_seek_bar" app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintHorizontal_chainStyle="packed"
tools:src="@drawable/ic_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next" android:id="@+id/playback_skip_prev"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large" android:layout_marginEnd="@dimen/spacing_large"
android:contentDescription="@string/desc_skip_next" android:contentDescription="@string/desc_skip_prev"
android:src="@drawable/ic_skip_next" android:src="@drawable/ic_skip_prev"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_shuffle" android:id="@+id/playback_play_pause"
android:layout_width="wrap_content" style="@style/Widget.Auxio.FloatingActionButton.PlayPause"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_marginStart="@dimen/spacing_large" android:layout_height="wrap_content"
app:hasIndicator="true" android:contentDescription="@string/desc_play_pause"
android:contentDescription="@string/desc_shuffle" android:src="@drawable/sel_playing_state"
android:src="@drawable/ic_shuffle" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next" app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar"
app:layout_constraintStart_toEndOf="@+id/playback_skip_next" app:layout_constraintStart_toStartOf="@+id/playback_seek_bar"
app:layout_constraintTop_toTopOf="@+id/playback_skip_next" app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
app:tint="@color/sel_accented" /> tools:src="@drawable/ic_pause" />
</androidx.constraintlayout.widget.ConstraintLayout> <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large"
android:contentDescription="@string/desc_skip_next"
android:src="@drawable/ic_skip_next"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_shuffle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large"
android:contentDescription="@string/desc_shuffle"
android:src="@drawable/ic_shuffle"
app:hasIndicator="true"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
app:layout_constraintStart_toEndOf="@+id/playback_skip_next"
app:layout_constraintTop_toTopOf="@+id/playback_skip_next"
app:tint="@color/sel_accented" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -11,159 +11,159 @@
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon.Down" style="@style/Widget.Auxio.Toolbar.Icon.Down"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:title="@string/lbl_playback" app:menu="@menu/menu_playback"
tools:subtitle="@string/lbl_all_songs" app:title="@string/lbl_playback"
app:menu="@menu/menu_playback" /> tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full" style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_large" android:layout_margin="@dimen/spacing_large"
app:layout_constraintBottom_toTopOf="@+id/playback_song" app:layout_constraintBottom_toTopOf="@+id/playback_song"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/playback_toolbar" app:layout_constraintTop_toBottomOf="@+id/playback_toolbar"
tools:src="@drawable/ic_album" /> tools:src="@drawable/ic_album" />
<TextView <TextView
android:id="@+id/playback_song" android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Primary" style="@style/Widget.Auxio.TextView.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large" android:layout_marginStart="@dimen/spacing_large"
android:layout_marginEnd="@dimen/spacing_large" android:layout_marginEnd="@dimen/spacing_large"
app:layout_constraintBottom_toTopOf="@+id/playback_artist" app:layout_constraintBottom_toTopOf="@+id/playback_artist"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" /> tools:text="Song Name" />
<TextView <TextView
android:id="@+id/playback_artist" android:id="@+id/playback_artist"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large" android:layout_marginStart="@dimen/spacing_large"
android:layout_marginEnd="@dimen/spacing_large" android:layout_marginEnd="@dimen/spacing_large"
app:layout_constraintBottom_toTopOf="@+id/playback_album" app:layout_constraintBottom_toTopOf="@+id/playback_album"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:text="Artist Name" /> tools:text="Artist Name" />
<TextView <TextView
android:id="@+id/playback_album" android:id="@+id/playback_album"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large" android:layout_marginStart="@dimen/spacing_large"
android:layout_marginEnd="@dimen/spacing_large" android:layout_marginEnd="@dimen/spacing_large"
app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar" app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:text="Album Name" /> tools:text="Album Name" />
<com.google.android.material.slider.Slider <com.google.android.material.slider.Slider
android:id="@+id/playback_seek_bar" android:id="@+id/playback_seek_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:valueFrom="0" android:layout_marginStart="@dimen/spacing_medium"
android:valueTo="1" android:layout_marginEnd="@dimen/spacing_medium"
app:haloRadius="@dimen/slider_halo_radius" android:layout_marginBottom="@dimen/spacing_medium"
app:labelBehavior="gone" android:valueFrom="0"
app:labelStyle="@style/TextAppearance.Auxio.BodySmall" android:valueTo="1"
android:layout_marginBottom="@dimen/spacing_medium" app:haloRadius="@dimen/slider_halo_radius"
android:layout_marginStart="@dimen/spacing_medium" app:labelBehavior="gone"
android:layout_marginEnd="@dimen/spacing_medium" app:labelStyle="@style/TextAppearance.Auxio.BodySmall"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause" app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:thumbRadius="@dimen/slider_thumb_radius" /> app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView <TextView
android:id="@+id/playback_position" android:id="@+id/playback_position"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_small_inv" android:layout_marginTop="@dimen/spacing_small_inv"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textColor="@color/sel_accented_secondary" android:textColor="@color/sel_accented_secondary"
app:layout_constraintStart_toStartOf="@+id/playback_seek_bar" app:layout_constraintStart_toStartOf="@+id/playback_seek_bar"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
tools:text="11:38" /> tools:text="11:38" />
<TextView <TextView
android:id="@+id/playback_duration" android:id="@+id/playback_duration"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginTop="@dimen/spacing_small_inv"
android:layout_marginTop="@dimen/spacing_small_inv" android:layout_marginEnd="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar" app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
tools:text="16:16" /> tools:text="16:16" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_loop" android:id="@+id/playback_loop"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_large" android:layout_marginEnd="@dimen/spacing_large"
android:contentDescription="@string/desc_change_loop" android:contentDescription="@string/desc_change_loop"
android:src="@drawable/ic_loop" android:src="@drawable/ic_loop"
app:hasIndicator="true" app:hasIndicator="true"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev" app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev"
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" /> app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_prev" android:id="@+id/playback_skip_prev"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_large" android:layout_marginEnd="@dimen/spacing_large"
android:contentDescription="@string/desc_skip_prev" android:contentDescription="@string/desc_skip_prev"
android:src="@drawable/ic_skip_prev" android:src="@drawable/ic_skip_prev"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<com.google.android.material.floatingactionbutton.FloatingActionButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Auxio.FloatingActionButton.PlayPause" style="@style/Widget.Auxio.FloatingActionButton.PlayPause"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_large" android:layout_marginBottom="@dimen/spacing_large"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state" android:src="@drawable/sel_playing_state"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar" app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar"
app:layout_constraintStart_toStartOf="@+id/playback_seek_bar" app:layout_constraintStart_toStartOf="@+id/playback_seek_bar"
tools:src="@drawable/ic_pause" /> tools:src="@drawable/ic_pause" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next" android:id="@+id/playback_skip_next"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large" android:layout_marginStart="@dimen/spacing_large"
android:contentDescription="@string/desc_skip_next" android:contentDescription="@string/desc_skip_next"
android:src="@drawable/ic_skip_next" android:src="@drawable/ic_skip_next"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause" app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_shuffle" android:id="@+id/playback_shuffle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_large" android:layout_marginStart="@dimen/spacing_large"
android:contentDescription="@string/desc_shuffle" android:contentDescription="@string/desc_shuffle"
android:src="@drawable/ic_shuffle" android:src="@drawable/ic_shuffle"
app:hasIndicator="true" app:hasIndicator="true"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
app:layout_constraintStart_toEndOf="@+id/playback_skip_next" app:layout_constraintStart_toEndOf="@+id/playback_skip_next"
app:layout_constraintTop_toTopOf="@+id/playback_skip_next" app:layout_constraintTop_toTopOf="@+id/playback_skip_next"
app:tint="@color/sel_accented" /> app:tint="@color/sel_accented" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,91 +1,91 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_width="match_parent" android:layout_height="match_parent"
android:padding="@dimen/spacing_medium"> android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/detail_cover" android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.MidHuge" style="@style/Widget.Auxio.Image.MidHuge"
app:layout_constraintDimensionRatio="1" app:layout_constraintDimensionRatio="1"
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:src="@drawable/ic_artist" /> tools:src="@drawable/ic_artist" />
<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="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
app:layout_constraintBottom_toTopOf="@+id/detail_subhead" app:layout_constraintBottom_toTopOf="@+id/detail_subhead"
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_toTopOf="@+id/detail_cover"
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"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
app:layout_constraintBottom_toTopOf="@+id/detail_info" app:layout_constraintBottom_toTopOf="@+id/detail_info"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/detail_cover" app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_name" app:layout_constraintTop_toBottomOf="@+id/detail_name"
tools:text="Info A" /> tools:text="Info A" />
<TextView <TextView
android:id="@+id/detail_info" android:id="@+id/detail_info"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/detail_play_button" app:layout_constraintBottom_toTopOf="@+id/detail_play_button"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_cover" app:layout_constraintStart_toEndOf="@+id/detail_cover"
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"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_medium" android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
android:text="@string/lbl_play" android:text="@string/lbl_play"
app:layout_constraintBottom_toBottomOf="@+id/detail_cover" app:layout_constraintBottom_toBottomOf="@+id/detail_cover"
app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button" app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button"
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_toBottomOf="@+id/detail_info" /> app:layout_constraintTop_toBottomOf="@+id/detail_info" />
<Button <Button
android:id="@+id/detail_shuffle_button" android:id="@+id/detail_shuffle_button"
style="@style/Widget.Auxio.Button.Primary" style="@style/Widget.Auxio.Button.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:text="@string/lbl_shuffle" android:text="@string/lbl_shuffle"
app:layout_constraintBottom_toBottomOf="@+id/detail_play_button" app:layout_constraintBottom_toBottomOf="@+id/detail_play_button"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_play_button" app:layout_constraintStart_toEndOf="@+id/detail_play_button"
app:layout_constraintTop_toTopOf="@+id/detail_play_button" /> app:layout_constraintTop_toTopOf="@+id/detail_play_button" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,95 +1,95 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Medium"
android:layout_margin="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_album" />
<TextView
android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Primary.Compact"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small"
android:textAppearance="@style/TextAppearance.Auxio.LabelLarger"
app:layout_constraintBottom_toTopOf="@+id/playback_info"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toTopOf="@+id/playback_cover"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" />
<TextView
android:id="@+id/playback_info"
style="@style/Widget.Auxio.TextView.Secondary.Compact"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:ellipsize="end"
android:textAppearance="@style/TextAppearance.Auxio.LabelLarge"
app:layout_constraintBottom_toBottomOf="@+id/playback_cover"
app:layout_constraintEnd_toEndOf="@+id/playback_song"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_song"
tools:text="Artist Name / Album Name" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_prev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause"
android:src="@drawable/ic_skip_prev"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_song"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_play_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_next"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_skip_prev"
app:layout_constraintTop_toTopOf="parent" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause"
android:src="@drawable/ic_skip_next"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/playback_progress_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:trackColor="?attr/colorPrimary"
tools:progress="70" />
<org.oxycblt.auxio.coil.RoundableImageView </androidx.constraintlayout.widget.ConstraintLayout>
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Medium"
android:layout_margin="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_album" />
<TextView
android:id="@+id/playback_song"
android:textAppearance="@style/TextAppearance.Auxio.LabelLarger"
style="@style/Widget.Auxio.TextView.Primary.Compact"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_info"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toTopOf="@+id/playback_cover"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" />
<TextView
android:id="@+id/playback_info"
style="@style/Widget.Auxio.TextView.Secondary.Compact"
android:textAppearance="@style/TextAppearance.Auxio.LabelLarge"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:ellipsize="end"
app:layout_constraintBottom_toBottomOf="@+id/playback_cover"
app:layout_constraintEnd_toEndOf="@+id/playback_song"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_song"
tools:text="Artist Name / Album Name" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_prev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause"
android:src="@drawable/ic_skip_prev"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_song"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_play_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_next"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_skip_prev"
app:layout_constraintTop_toTopOf="parent" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause"
android:src="@drawable/ic_skip_next"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/playback_progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:trackColor="?attr/colorPrimary"
tools:progress="70" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,86 +1,86 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_width="match_parent" android:layout_height="match_parent"
android:padding="@dimen/spacing_medium"> android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/detail_cover" android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.Huge" style="@style/Widget.Auxio.Image.Huge"
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:src="@drawable/ic_artist" /> tools:src="@drawable/ic_artist" />
<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="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
app:layout_constraintBottom_toTopOf="@+id/detail_subhead" app:layout_constraintBottom_toTopOf="@+id/detail_subhead"
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_toTopOf="@+id/detail_cover"
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"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
app:layout_constraintBottom_toTopOf="@+id/detail_info" app:layout_constraintBottom_toTopOf="@+id/detail_info"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_cover" app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintTop_toBottomOf="@+id/detail_name" app:layout_constraintTop_toBottomOf="@+id/detail_name"
tools:text="Info A" /> tools:text="Info A" />
<TextView <TextView
android:id="@+id/detail_info" android:id="@+id/detail_info"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@+id/detail_play_button"
app:layout_constraintStart_toEndOf="@+id/detail_cover" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_subhead" app:layout_constraintStart_toEndOf="@+id/detail_cover"
app:layout_constraintBottom_toTopOf="@+id/detail_play_button" 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"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_medium" android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
android:text="@string/lbl_play" android:text="@string/lbl_play"
app:layout_constraintBottom_toBottomOf="@+id/detail_cover" app:layout_constraintBottom_toBottomOf="@+id/detail_cover"
app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button" app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button"
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_toBottomOf="@+id/detail_info" /> app:layout_constraintTop_toBottomOf="@+id/detail_info" />
<Button <Button
android:id="@+id/detail_shuffle_button" android:id="@+id/detail_shuffle_button"
style="@style/Widget.Auxio.Button.Primary" style="@style/Widget.Auxio.Button.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:text="@string/lbl_shuffle" android:text="@string/lbl_shuffle"
app:layout_constraintBottom_toBottomOf="@+id/detail_play_button" app:layout_constraintBottom_toBottomOf="@+id/detail_play_button"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_play_button" app:layout_constraintStart_toEndOf="@+id/detail_play_button"
app:layout_constraintTop_toTopOf="@+id/detail_play_button" /> app:layout_constraintTop_toTopOf="@+id/detail_play_button" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -11,173 +11,173 @@
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon.Down" style="@style/Widget.Auxio.Toolbar.Icon.Down"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:title="@string/lbl_playback" app:menu="@menu/menu_playback"
tools:subtitle="@string/lbl_all_songs" app:title="@string/lbl_playback"
app:menu="@menu/menu_playback" /> tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full" style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_medium" android:layout_margin="@dimen/spacing_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/playback_toolbar" app:layout_constraintTop_toBottomOf="@+id/playback_toolbar"
tools:src="@drawable/ic_album" /> tools:src="@drawable/ic_album" />
<!-- TextView is wrapped in a container so that marquee doesn't break --> <!-- TextView is wrapped in a container so that marquee doesn't break -->
<FrameLayout <FrameLayout
android:id="@+id/playback_song_container" android:id="@+id/playback_song_container"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/playback_artist" app:layout_constraintBottom_toTopOf="@+id/playback_artist"
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/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_toolbar" app:layout_constraintTop_toBottomOf="@+id/playback_toolbar"
app:layout_constraintVertical_chainStyle="packed"> app:layout_constraintVertical_chainStyle="packed">
<TextView
android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Primary"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:text="Song Name" />
</FrameLayout>
<TextView <TextView
android:id="@+id/playback_artist" android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Primary"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginStart="@dimen/spacing_medium" tools:text="Song Name" />
android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/playback_album"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_song_container"
tools:text="Artist Name" />
<TextView </FrameLayout>
android:id="@+id/playback_album"
style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_artist"
tools:text="Album Name" />
<com.google.android.material.slider.Slider <TextView
android:id="@+id/playback_seek_bar" android:id="@+id/playback_artist"
android:layout_width="0dp" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_height="wrap_content" android:layout_width="0dp"
android:layout_marginBottom="@dimen/spacing_medium" android:layout_height="wrap_content"
android:valueFrom="0" android:layout_marginStart="@dimen/spacing_medium"
android:valueTo="1" android:layout_marginEnd="@dimen/spacing_medium"
app:haloRadius="@dimen/slider_halo_radius" app:layout_constraintBottom_toTopOf="@+id/playback_album"
app:labelBehavior="gone" app:layout_constraintEnd_toEndOf="parent"
app:labelStyle="@style/TextAppearance.Auxio.BodySmall" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/playback_song_container"
app:layout_constraintHorizontal_bias="0.5" tools:text="Artist Name" />
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_album"
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView <TextView
android:id="@+id/playback_position" android:id="@+id/playback_album"
android:layout_width="wrap_content" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_height="wrap_content" android:layout_width="0dp"
android:layout_marginStart="@dimen/spacing_medium" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv" android:layout_marginStart="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:layout_marginEnd="@dimen/spacing_medium"
android:textColor="@color/sel_accented_secondary" app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar"
app:layout_constraintStart_toStartOf="@+id/playback_seek_bar" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintHorizontal_bias="0.5"
tools:text="11:38" /> app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_artist"
tools:text="Album Name" />
<TextView <com.google.android.material.slider.Slider
android:id="@+id/playback_duration" android:id="@+id/playback_seek_bar"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginBottom="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_small_inv" android:valueFrom="0"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:valueTo="1"
android:textColor="?android:attr/textColorSecondary" app:haloRadius="@dimen/slider_halo_radius"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar" app:labelBehavior="gone"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:labelStyle="@style/TextAppearance.Auxio.BodySmall"
tools:text="16:16" /> app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_album"
app:thumbRadius="@dimen/slider_thumb_radius" />
<org.oxycblt.auxio.playback.PlaybackButton <TextView
android:id="@+id/playback_loop" android:id="@+id/playback_position"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:contentDescription="@string/desc_change_loop" android:layout_marginTop="@dimen/spacing_small_inv"
app:hasIndicator="true" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:src="@drawable/ic_loop" android:textColor="@color/sel_accented_secondary"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev" app:layout_constraintStart_toStartOf="@+id/playback_seek_bar"
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
app:layout_constraintStart_toStartOf="@+id/playback_seek_bar" tools:text="11:38" />
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
<org.oxycblt.auxio.playback.PlaybackButton <TextView
android:id="@+id/playback_skip_prev" android:id="@+id/playback_duration"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_skip_prev" android:layout_marginTop="@dimen/spacing_small_inv"
android:src="@drawable/ic_skip_prev" android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintStart_toEndOf="@+id/playback_loop" app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
tools:text="16:16" />
<com.google.android.material.floatingactionbutton.FloatingActionButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_loop"
style="@style/Widget.Auxio.FloatingActionButton.PlayPause" android:layout_width="wrap_content"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:layout_marginStart="@dimen/spacing_medium"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_change_loop"
android:src="@drawable/sel_playing_state" android:src="@drawable/ic_loop"
app:layout_constraintBottom_toBottomOf="parent" app:hasIndicator="true"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@+id/playback_cover" app:layout_constraintStart_toStartOf="@+id/playback_seek_bar"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
tools:src="@drawable/ic_pause" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next" android:id="@+id/playback_skip_prev"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_skip_next" android:contentDescription="@string/desc_skip_prev"
android:src="@drawable/ic_skip_next" android:src="@drawable/ic_skip_prev"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_shuffle" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause" app:layout_constraintStart_toEndOf="@+id/playback_loop"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_shuffle" android:id="@+id/playback_play_pause"
android:layout_width="wrap_content" style="@style/Widget.Auxio.FloatingActionButton.PlayPause"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_height="wrap_content"
android:contentDescription="@string/desc_shuffle" android:contentDescription="@string/desc_play_pause"
app:hasIndicator="true" android:src="@drawable/sel_playing_state"
android:src="@drawable/ic_shuffle" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next" app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintTop_toTopOf="@+id/playback_skip_next" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:tint="@color/sel_accented" /> app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
tools:src="@drawable/ic_pause" />
</androidx.constraintlayout.widget.ConstraintLayout> <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/desc_skip_next"
android:src="@drawable/ic_skip_next"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_shuffle"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_shuffle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium"
android:contentDescription="@string/desc_shuffle"
android:src="@drawable/ic_shuffle"
app:hasIndicator="true"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
app:layout_constraintEnd_toEndOf="@+id/playback_seek_bar"
app:layout_constraintTop_toTopOf="@+id/playback_skip_next"
app:tint="@color/sel_accented" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -10,85 +10,85 @@
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Small" style="@style/Widget.Auxio.Image.Small"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar" app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_album" /> tools:src="@drawable/ic_album" />
<TextView <TextView
android:id="@+id/playback_song" android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Primary.Compact" style="@style/Widget.Auxio.TextView.Primary.Compact"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_info" app:layout_constraintBottom_toTopOf="@+id/playback_info"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev" app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev"
app:layout_constraintStart_toEndOf="@+id/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toTopOf="@+id/playback_cover" app:layout_constraintTop_toTopOf="@+id/playback_cover"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" /> tools:text="Song Name" />
<TextView <TextView
android:id="@+id/playback_info" android:id="@+id/playback_info"
style="@style/Widget.Auxio.TextView.Secondary.Compact" style="@style/Widget.Auxio.TextView.Secondary.Compact"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:ellipsize="end" android:ellipsize="end"
app:layout_constraintBottom_toBottomOf="@+id/playback_cover" app:layout_constraintBottom_toBottomOf="@+id/playback_cover"
app:layout_constraintEnd_toEndOf="@+id/playback_song" app:layout_constraintEnd_toEndOf="@+id/playback_song"
app:layout_constraintStart_toEndOf="@+id/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_song" app:layout_constraintTop_toBottomOf="@+id/playback_song"
tools:text="Artist Name / Album Name" /> tools:text="Artist Name / Album Name" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_prev" android:id="@+id/playback_skip_prev"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/ic_skip_prev" android:src="@drawable/ic_skip_prev"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_song" app:layout_constraintStart_toEndOf="@+id/playback_song"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state" android:src="@drawable/sel_playing_state"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar" app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintEnd_toStartOf="@+id/playback_skip_next" app:layout_constraintEnd_toStartOf="@+id/playback_skip_next"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/playback_skip_prev" app:layout_constraintStart_toEndOf="@+id/playback_skip_prev"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next" android:id="@+id/playback_skip_next"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/ic_skip_next" android:src="@drawable/ic_skip_next"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause" app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<com.google.android.material.progressindicator.LinearProgressIndicator <com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/playback_progress_bar" android:id="@+id/playback_progress_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:trackColor="?attr/colorPrimary" app:trackColor="?attr/colorPrimary"
tools:progress="70" /> tools:progress="70" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,58 +1,58 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<org.oxycblt.auxio.ui.EdgeCoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" <org.oxycblt.auxio.ui.EdgeCoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_layout" android:id="@+id/main_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<org.oxycblt.auxio.ui.EdgeAppBarLayout <org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/home_appbar" android:id="@+id/home_appbar"
style="@style/Widget.Auxio.AppBarLayout" style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true"> app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/home_toolbar" android:id="@+id/home_toolbar"
style="@style/Widget.Auxio.Toolbar" style="@style/Widget.Auxio.Toolbar"
app:menu="@menu/menu_home" app:menu="@menu/menu_home"
app:title="@string/info_app_name" /> app:title="@string/info_app_name" />
<com.google.android.material.tabs.TabLayout <com.google.android.material.tabs.TabLayout
android:id="@+id/home_tabs" android:id="@+id/home_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
app:tabContentStart="@dimen/spacing_medium"
app:tabGravity="start"
app:tabMode="scrollable"
app:tabTextAppearance="@style/TextAppearance.Auxio.LabelLarger" />
</org.oxycblt.auxio.ui.EdgeAppBarLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/home_pager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" android:background="@android:color/transparent"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" app:tabContentStart="@dimen/spacing_medium"
tools:layout="@layout/fragment_home_list" /> app:tabGravity="start"
app:tabMode="scrollable"
app:tabTextAppearance="@style/TextAppearance.Auxio.LabelLarger" />
<org.oxycblt.auxio.home.EdgeFabContainer </org.oxycblt.auxio.ui.EdgeAppBarLayout>
android:id="@+id/home_fab_container"
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/home_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:layout="@layout/fragment_home_list" />
<org.oxycblt.auxio.home.EdgeFabContainer
android:id="@+id/home_fab_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/home_pager"
app:layout_anchorGravity="bottom|end">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/home_fab"
style="@style/Widget.Auxio.FloatingActionButton.Adaptive"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_anchor="@id/home_pager" android:layout_margin="@dimen/spacing_medium"
app:layout_anchorGravity="bottom|end"> android:contentDescription="@string/desc_shuffle_all"
android:src="@drawable/ic_shuffle" />
<com.google.android.material.floatingactionbutton.FloatingActionButton </org.oxycblt.auxio.home.EdgeFabContainer>
android:id="@+id/home_fab"
style="@style/Widget.Auxio.FloatingActionButton.Adaptive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_medium"
android:contentDescription="@string/desc_shuffle_all"
android:src="@drawable/ic_shuffle" />
</org.oxycblt.auxio.home.EdgeFabContainer> </org.oxycblt.auxio.ui.EdgeCoordinatorLayout>
</org.oxycblt.auxio.ui.EdgeCoordinatorLayout>

View file

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView xmlns:android="http://schemas.android.com/apk/res/android" <org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/home_recycler" android:id="@+id/home_recycler"
style="@style/Widget.Auxio.RecyclerView.WithAdaptiveFab" style="@style/Widget.Auxio.RecyclerView.WithAdaptiveFab"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:listitem="@layout/item_artist" /> tools:listitem="@layout/item_artist" />

View file

@ -11,52 +11,52 @@
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView <androidx.fragment.app.FragmentContainerView
android:id="@+id/explore_nav_host" android:id="@+id/explore_nav_host"
android:name="androidx.navigation.fragment.NavHostFragment" android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:navGraph="@navigation/nav_explore"
tools:layout="@layout/fragment_home" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/playback_bar_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="org.oxycblt.auxio.playback.PlaybackBarFragment" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/playback_panel_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="org.oxycblt.auxio.playback.PlaybackPanelFragment" />
</org.oxycblt.auxio.ui.BottomSheetLayout>
<FrameLayout
android:id="@+id/layout_too_small"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/colorSurface" app:navGraph="@navigation/nav_explore"
android:visibility="gone"> tools:layout="@layout/fragment_home" />
<ImageView <androidx.fragment.app.FragmentContainerView
android:layout_width="match_parent" android:id="@+id/playback_bar_fragment"
android:layout_height="match_parent" android:name="org.oxycblt.auxio.playback.PlaybackBarFragment"
android:alpha="0.275" android:layout_width="match_parent"
android:contentDescription="@string/desc_auxio_icon" android:layout_height="wrap_content" />
android:scaleType="centerCrop"
android:src="@drawable/ic_auxio" />
<TextView <androidx.fragment.app.FragmentContainerView
android:layout_width="match_parent" android:id="@+id/playback_panel_fragment"
android:layout_height="wrap_content" android:name="org.oxycblt.auxio.playback.PlaybackPanelFragment"
android:layout_gravity="center" android:layout_width="match_parent"
android:gravity="center" android:layout_height="match_parent" />
android:padding="@dimen/spacing_medium"
android:text="@string/err_too_small" </org.oxycblt.auxio.ui.BottomSheetLayout>
android:textAppearance="@style/TextAppearance.Auxio.TitleMidLarge"
android:textColor="?android:attr/textColorPrimary" <FrameLayout
android:textStyle="bold" /> android:id="@+id/layout_too_small"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorSurface"
android:visibility="gone">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.275"
android:contentDescription="@string/desc_auxio_icon"
android:scaleType="centerCrop"
android:src="@drawable/ic_auxio" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:padding="@dimen/spacing_medium"
android:text="@string/err_too_small"
android:textAppearance="@style/TextAppearance.Auxio.TitleMidLarge"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold" />
</FrameLayout>
</FrameLayout> </FrameLayout>
</FrameLayout>

View file

@ -10,58 +10,58 @@
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Small" style="@style/Widget.Auxio.Image.Small"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar" app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_album" /> tools:src="@drawable/ic_album" />
<TextView <TextView
android:id="@+id/playback_song" android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Primary.Compact" style="@style/Widget.Auxio.TextView.Primary.Compact"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_info" app:layout_constraintBottom_toTopOf="@+id/playback_info"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toTopOf="@+id/playback_cover" app:layout_constraintTop_toTopOf="@+id/playback_cover"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" /> tools:text="Song Name" />
<TextView <TextView
android:id="@+id/playback_info" android:id="@+id/playback_info"
style="@style/Widget.Auxio.TextView.Secondary.Compact" style="@style/Widget.Auxio.TextView.Secondary.Compact"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
android:ellipsize="end" android:ellipsize="end"
app:layout_constraintBottom_toBottomOf="@+id/playback_cover" app:layout_constraintBottom_toBottomOf="@+id/playback_cover"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_song" app:layout_constraintTop_toBottomOf="@+id/playback_song"
tools:text="Artist Name / Album Name" /> tools:text="Artist Name / Album Name" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state" android:src="@drawable/sel_playing_state"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar" app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.progressindicator.LinearProgressIndicator <com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/playback_progress_bar" android:id="@+id/playback_progress_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:trackColor="?attr/colorPrimary" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" app:trackColor="?attr/colorPrimary"
tools:progress="70" /> tools:progress="70" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -10,160 +10,160 @@
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon.Down" style="@style/Widget.Auxio.Toolbar.Icon.Down"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:title="@string/lbl_playback" app:menu="@menu/menu_playback"
tools:subtitle="@string/lbl_all_songs" app:title="@string/lbl_playback"
app:menu="@menu/menu_playback" /> tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full" style="@style/Widget.Auxio.Image.Full"
app:layout_constraintBottom_toTopOf="@+id/playback_song" android:layout_margin="@dimen/spacing_medium"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@+id/playback_song"
android:layout_margin="@dimen/spacing_medium" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/playback_toolbar" app:layout_constraintTop_toBottomOf="@+id/playback_toolbar"
tools:src="@drawable/ic_album" /> tools:src="@drawable/ic_album" />
<TextView <TextView
android:id="@+id/playback_song" android:id="@+id/playback_song"
style="@style/Widget.Auxio.TextView.Primary" style="@style/Widget.Auxio.TextView.Primary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/playback_artist" app:layout_constraintBottom_toTopOf="@+id/playback_artist"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" /> tools:text="Song Name" />
<TextView <TextView
android:id="@+id/playback_artist" android:id="@+id/playback_artist"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/playback_album" app:layout_constraintBottom_toTopOf="@+id/playback_album"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:text="Artist Name" /> tools:text="Artist Name" />
<TextView <TextView
android:id="@+id/playback_album" android:id="@+id/playback_album"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar" app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:text="Album Name" /> tools:text="Album Name" />
<com.google.android.material.slider.Slider <com.google.android.material.slider.Slider
android:id="@+id/playback_seek_bar" android:id="@+id/playback_seek_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:valueFrom="0" android:layout_marginBottom="@dimen/spacing_medium"
android:valueTo="1" android:valueFrom="0"
app:haloRadius="@dimen/slider_halo_radius" android:valueTo="1"
app:labelBehavior="gone" app:haloRadius="@dimen/slider_halo_radius"
app:labelStyle="@style/TextAppearance.Auxio.BodySmall" app:labelBehavior="gone"
android:layout_marginBottom="@dimen/spacing_medium" app:labelStyle="@style/TextAppearance.Auxio.BodySmall"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause" app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:thumbRadius="@dimen/slider_thumb_radius" /> app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView <TextView
android:id="@+id/playback_position" android:id="@+id/playback_position"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_small_inv" android:layout_marginTop="@dimen/spacing_small_inv"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textColor="@color/sel_accented_secondary" android:textColor="@color/sel_accented_secondary"
app:layout_constraintStart_toStartOf="@+id/playback_seek_bar" app:layout_constraintStart_toStartOf="@+id/playback_seek_bar"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
tools:text="11:38" /> tools:text="11:38" />
<TextView <TextView
android:id="@+id/playback_duration" android:id="@+id/playback_duration"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv" android:layout_marginTop="@dimen/spacing_small_inv"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar" app:layout_constraintTop_toBottomOf="@+id/playback_seek_bar"
tools:text="16:16" /> tools:text="16:16" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_loop" android:id="@+id/playback_loop"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_change_loop" android:layout_marginStart="@dimen/spacing_medium"
android:src="@drawable/ic_loop" android:contentDescription="@string/desc_change_loop"
app:hasIndicator="true" android:src="@drawable/ic_loop"
android:layout_marginStart="@dimen/spacing_medium" app:hasIndicator="true"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" /> app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_prev" android:id="@+id/playback_skip_prev"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_skip_prev" android:contentDescription="@string/desc_skip_prev"
android:src="@drawable/ic_skip_prev" android:src="@drawable/ic_skip_prev"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_loop" app:layout_constraintStart_toEndOf="@+id/playback_loop"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<com.google.android.material.floatingactionbutton.FloatingActionButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Auxio.FloatingActionButton.PlayPause" style="@style/Widget.Auxio.FloatingActionButton.PlayPause"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_medium" android:layout_marginBottom="@dimen/spacing_medium"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state" android:src="@drawable/sel_playing_state"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:src="@drawable/ic_play" /> tools:src="@drawable/ic_play" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_skip_next" android:id="@+id/playback_skip_next"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_skip_next" android:contentDescription="@string/desc_skip_next"
android:minWidth="@dimen/size_btn_small" android:minWidth="@dimen/size_btn_small"
android:minHeight="@dimen/size_btn_small" android:minHeight="@dimen/size_btn_small"
android:src="@drawable/ic_skip_next" android:src="@drawable/ic_skip_next"
app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause" app:layout_constraintBottom_toBottomOf="@+id/playback_play_pause"
app:layout_constraintEnd_toStartOf="@+id/playback_shuffle" app:layout_constraintEnd_toStartOf="@+id/playback_shuffle"
app:layout_constraintStart_toEndOf="@+id/playback_play_pause" app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<org.oxycblt.auxio.playback.PlaybackButton <org.oxycblt.auxio.playback.PlaybackButton
android:id="@+id/playback_shuffle" android:id="@+id/playback_shuffle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_shuffle" android:layout_marginEnd="@dimen/spacing_medium"
android:minWidth="@dimen/size_btn_small" android:contentDescription="@string/desc_shuffle"
android:minHeight="@dimen/size_btn_small" android:minWidth="@dimen/size_btn_small"
android:src="@drawable/ic_shuffle" android:minHeight="@dimen/size_btn_small"
android:layout_marginEnd="@dimen/spacing_medium" android:src="@drawable/ic_shuffle"
app:hasIndicator="true" app:hasIndicator="true"
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/playback_skip_next" app:layout_constraintTop_toTopOf="@+id/playback_skip_next"
app:tint="@color/sel_accented" /> app:tint="@color/sel_accented" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -10,26 +10,26 @@
<org.oxycblt.auxio.ui.EdgeAppBarLayout <org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/queue_appbar" android:id="@+id/queue_appbar"
style="@style/Widget.Auxio.AppBarLayout" style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true" app:liftOnScroll="true"
app:liftOnScrollTargetViewId="@id/queue_recycler"> app:liftOnScrollTargetViewId="@id/queue_recycler">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/queue_toolbar" android:id="@+id/queue_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon.Down" style="@style/Widget.Auxio.Toolbar.Icon.Down"
android:elevation="0dp" android:elevation="0dp"
app:navigationIcon="@drawable/ic_down" app:navigationIcon="@drawable/ic_down"
app:title="@string/lbl_queue" /> app:title="@string/lbl_queue" />
</org.oxycblt.auxio.ui.EdgeAppBarLayout> </org.oxycblt.auxio.ui.EdgeAppBarLayout>
<org.oxycblt.auxio.ui.EdgeRecyclerView <org.oxycblt.auxio.ui.EdgeRecyclerView
android:id="@+id/queue_recycler" android:id="@+id/queue_recycler"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:overScrollMode="ifContentScrolls" android:overScrollMode="ifContentScrolls"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:listitem="@layout/item_queue_song" /> tools:listitem="@layout/item_queue_song" />
</org.oxycblt.auxio.ui.EdgeCoordinatorLayout> </org.oxycblt.auxio.ui.EdgeCoordinatorLayout>

View file

@ -1,55 +1,55 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<org.oxycblt.auxio.ui.EdgeCoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" <org.oxycblt.auxio.ui.EdgeCoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<org.oxycblt.auxio.ui.EdgeAppBarLayout <org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/search_appbar" android:id="@+id/search_appbar"
style="@style/Widget.Auxio.AppBarLayout" style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true" app:liftOnScroll="true"
app:liftOnScrollTargetViewId="@id/search_recycler"> app:liftOnScrollTargetViewId="@id/search_recycler">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/search_toolbar" android:id="@+id/search_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon" style="@style/Widget.Auxio.Toolbar.Icon"
app:menu="@menu/menu_search"> app:menu="@menu/menu_search">
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/search_text_layout" android:id="@+id/search_text_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:endIconContentDescription="@string/desc_clear_search"
app:endIconDrawable="@drawable/ic_close"
app:endIconMode="clear_text"
app:endIconTint="?attr/colorControlNormal"
app:errorEnabled="false"
app:hintEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/search_edit_text"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:endIconContentDescription="@string/desc_clear_search" android:background="@android:color/transparent"
app:endIconDrawable="@drawable/ic_close" android:hint="@string/hint_search_library"
app:endIconMode="clear_text" android:imeOptions="actionSearch|flagNoExtractUi"
app:endIconTint="?attr/colorControlNormal" android:inputType="textFilter"
app:errorEnabled="false" android:paddingStart="0dp"
app:hintEnabled="false"> android:paddingEnd="0dp" />
<com.google.android.material.textfield.TextInputEditText </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/search_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:hint="@string/hint_search_library"
android:imeOptions="actionSearch|flagNoExtractUi"
android:inputType="textFilter"
android:paddingStart="0dp"
android:paddingEnd="0dp" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.MaterialToolbar> </org.oxycblt.auxio.ui.EdgeAppBarLayout>
</org.oxycblt.auxio.ui.EdgeAppBarLayout> <org.oxycblt.auxio.ui.EdgeRecyclerView
android:id="@+id/search_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:listitem="@layout/item_song" />
<org.oxycblt.auxio.ui.EdgeRecyclerView </org.oxycblt.auxio.ui.EdgeCoordinatorLayout>
android:id="@+id/search_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:listitem="@layout/item_song" />
</org.oxycblt.auxio.ui.EdgeCoordinatorLayout>

View file

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<org.oxycblt.auxio.ui.EdgeCoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" <org.oxycblt.auxio.ui.EdgeCoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/settings_coordinator" android:id="@+id/settings_coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorSurface"
android:orientation="vertical">
<org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/settings_appbar"
style="@style/Widget.Auxio.AppBarLayout"
android:clickable="true"
android:focusable="true"
app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/settings_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon"
app:title="@string/set_title" />
</org.oxycblt.auxio.ui.EdgeAppBarLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/settings_list_fragment"
android:name="org.oxycblt.auxio.settings.SettingsListFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/colorSurface" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
android:orientation="vertical">
<org.oxycblt.auxio.ui.EdgeAppBarLayout </org.oxycblt.auxio.ui.EdgeCoordinatorLayout>
android:id="@+id/settings_appbar"
style="@style/Widget.Auxio.AppBarLayout"
android:clickable="true"
android:focusable="true"
app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/settings_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon"
app:title="@string/set_title" />
</org.oxycblt.auxio.ui.EdgeAppBarLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/settings_list_fragment"
android:name="org.oxycblt.auxio.settings.SettingsListFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
</org.oxycblt.auxio.ui.EdgeCoordinatorLayout>

View file

@ -11,31 +11,31 @@
style="@style/Widget.Auxio.TextView.Header" style="@style/Widget.Auxio.TextView.Header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/header_divider" app:layout_constraintBottom_toTopOf="@id/header_divider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="Songs" /> tools:text="Songs" />
<ImageButton <ImageButton
android:id="@+id/header_button" android:id="@+id/header_button"
style="@style/Widget.AppCompat.Button.Borderless" style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minWidth="@dimen/size_btn_small" android:background="@drawable/ui_unbounded_ripple"
android:minHeight="@dimen/size_btn_small" android:minWidth="@dimen/size_btn_small"
android:background="@drawable/ui_unbounded_ripple" android:minHeight="@dimen/size_btn_small"
android:paddingStart="@dimen/spacing_medium" android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium" android:paddingEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@id/header_divider" app:layout_constraintBottom_toTopOf="@id/header_divider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:src="@drawable/ic_sort" /> tools:src="@drawable/ic_sort" />
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:id="@+id/header_divider" android:id="@+id/header_divider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" /> app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -13,54 +13,54 @@
android:contentDescription="@string/def_track" android:contentDescription="@string/def_track"
android:src="@drawable/ic_song" android:src="@drawable/ic_song"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/song_track"
app:layout_constraintEnd_toEndOf="@+id/song_track"
app:layout_constraintStart_toStartOf="@+id/song_track"
app:layout_constraintTop_toTopOf="@+id/song_track"
app:tint="@color/sel_accented" app:tint="@color/sel_accented"
app:layout_constraintBottom_toBottomOf="@+id/song_track" tools:text="1" />
app:layout_constraintEnd_toEndOf="@+id/song_track"
app:layout_constraintStart_toStartOf="@+id/song_track"
app:layout_constraintTop_toTopOf="@+id/song_track"
tools:text="1" />
<TextView <TextView
android:id="@+id/song_track" android:id="@+id/song_track"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:maxLines="1"
android:minWidth="@dimen/size_track_number" android:minWidth="@dimen/size_track_number"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge" android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
android:textColor="@color/sel_accented_secondary" android:textColor="@color/sel_accented_secondary"
android:textSize="@dimen/text_size_ext_title_mid_large" android:textSize="@dimen/text_size_ext_title_mid_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/song_name" app:layout_constraintEnd_toStartOf="@+id/song_name"
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_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="16" /> tools:text="16" />
<TextView <TextView
android:id="@+id/song_name" android:id="@+id/song_name"
style="@style/Widget.Auxio.TextView.Item.Primary" style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/sel_accented_primary" android:textColor="@color/sel_accented_primary"
app:layout_constraintBottom_toTopOf="@+id/song_duration" app:layout_constraintBottom_toTopOf="@+id/song_duration"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/song_track" app:layout_constraintStart_toEndOf="@+id/song_track"
app:layout_constraintTop_toTopOf="@+id/song_track" app:layout_constraintTop_toTopOf="@+id/song_track"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" /> tools:text="Song Name" />
<TextView <TextView
android:id="@+id/song_duration" android:id="@+id/song_duration"
style="@style/Widget.Auxio.TextView.Item.Secondary" style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintBottom_toBottomOf="@+id/song_track" app:layout_constraintBottom_toBottomOf="@+id/song_track"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/song_track" app:layout_constraintStart_toEndOf="@+id/song_track"
app:layout_constraintTop_toBottomOf="@+id/song_name" app:layout_constraintTop_toBottomOf="@+id/song_name"
tools:text="16:16" /> tools:text="16:16" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/Widget.Auxio.ItemLayout"> style="@style/Widget.Auxio.ItemLayout">
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
@ -14,26 +14,26 @@
tools:src="@drawable/ic_artist" /> tools:src="@drawable/ic_artist" />
<TextView <TextView
android:id="@+id/artist_name" android:id="@+id/artist_name"
style="@style/Widget.Auxio.TextView.Item.Primary" style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/artist_info" app:layout_constraintBottom_toTopOf="@+id/artist_info"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/artist_image" app:layout_constraintStart_toEndOf="@+id/artist_image"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="Artist Name" /> tools:text="Artist Name" />
<TextView <TextView
android:id="@+id/artist_info" android:id="@+id/artist_info"
style="@style/Widget.Auxio.TextView.Item.Secondary" style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/artist_image" app:layout_constraintStart_toEndOf="@+id/artist_image"
app:layout_constraintTop_toBottomOf="@+id/artist_name" app:layout_constraintTop_toBottomOf="@+id/artist_name"
tools:text="2 Albums, 20 Songs" /> tools:text="2 Albums, 20 Songs" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,74 +1,74 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.MidHuge"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:src="@drawable/ic_artist" />
<TextView
android:id="@+id/detail_name"
style="@style/Widget.Auxio.TextView.Detail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:padding="@dimen/spacing_medium"> 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"
tools:text="Name" />
<org.oxycblt.auxio.coil.RoundableImageView <TextView
android:id="@+id/detail_cover" android:id="@+id/detail_subhead"
style="@style/Widget.Auxio.Image.MidHuge" style="@style/Widget.Auxio.TextView.Secondary"
app:layout_constraintEnd_toEndOf="parent" android:layout_width="match_parent"
app:layout_constraintStart_toStartOf="parent" android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" android:textColor="?android:attr/textColorSecondary"
tools:ignore="ContentDescription" app:layout_constraintStart_toStartOf="parent"
tools:src="@drawable/ic_artist" /> app:layout_constraintTop_toBottomOf="@+id/detail_name"
tools:text="Info A" />
<TextView <TextView
android:id="@+id/detail_name" android:id="@+id/detail_info"
style="@style/Widget.Auxio.TextView.Detail" style="@style/Widget.Auxio.TextView.Secondary"
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" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
app:layout_constraintStart_toStartOf="parent" tools:text="Info B" />
app:layout_constraintTop_toBottomOf="@+id/detail_cover"
tools:text="Name" />
<TextView <Button
android:id="@+id/detail_subhead" android:id="@+id/detail_play_button"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.Button.Secondary"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/textColorSecondary" android:layout_marginTop="@dimen/spacing_medium"
app:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintTop_toBottomOf="@+id/detail_name" android:text="@string/lbl_play"
tools:text="Info A" /> app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
<TextView <Button
android:id="@+id/detail_info" android:id="@+id/detail_shuffle_button"
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.Button.Primary"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/textColorSecondary" android:layout_marginStart="@dimen/spacing_small"
app:layout_constraintStart_toStartOf="parent" android:text="@string/lbl_shuffle"
app:layout_constraintTop_toBottomOf="@+id/detail_subhead" app:layout_constraintBottom_toBottomOf="@+id/detail_play_button"
tools:text="Info B" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_play_button"
<Button app:layout_constraintTop_toTopOf="@+id/detail_play_button" />
android:id="@+id/detail_play_button" </androidx.constraintlayout.widget.ConstraintLayout>
style="@style/Widget.Auxio.Button.Secondary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_small"
android:text="@string/lbl_play"
app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
<Button
android:id="@+id/detail_shuffle_button"
style="@style/Widget.Auxio.Button.Primary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:text="@string/lbl_shuffle"
app:layout_constraintBottom_toBottomOf="@+id/detail_play_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/detail_play_button"
app:layout_constraintTop_toTopOf="@+id/detail_play_button" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,43 +1,43 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/Widget.Auxio.ItemLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
android:padding="0dp">
<TextView
android:id="@+id/excluded_path"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:clickable="false" android:layout_margin="@dimen/spacing_medium"
android:focusable="false" android:gravity="center"
xmlns:app="http://schemas.android.com/apk/res-auto" android:maxLines="@null"
xmlns:tools="http://schemas.android.com/tools" android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
style="@style/Widget.Auxio.ItemLayout" app:layout_constraintBottom_toBottomOf="parent"
android:padding="0dp"> app:layout_constraintEnd_toStartOf="@+id/excluded_clear"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="/storage/emulated/0/directory" />
<TextView <ImageButton
android:id="@+id/excluded_path" android:id="@+id/excluded_clear"
style="@style/Widget.Auxio.TextView.Item.Primary" android:layout_width="wrap_content"
android:layout_width="0dp" android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge" android:layout_margin="@dimen/spacing_small"
android:layout_height="wrap_content" android:background="@drawable/ui_unbounded_ripple"
android:layout_margin="@dimen/spacing_medium" android:contentDescription="@string/desc_blacklist_delete"
android:gravity="center" android:minWidth="@dimen/size_btn_small"
android:maxLines="@null" android:minHeight="@dimen/size_btn_small"
app:layout_constraintBottom_toBottomOf="parent" android:src="@drawable/ic_clear"
app:layout_constraintEnd_toStartOf="@+id/excluded_clear" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="/storage/emulated/0/directory" /> app:tint="?attr/colorControlNormal" />
<ImageButton </androidx.constraintlayout.widget.ConstraintLayout>
android:id="@+id/excluded_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_small"
android:minHeight="@dimen/size_btn_small"
android:minWidth="@dimen/size_btn_small"
android:background="@drawable/ui_unbounded_ripple"
android:contentDescription="@string/desc_blacklist_delete"
android:src="@drawable/ic_clear"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?attr/colorControlNormal" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,24 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@android:id/title"
style="@style/Widget.Auxio.TextView.Header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/header_divider"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Songs" />
<TextView <com.google.android.material.divider.MaterialDivider
android:id="@android:id/title" android:id="@+id/header_divider"
style="@style/Widget.Auxio.TextView.Header" android:layout_width="match_parent"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" />
app:layout_constraintBottom_toTopOf="@id/header_divider"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Songs" />
<com.google.android.material.divider.MaterialDivider </androidx.constraintlayout.widget.ConstraintLayout>
android:id="@+id/header_divider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,84 +1,84 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorSurface">
<View
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimary"
android:visibility="invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:contentDescription="@string/desc_clear_queue_item"
android:padding="@dimen/spacing_medium"
android:src="@drawable/ic_clear"
app:tint="?attr/colorSurface" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/body"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/colorSurface"> android:background="?attr/colorSurface">
<View <org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/background" android:id="@+id/song_album_cover"
android:layout_width="match_parent" style="@style/Widget.Auxio.Image.Small"
android:layout_height="match_parent" android:layout_margin="@dimen/spacing_medium"
android:background="?attr/colorPrimary" app:layout_constraintBottom_toBottomOf="parent"
android:visibility="invisible" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_album" />
<TextView
android:id="@+id/song_name"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/song_info"
app:layout_constraintEnd_toStartOf="@+id/song_drag_handle"
app:layout_constraintStart_toEndOf="@+id/song_album_cover"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" />
<TextView
android:id="@+id/song_info"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/song_drag_handle"
app:layout_constraintStart_toEndOf="@+id/song_album_cover"
app:layout_constraintTop_toBottomOf="@+id/song_name"
tools:text="Artist / Album" />
<ImageView <ImageView
android:id="@+id/song_drag_handle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical" android:clickable="true"
android:contentDescription="@string/desc_clear_queue_item" android:contentDescription="@string/desc_queue_handle"
android:padding="@dimen/spacing_medium" android:focusable="true"
android:src="@drawable/ic_clear" android:minWidth="@dimen/size_btn_small"
app:tint="?attr/colorSurface" /> android:minHeight="@dimen/size_btn_small"
android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium"
android:scaleType="center"
android:src="@drawable/ic_handle"
app:layout_constraintBottom_toBottomOf="@+id/song_album_cover"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/song_album_cover" />
<androidx.constraintlayout.widget.ConstraintLayout </androidx.constraintlayout.widget.ConstraintLayout>
android:id="@+id/body" </FrameLayout>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorSurface">
<org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/song_album_cover"
style="@style/Widget.Auxio.Image.Small"
android:layout_margin="@dimen/spacing_medium"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_album" />
<TextView
android:id="@+id/song_name"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toTopOf="@+id/song_info"
app:layout_constraintEnd_toStartOf="@+id/song_drag_handle"
app:layout_constraintStart_toEndOf="@+id/song_album_cover"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" />
<TextView
android:id="@+id/song_info"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/song_drag_handle"
app:layout_constraintStart_toEndOf="@+id/song_album_cover"
app:layout_constraintTop_toBottomOf="@+id/song_name"
tools:text="Artist / Album" />
<ImageView
android:id="@+id/song_drag_handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:contentDescription="@string/desc_queue_handle"
android:focusable="true"
android:minWidth="@dimen/size_btn_small"
android:minHeight="@dimen/size_btn_small"
android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium"
android:scaleType="center"
android:src="@drawable/ic_handle"
app:layout_constraintBottom_toBottomOf="@+id/song_album_cover"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/song_album_cover" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/Widget.Auxio.ItemLayout"> style="@style/Widget.Auxio.ItemLayout">
<org.oxycblt.auxio.coil.RoundableImageView <org.oxycblt.auxio.coil.RoundableImageView
@ -36,4 +36,4 @@
app:layout_constraintTop_toBottomOf="@+id/song_name" app:layout_constraintTop_toBottomOf="@+id/song_name"
tools:text="Info" /> tools:text="Info" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,48 +1,48 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/Widget.Auxio.ItemLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="0dp">
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/tab_icon"
style="@style/Widget.Material3.CompoundButton.CheckBox"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_marginStart="@dimen/spacing_medium"
xmlns:tools="http://schemas.android.com/tools" android:layout_marginTop="@dimen/spacing_small"
style="@style/Widget.Auxio.ItemLayout" android:layout_marginBottom="@dimen/spacing_small"
android:padding="0dp"> android:clickable="false"
android:focusable="false"
android:paddingStart="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
app:buttonCompat="@null"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tab_drag_handle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlSymmetry,contentDescription"
tools:text="Artist" />
<com.google.android.material.checkbox.MaterialCheckBox <ImageView
android:id="@+id/tab_icon" android:id="@+id/tab_drag_handle"
style="@style/Widget.Material3.CompoundButton.CheckBox" android:layout_width="wrap_content"
android:layout_width="0dp" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:clickable="true"
android:layout_marginStart="@dimen/spacing_medium" android:contentDescription="@string/desc_tab_handle"
android:layout_marginTop="@dimen/spacing_small" android:focusable="true"
android:layout_marginBottom="@dimen/spacing_small" android:minWidth="@dimen/size_btn_small"
android:clickable="false" android:minHeight="@dimen/size_btn_small"
android:focusable="false" android:paddingStart="@dimen/spacing_medium"
android:paddingStart="@dimen/spacing_medium" android:paddingEnd="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge" android:scaleType="center"
app:buttonCompat="@null" android:src="@drawable/ic_handle"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="@+id/tab_icon"
app:layout_constraintEnd_toStartOf="@+id/tab_drag_handle" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/tab_icon" />
app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlSymmetry,contentDescription"
tools:text="Artist" />
<ImageView </androidx.constraintlayout.widget.ConstraintLayout>
android:id="@+id/tab_drag_handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:contentDescription="@string/desc_tab_handle"
android:focusable="true"
android:minWidth="@dimen/size_btn_small"
android:minHeight="@dimen/size_btn_small"
android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium"
android:scaleType="center"
android:src="@drawable/ic_handle"
app:layout_constraintBottom_toBottomOf="@+id/tab_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/tab_icon" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,50 +1,50 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android" <merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
tools:layout_height="wrap_content" tools:layout_height="wrap_content"
tools:layout_width="match_parent" tools:layout_width="match_parent"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<com.google.android.material.slider.Slider <com.google.android.material.slider.Slider
android:id="@+id/seek_bar" android:id="@+id/seek_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_medium" android:layout_marginBottom="@dimen/spacing_medium"
android:paddingStart="@dimen/spacing_small" android:paddingStart="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small" android:paddingEnd="@dimen/spacing_small"
app:labelBehavior="gone" android:valueFrom="0"
app:labelStyle="@style/TextAppearance.Auxio.BodySmall" android:valueTo="1"
android:valueFrom="0" app:haloRadius="@dimen/slider_halo_radius"
android:valueTo="1" app:labelBehavior="gone"
app:thumbRadius="@dimen/slider_thumb_radius" app:labelStyle="@style/TextAppearance.Auxio.BodySmall"
app:haloRadius="@dimen/slider_halo_radius" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView <TextView
android:id="@+id/playback_position" android:id="@+id/playback_position"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_small" android:layout_marginBottom="@dimen/spacing_small"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textColor="@color/sel_accented_secondary" android:textColor="@color/sel_accented_secondary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:text="11:38" /> tools:text="11:38" />
<TextView <TextView
android:id="@+id/playback_duration" android:id="@+id/playback_duration"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_small" android:layout_marginBottom="@dimen/spacing_small"
android:textColor="?android:attr/textColorSecondary" android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
tools:text="16:16" /> tools:text="16:16" />
</merge> </merge>

View file

@ -18,15 +18,15 @@
android:tint="?attr/colorPrimary" /> android:tint="?attr/colorPrimary" />
<android.widget.TextView <android.widget.TextView
android:layout_width="match_parent"
style="@style/Widget.Auxio.TextView.Primary.AppWidget" style="@style/Widget.Auxio.TextView.Primary.AppWidget"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:ellipsize="none" android:ellipsize="none"
android:singleLine="false"
android:textAlignment="center"
android:gravity="center" android:gravity="center"
android:padding="@dimen/spacing_medium" android:padding="@dimen/spacing_medium"
android:text="@string/def_playback" /> android:singleLine="false"
android:text="@string/def_playback"
android:textAlignment="center" />
</FrameLayout> </FrameLayout>

View file

@ -51,9 +51,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:padding="@dimen/spacing_medium" android:layout_gravity="center"
android:orientation="vertical" android:orientation="vertical"
android:layout_gravity="center"> android:padding="@dimen/spacing_medium">
<android.widget.TextView <android.widget.TextView
android:id="@+id/widget_song" android:id="@+id/widget_song"

View file

@ -51,9 +51,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:padding="@dimen/spacing_medium" android:layout_gravity="center"
android:orientation="vertical" android:orientation="vertical"
android:layout_gravity="center"> android:padding="@dimen/spacing_medium">
<android.widget.TextView <android.widget.TextView
android:id="@+id/widget_song" android:id="@+id/widget_song"

View file

@ -53,13 +53,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:paddingTop="@dimen/spacing_small" android:layout_gravity="center"
android:paddingBottom="@dimen/spacing_small"
android:paddingStart="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small"
android:orientation="horizontal"
android:background="@drawable/ui_widget_panel" android:background="@drawable/ui_widget_panel"
android:layout_gravity="center"> android:orientation="horizontal"
android:paddingStart="@dimen/spacing_small"
android:paddingTop="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small"
android:paddingBottom="@dimen/spacing_small">
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_skip_prev" android:id="@+id/widget_skip_prev"

View file

@ -56,10 +56,10 @@
android:layout_gravity="center" android:layout_gravity="center"
android:background="@drawable/ui_widget_panel" android:background="@drawable/ui_widget_panel"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingTop="@dimen/spacing_small"
android:paddingBottom="@dimen/spacing_small"
android:paddingStart="@dimen/spacing_small" android:paddingStart="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small"> android:paddingTop="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small"
android:paddingBottom="@dimen/spacing_small">
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_loop" android:id="@+id/widget_loop"

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Widget.Auxio.Button.AppWidget.V31" parent="Widget.AppCompat.Button.Borderless"> <style name="Widget.Auxio.Button.AppWidget.V31" parent="Widget.AppCompat.Button.Borderless">
<item name="android:background">@drawable/ui_large_unbounded_ripple</item> <item name="android:background">@drawable/ui_large_unbounded_ripple</item>
</style> </style>
</resources> </resources>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Theme.Widget" parent="@android:style/Theme.DeviceDefault.DayNight"> <style name="Theme.Widget" parent="@android:style/Theme.DeviceDefault.DayNight">
<item name="colorSurface">@color/widget_surface</item> <item name="colorSurface">@color/widget_surface</item>
<item name="colorPrimary">?android:attr/colorAccent</item> <item name="colorPrimary">?android:attr/colorAccent</item>
<item name="colorSecondary">?android:attr/colorAccent</item> <item name="colorSecondary">?android:attr/colorAccent</item>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Theme.Auxio.Black" parent="Theme.Auxio.App"> <style name="Theme.Auxio.Black" parent="Theme.Auxio.App">
<item name="colorSurface">@android:color/black</item> <item name="colorSurface">@android:color/black</item>
</style> </style>

View file

@ -6,17 +6,17 @@
<org.oxycblt.auxio.settings.pref.IntListPreference <org.oxycblt.auxio.settings.pref.IntListPreference
app:defaultValue="@integer/theme_auto" app:defaultValue="@integer/theme_auto"
app:isPreferenceVisible="@bool/enable_theme_settings"
app:entries="@array/entries_theme" app:entries="@array/entries_theme"
app:entryValues="@array/values_theme" app:entryValues="@array/values_theme"
app:icon="@drawable/ic_day" app:icon="@drawable/ic_day"
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:isPreferenceVisible="@bool/enable_theme_settings"
app:key="KEY_THEME2" app:key="KEY_THEME2"
app:title="@string/set_theme" /> app:title="@string/set_theme" />
<Preference <Preference
app:isPreferenceVisible="@bool/enable_theme_settings"
app:icon="@drawable/ic_accent" app:icon="@drawable/ic_accent"
app:isPreferenceVisible="@bool/enable_theme_settings"
app:key="auxio_accent" app:key="auxio_accent"
app:title="@string/set_accent" /> app:title="@string/set_accent" />
@ -81,8 +81,8 @@
<org.oxycblt.auxio.settings.pref.M3SwitchPreference <org.oxycblt.auxio.settings.pref.M3SwitchPreference
app:defaultValue="true" app:defaultValue="true"
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:key="KEY_AUDIO_FOCUS"
app:isPreferenceVisible="@bool/enable_audio_focus_setting" app:isPreferenceVisible="@bool/enable_audio_focus_setting"
app:key="KEY_AUDIO_FOCUS"
app:summary="@string/set_focus_desc" app:summary="@string/set_focus_desc"
app:title="@string/set_focus" /> app:title="@string/set_focus" />
@ -94,12 +94,12 @@
app:title="@string/set_headset_autoplay" /> app:title="@string/set_headset_autoplay" />
<org.oxycblt.auxio.settings.pref.IntListPreference <org.oxycblt.auxio.settings.pref.IntListPreference
app:defaultValue="@integer/replay_gain_off"
app:key="auxio_replay_gain"
app:allowDividerBelow="false" app:allowDividerBelow="false"
app:iconSpaceReserved="false" app:defaultValue="@integer/replay_gain_off"
app:entries="@array/entries_replay_gain" app:entries="@array/entries_replay_gain"
app:entryValues="@array/values_replay_gain" app:entryValues="@array/values_replay_gain"
app:iconSpaceReserved="false"
app:key="auxio_replay_gain"
app:title="@string/set_replay_gain" /> app:title="@string/set_replay_gain" />
</PreferenceCategory> </PreferenceCategory>