ui: use grade instead of indicator
Finally unify all icon activation states under the new grade modifier in Material Symbols. This provides similar clarify to the dot/greyed state, but without inconsistent meanings. The shuffle icon did have to be bolded a little more though, as the grade did not seem to do much.
This commit is contained in:
parent
4f8fc8008c
commit
b3cac19ee4
29 changed files with 90 additions and 181 deletions
|
@ -122,7 +122,7 @@ class Indexer {
|
|||
this.callback = null
|
||||
}
|
||||
|
||||
suspend fun index(context: Context) {
|
||||
fun index(context: Context) {
|
||||
val generation = synchronized(this) { ++currentGeneration }
|
||||
|
||||
val notGranted =
|
||||
|
|
|
@ -25,7 +25,6 @@ import coil.imageLoader
|
|||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.launch
|
||||
import org.oxycblt.auxio.IntegerTable
|
||||
import org.oxycblt.auxio.R
|
||||
|
@ -113,11 +112,17 @@ class IndexerService : Service(), Indexer.Controller, Settings.Callback {
|
|||
// Load was completed successfully. However, we still need to do some
|
||||
// extra work to update the app's state.
|
||||
updateScope.launch {
|
||||
// Invalidate the image cache, as there may be some covers that are
|
||||
// no longer valid.
|
||||
imageLoader.memoryCache?.clear()
|
||||
|
||||
if (musicStore.library != null) {
|
||||
// This is a new library, so we need to make sure the playback state
|
||||
// is coherent.
|
||||
// is coherent. This seems a bit muddly, but PlaybackService (or any
|
||||
// other playback component capable of handling this) may not be
|
||||
// capable of long-running background work as the library is being
|
||||
// updated. The initialization steps on the other hand are firmly in
|
||||
// the place of the playback module.
|
||||
playbackManager.sanitize(
|
||||
PlaybackStateDatabase.getInstance(this@IndexerService), newLibrary)
|
||||
}
|
||||
|
|
|
@ -205,8 +205,6 @@ class Task(context: Context, private val audio: MediaStoreBackend.Audio) {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: Release types
|
||||
|
||||
private fun populateId3v2(tags: Map<String, String>) {
|
||||
// Title
|
||||
tags["TIT2"]?.let { audio.title = it }
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2022 Auxio Project
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.oxycblt.auxio.playback
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Canvas
|
||||
import android.util.AttributeSet
|
||||
import androidx.annotation.AttrRes
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import org.oxycblt.auxio.R
|
||||
import org.oxycblt.auxio.util.getDrawableSafe
|
||||
|
||||
/**
|
||||
* Extends [MaterialButton] to add a dot indicator to the bottom of the view.
|
||||
*
|
||||
* TODO: Experiment with the "grade" attribute on Material Icons so that I can replace this
|
||||
*
|
||||
* @author OxygenCobalt
|
||||
*/
|
||||
class IndicatorMaterialButton
|
||||
@JvmOverloads
|
||||
constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) :
|
||||
MaterialButton(context, attrs, defStyleAttr) {
|
||||
private val indicatorDrawable = context.getDrawableSafe(R.drawable.ui_indicator)
|
||||
|
||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
|
||||
|
||||
// Put the indicator right below the icon.
|
||||
val x = (measuredWidth - indicatorDrawable.intrinsicWidth) / 2
|
||||
val y = ((measuredHeight - iconSize) / 2) + iconSize
|
||||
|
||||
indicatorDrawable.bounds.set(
|
||||
x, y, x + indicatorDrawable.intrinsicWidth, y + indicatorDrawable.intrinsicHeight)
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
|
||||
// I would use onDrawForeground but apparently that isn't called by Lollipop devices.
|
||||
// This is not referenced in the documentation at all.
|
||||
if (isActivated) {
|
||||
indicatorDrawable.draw(canvas)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,6 +31,8 @@ import android.widget.FrameLayout
|
|||
* particular overrides the layout direction in a way that will not disrupt how other views are laid
|
||||
* out.
|
||||
*
|
||||
* This layout can only contain one child.
|
||||
*
|
||||
* @author OxygenCobalt
|
||||
*/
|
||||
open class NoRtlFrameLayout
|
||||
|
|
|
@ -185,8 +185,8 @@ class PlaybackPanelFragment :
|
|||
isActivated = repeatMode != RepeatMode.NONE
|
||||
val iconRes =
|
||||
when (repeatMode) {
|
||||
RepeatMode.NONE,
|
||||
RepeatMode.ALL -> R.drawable.ic_repeat_24
|
||||
RepeatMode.NONE -> R.drawable.ic_repeat_off_24
|
||||
RepeatMode.ALL -> R.drawable.ic_repeat_on_24
|
||||
RepeatMode.TRACK -> R.drawable.ic_repeat_one_24
|
||||
}
|
||||
|
||||
|
|
|
@ -265,7 +265,7 @@ class MediaSessionComponent(
|
|||
PlaybackStateCompat.CustomAction.Builder(
|
||||
PlaybackService.ACTION_INC_REPEAT_MODE,
|
||||
context.getString(R.string.desc_change_repeat),
|
||||
R.drawable.ic_remote_repeat_off_24)
|
||||
R.drawable.ic_repeat_off_24)
|
||||
.build())
|
||||
.setBufferedPosition(player.bufferedPosition)
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ import android.support.v4.media.session.MediaSessionCompat
|
|||
import androidx.annotation.DrawableRes
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.media.app.NotificationCompat.MediaStyle
|
||||
import okhttp3.internal.notify
|
||||
import org.oxycblt.auxio.BuildConfig
|
||||
import org.oxycblt.auxio.IntegerTable
|
||||
import org.oxycblt.auxio.R
|
||||
|
@ -135,9 +134,9 @@ class NotificationComponent(private val context: Context, sessionToken: MediaSes
|
|||
): NotificationCompat.Action {
|
||||
val drawableRes =
|
||||
when (repeatMode) {
|
||||
RepeatMode.NONE -> R.drawable.ic_remote_repeat_off_24
|
||||
RepeatMode.ALL -> R.drawable.ic_remote_repeat_on_24
|
||||
RepeatMode.TRACK -> R.drawable.ic_remote_repeat_one_24
|
||||
RepeatMode.NONE -> R.drawable.ic_repeat_off_24
|
||||
RepeatMode.ALL -> R.drawable.ic_repeat_on_24
|
||||
RepeatMode.TRACK -> R.drawable.ic_repeat_one_24
|
||||
}
|
||||
|
||||
return buildAction(context, PlaybackService.ACTION_INC_REPEAT_MODE, drawableRes)
|
||||
|
@ -148,7 +147,7 @@ class NotificationComponent(private val context: Context, sessionToken: MediaSes
|
|||
isShuffled: Boolean
|
||||
): NotificationCompat.Action {
|
||||
val drawableRes =
|
||||
if (isShuffled) R.drawable.ic_shuffle_24 else R.drawable.ic_remote_shuffle_off_24
|
||||
if (isShuffled) R.drawable.ic_shuffle_on_24 else R.drawable.ic_shuffle_off_24
|
||||
|
||||
return buildAction(context, PlaybackService.ACTION_INVERT_SHUFFLE, drawableRes)
|
||||
}
|
||||
|
@ -165,10 +164,6 @@ class NotificationComponent(private val context: Context, sessionToken: MediaSes
|
|||
return action.build()
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
fun onNotificationChanged(song: Song?, component: NotificationComponent)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val CHANNEL_ID = BuildConfig.APPLICATION_ID + ".channel.PLAYBACK"
|
||||
}
|
||||
|
|
|
@ -516,7 +516,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
|
|||
}
|
||||
|
||||
/**
|
||||
* Do the nice view animations that occur whenever we slide up the bottom sheet. The way I
|
||||
* Do the nice view animations that occur whenever we slide up the bottom sheet. The way we
|
||||
* transition is largely inspired by Android 12's notification panel, with the compact view
|
||||
* fading out completely before the panel view fades in.
|
||||
*/
|
||||
|
@ -569,6 +569,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
|
|||
|
||||
if (dragHelper.smoothSlideViewTo(
|
||||
sheetView, sheetView.left, calculateSheetTopPosition(offset))) {
|
||||
// Slide has started, begin animating
|
||||
postInvalidateOnAnimation()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -189,15 +189,15 @@ private fun RemoteViews.applyFullControls(
|
|||
// indicators.
|
||||
val shuffleRes =
|
||||
when {
|
||||
state.isShuffled -> R.drawable.ic_remote_shuffle_on_24
|
||||
else -> R.drawable.ic_remote_shuffle_off_24
|
||||
state.isShuffled -> R.drawable.ic_shuffle_on_24
|
||||
else -> R.drawable.ic_shuffle_off_24
|
||||
}
|
||||
|
||||
val repeatRes =
|
||||
when (state.repeatMode) {
|
||||
RepeatMode.NONE -> R.drawable.ic_remote_repeat_off_24
|
||||
RepeatMode.ALL -> R.drawable.ic_remote_repeat_on_24
|
||||
RepeatMode.TRACK -> R.drawable.ic_remote_repeat_one_24
|
||||
RepeatMode.NONE -> R.drawable.ic_repeat_off_24
|
||||
RepeatMode.ALL -> R.drawable.ic_repeat_on_24
|
||||
RepeatMode.TRACK -> R.drawable.ic_repeat_one_24
|
||||
}
|
||||
|
||||
setImageViewResource(R.id.widget_shuffle, shuffleRes)
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/remote_translucent"
|
||||
android:pathData="M7,22 L3,18 7,14 8.4,15.45 6.85,17H17V13H19V19H6.85L8.4,20.55ZM5,11V5H17.15L15.6,3.45L17,2L21,6L17,10L15.6,8.55L17.15,7H7V11Z" />
|
||||
</vector>
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorPrimary"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M11.5,15V10.5H10V9H13V15ZM7,22 L3,18 7,14 8.4,15.45 6.85,17H17V13H19V19H6.85L8.4,20.55ZM5,11V5H17.15L15.6,3.45L17,2L21,6L17,10L15.6,8.55L17.15,7H7V11Z" />
|
||||
</vector>
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/remote_translucent"
|
||||
android:pathData="M9.175,10.575 L4,5.4 5.4,4 10.575,9.175ZM14,20V18H16.6L13.425,14.825L14.85,13.4L18,16.55V14H20V20ZM5.4,20 L4,18.6 16.6,6H14V4H20V10H18V7.4Z" />
|
||||
</vector>
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorPrimary"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M9.175,10.575 L4,5.4 5.4,4 10.575,9.175ZM14,20V18H16.6L13.425,14.825L14.85,13.4L18,16.55V14H20V20ZM5.4,20 L4,18.6 16.6,6H14V4H20V10H18V7.4Z" />
|
||||
</vector>
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M 9.3333328,29.333332 3.9999997,23.999999 9.3333328,18.666666 11.199999,20.599999 9.1333328,22.666666 H 22.666666 v -5.333334 h 2.666666 v 8 H 9.1333328 l 2.0666662,2.066667 z M 6.6666662,14.666666 V 6.6666662 H 22.866666 l -2.066667,-2.0666665 1.866667,-1.9333332 5.333333,5.333333 -5.333333,5.3333335 -1.866667,-1.933334 2.066667,-2.0666662 H 9.3333328 v 5.3333332 z" />
|
||||
</vector>
|
|
@ -2,7 +2,7 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorPrimary"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
10
app/src/main/res/drawable/ic_repeat_on_24.xml
Normal file
10
app/src/main/res/drawable/ic_repeat_on_24.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorPrimary">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6.8,22.725 L2.3,18.225 6.8,13.725 8.675,15.625 7.4,16.9H16.925V12.825H19.575V19.55H7.4L8.675,20.825ZM4.45,11.15V4.425H16.625L15.35,3.15L17.225,1.25L21.725,5.75L17.225,10.25L15.35,8.35L16.625,7.075H7.1V11.15Z"/>
|
||||
</vector>
|
|
@ -1,11 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorPrimary">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M11.5,15V10.5H10V9H13V15ZM7,22 L3,18 7,14 8.4,15.45 6.85,17H17V13H19V19H6.85L8.4,20.55ZM5,11V5H17.15L15.6,3.45L17,2L21,6L17,10L15.6,8.55L17.15,7H7V11Z" />
|
||||
android:pathData="M11.325,15.225V10.65H9.6V8.75H13.225V15.225ZM6.8,22.725 L2.3,18.225 6.8,13.725 8.675,15.625 7.4,16.9H16.925V12.825H19.575V19.55H7.4L8.675,20.825ZM4.45,11.15V4.425H16.625L15.35,3.15L17.225,1.25L21.725,5.75L17.225,10.25L15.35,8.35L16.625,7.075H7.1V11.15Z"/>
|
||||
</vector>
|
||||
|
|
10
app/src/main/res/drawable/ic_shuffle_on_24.xml
Normal file
10
app/src/main/res/drawable/ic_shuffle_on_24.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorPrimary">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M9.05,10.775 L3.675,5.4 5.45,3.625 10.825,9ZM13.75,20.275V17.725H16L13.275,14.975L15.025,13.2L17.75,15.925V13.725H20.325V20.275ZM5.45,20.375 L3.675,18.6 16,6.275H13.75V3.725H20.325V10.275H17.75V8.05Z"/>
|
||||
</vector>
|
5
app/src/main/res/drawable/sel_shuffle_state_24.xml
Normal file
5
app/src/main/res/drawable/sel_shuffle_state_24.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/ic_shuffle_on_24" android:state_activated="true" />
|
||||
<item android:drawable="@drawable/ic_shuffle_off_24" />
|
||||
</selector>
|
|
@ -101,19 +101,19 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_repeat"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_change_repeat"
|
||||
app:icon="@drawable/ic_repeat_24"
|
||||
app:icon="@drawable/ic_repeat_off_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_prev"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -138,7 +138,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/ic_play_24" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_next"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -150,13 +150,13 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_shuffle"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
app:icon="@drawable/ic_shuffle_24"
|
||||
app:icon="@drawable/sel_shuffle_state_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
|
@ -97,21 +97,21 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_repeat"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/spacing_large"
|
||||
android:contentDescription="@string/desc_change_repeat"
|
||||
app:icon="@drawable/ic_repeat_24"
|
||||
app:icon="@drawable/ic_repeat_off_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
|
||||
app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_prev"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -136,7 +136,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/ic_pause_24" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_next"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -148,14 +148,14 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_shuffle"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/spacing_large"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
app:icon="@drawable/ic_shuffle_24"
|
||||
app:icon="@drawable/sel_shuffle_state_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
|
||||
app:layout_constraintStart_toEndOf="@+id/playback_skip_next"
|
||||
|
|
|
@ -86,21 +86,21 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_repeat"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/spacing_large"
|
||||
android:contentDescription="@string/desc_change_repeat"
|
||||
app:icon="@drawable/ic_repeat_24"
|
||||
app:icon="@drawable/ic_repeat_off_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
|
||||
app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_prev"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -125,7 +125,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/ic_pause_24" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_next"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -137,14 +137,14 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_shuffle"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/spacing_large"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
app:icon="@drawable/ic_shuffle_24"
|
||||
app:icon="@drawable/sel_shuffle_state_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
|
||||
app:layout_constraintStart_toEndOf="@+id/playback_skip_next"
|
||||
|
|
|
@ -102,19 +102,19 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_repeat"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_change_repeat"
|
||||
app:icon="@drawable/ic_repeat_24"
|
||||
app:icon="@drawable/ic_repeat_off_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_prev"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -139,7 +139,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/ic_play_24" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_next"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -151,13 +151,13 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_shuffle"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
app:icon="@drawable/ic_shuffle_24"
|
||||
app:icon="@drawable/sel_shuffle_state_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/spacing_medium"
|
||||
android:contentDescription="@string/desc_shuffle_all"
|
||||
android:src="@drawable/ic_shuffle_24" />
|
||||
android:src="@drawable/ic_shuffle_off_24" />
|
||||
|
||||
</org.oxycblt.auxio.home.EdgeFabContainer>
|
||||
|
||||
|
|
|
@ -84,19 +84,19 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_repeat"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_change_repeat"
|
||||
app:icon="@drawable/ic_repeat_24"
|
||||
app:icon="@drawable/ic_repeat_off_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_prev"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -121,7 +121,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/ic_play_24" />
|
||||
|
||||
<Button
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_skip_next"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -133,13 +133,13 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||
|
||||
<org.oxycblt.auxio.playback.IndicatorMaterialButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/playback_shuffle"
|
||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
app:icon="@drawable/ic_shuffle_24"
|
||||
app:icon="@drawable/sel_shuffle_state_24"
|
||||
app:iconTint="@color/sel_accented"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
android:layout_width="@dimen/size_btn"
|
||||
android:layout_height="@dimen/size_btn"
|
||||
android:contentDescription="@string/desc_change_repeat"
|
||||
android:src="@drawable/ic_remote_repeat_off_24" />
|
||||
android:src="@drawable/ic_repeat_off_24" />
|
||||
|
||||
<android.widget.ImageView
|
||||
android:layout_width="0dp"
|
||||
|
@ -139,7 +139,7 @@
|
|||
android:layout_width="@dimen/size_btn"
|
||||
android:layout_height="@dimen/size_btn"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
android:src="@drawable/ic_remote_shuffle_off_24" />
|
||||
android:src="@drawable/ic_shuffle_off_24" />
|
||||
|
||||
</android.widget.LinearLayout>
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
android:layout_width="@dimen/size_btn"
|
||||
android:layout_height="@dimen/size_btn"
|
||||
android:contentDescription="@string/desc_change_repeat"
|
||||
android:src="@drawable/ic_remote_repeat_off_24" />
|
||||
android:src="@drawable/ic_repeat_off_24" />
|
||||
|
||||
<android.widget.ImageView
|
||||
android:layout_width="0dp"
|
||||
|
@ -112,7 +112,7 @@
|
|||
android:layout_width="@dimen/size_btn"
|
||||
android:layout_height="@dimen/size_btn"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
android:src="@drawable/ic_remote_shuffle_off_24" />
|
||||
android:src="@drawable/ic_shuffle_off_24" />
|
||||
</android.widget.LinearLayout>
|
||||
</android.widget.RelativeLayout>
|
||||
|
||||
|
|
Loading…
Reference in a new issue