ui: rework rounded covers into round mode
Rework the rounded covers option into a new "Round Mode" option. This commit extends the rounded corners configuration to now the widget, thus making the setting apply now to covers, the bar, and the widget configuration. This makes a naming change useful.
This commit is contained in:
parent
e41645ee28
commit
217ced8ade
31 changed files with 151 additions and 91 deletions
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#### What's New
|
#### What's New
|
||||||
- Added a shuffle shortcut
|
- Added a shuffle shortcut
|
||||||
|
- Reworked the button appearance on widgets
|
||||||
- You can now customize what occurs when a song is played from an album/artist/genre [#164]
|
- You can now customize what occurs when a song is played from an album/artist/genre [#164]
|
||||||
|
|
||||||
#### What's Improved
|
#### What's Improved
|
||||||
|
|
|
@ -61,7 +61,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr
|
||||||
set(value) {
|
set(value) {
|
||||||
field = value
|
field = value
|
||||||
(background as? MaterialShapeDrawable)?.let { bg ->
|
(background as? MaterialShapeDrawable)?.let { bg ->
|
||||||
if (settings.roundCovers) {
|
if (settings.roundMode) {
|
||||||
bg.setCornerSize(value)
|
bg.setCornerSize(value)
|
||||||
} else {
|
} else {
|
||||||
bg.setCornerSize(0f)
|
bg.setCornerSize(0f)
|
||||||
|
|
|
@ -160,7 +160,7 @@ private class IndexerNotification(private val context: Context) :
|
||||||
notificationManager.createNotificationChannel(channel)
|
notificationManager.createNotificationChannel(channel)
|
||||||
}
|
}
|
||||||
|
|
||||||
setSmallIcon(R.drawable.ic_indexer_32)
|
setSmallIcon(R.drawable.ic_indexer_24)
|
||||||
setCategory(NotificationCompat.CATEGORY_PROGRESS)
|
setCategory(NotificationCompat.CATEGORY_PROGRESS)
|
||||||
setShowWhen(false)
|
setShowWhen(false)
|
||||||
setSilent(true)
|
setSilent(true)
|
||||||
|
|
|
@ -27,6 +27,7 @@ import android.support.v4.media.session.MediaSessionCompat
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.media.app.NotificationCompat.MediaStyle
|
import androidx.media.app.NotificationCompat.MediaStyle
|
||||||
|
import okhttp3.internal.notify
|
||||||
import org.oxycblt.auxio.BuildConfig
|
import org.oxycblt.auxio.BuildConfig
|
||||||
import org.oxycblt.auxio.IntegerTable
|
import org.oxycblt.auxio.IntegerTable
|
||||||
import org.oxycblt.auxio.R
|
import org.oxycblt.auxio.R
|
||||||
|
@ -35,6 +36,7 @@ import org.oxycblt.auxio.music.MusicParent
|
||||||
import org.oxycblt.auxio.music.Song
|
import org.oxycblt.auxio.music.Song
|
||||||
import org.oxycblt.auxio.playback.state.RepeatMode
|
import org.oxycblt.auxio.playback.state.RepeatMode
|
||||||
import org.oxycblt.auxio.util.getSystemServiceSafe
|
import org.oxycblt.auxio.util.getSystemServiceSafe
|
||||||
|
import org.oxycblt.auxio.util.logD
|
||||||
import org.oxycblt.auxio.util.newBroadcastPendingIntent
|
import org.oxycblt.auxio.util.newBroadcastPendingIntent
|
||||||
import org.oxycblt.auxio.util.newMainPendingIntent
|
import org.oxycblt.auxio.util.newMainPendingIntent
|
||||||
|
|
||||||
|
@ -94,24 +96,26 @@ class NotificationComponent(
|
||||||
|
|
||||||
/** Set the metadata of the notification using [song]. */
|
/** Set the metadata of the notification using [song]. */
|
||||||
fun updateMetadata(song: Song, parent: MusicParent?) {
|
fun updateMetadata(song: Song, parent: MusicParent?) {
|
||||||
setContentTitle(song.resolveName(context))
|
|
||||||
setContentText(song.resolveIndividualArtistName(context))
|
|
||||||
|
|
||||||
// Starting in API 24, the subtext field changed semantics from being below the content
|
|
||||||
// text to being above the title.
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
||||||
setSubText(parent?.resolveName(context) ?: context.getString(R.string.lbl_all_songs))
|
|
||||||
} else {
|
|
||||||
setSubText(song.album.resolveName(context))
|
|
||||||
}
|
|
||||||
|
|
||||||
provider.load(
|
provider.load(
|
||||||
song,
|
song,
|
||||||
object : BitmapProvider.Target {
|
object : BitmapProvider.Target {
|
||||||
override fun onCompleted(bitmap: Bitmap?) {
|
override fun onCompleted(bitmap: Bitmap?) {
|
||||||
|
logD("writing ${song.rawName} to notif")
|
||||||
setLargeIcon(bitmap)
|
setLargeIcon(bitmap)
|
||||||
build()
|
setContentTitle(song.resolveName(context))
|
||||||
callback.onNotificationChanged(this@NotificationComponent)
|
setContentText(song.resolveIndividualArtistName(context))
|
||||||
|
|
||||||
|
// Starting in API 24, the subtext field changed semantics from being below the
|
||||||
|
// content text to being above the title.
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
setSubText(
|
||||||
|
parent?.resolveName(context)
|
||||||
|
?: context.getString(R.string.lbl_all_songs))
|
||||||
|
} else {
|
||||||
|
setSubText(song.album.resolveName(context))
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.onNotificationChanged(song, this@NotificationComponent)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -120,7 +124,7 @@ class NotificationComponent(
|
||||||
fun updatePlaying(isPlaying: Boolean) {
|
fun updatePlaying(isPlaying: Boolean) {
|
||||||
mActions[2] = buildPlayPauseAction(context, isPlaying)
|
mActions[2] = buildPlayPauseAction(context, isPlaying)
|
||||||
if (!provider.isBusy) {
|
if (!provider.isBusy) {
|
||||||
callback.onNotificationChanged(this)
|
callback.onNotificationChanged(null, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +132,7 @@ class NotificationComponent(
|
||||||
fun updateRepeatMode(repeatMode: RepeatMode) {
|
fun updateRepeatMode(repeatMode: RepeatMode) {
|
||||||
mActions[0] = buildRepeatAction(context, repeatMode)
|
mActions[0] = buildRepeatAction(context, repeatMode)
|
||||||
if (!provider.isBusy) {
|
if (!provider.isBusy) {
|
||||||
callback.onNotificationChanged(this)
|
callback.onNotificationChanged(null, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +140,7 @@ class NotificationComponent(
|
||||||
fun updateShuffled(isShuffled: Boolean) {
|
fun updateShuffled(isShuffled: Boolean) {
|
||||||
mActions[0] = buildShuffleAction(context, isShuffled)
|
mActions[0] = buildShuffleAction(context, isShuffled)
|
||||||
if (!provider.isBusy) {
|
if (!provider.isBusy) {
|
||||||
callback.onNotificationChanged(this)
|
callback.onNotificationChanged(null, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,7 +192,7 @@ class NotificationComponent(
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Callback {
|
interface Callback {
|
||||||
fun onNotificationChanged(component: NotificationComponent)
|
fun onNotificationChanged(song: Song?, component: NotificationComponent)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -24,6 +24,7 @@ import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.ServiceCompat
|
import androidx.core.app.ServiceCompat
|
||||||
import com.google.android.exoplayer2.C
|
import com.google.android.exoplayer2.C
|
||||||
import com.google.android.exoplayer2.ExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
|
@ -310,9 +311,10 @@ class PlaybackService :
|
||||||
|
|
||||||
// --- NOTIFICATION CALLBACKS ---
|
// --- NOTIFICATION CALLBACKS ---
|
||||||
|
|
||||||
override fun onNotificationChanged(component: NotificationComponent) {
|
override fun onNotificationChanged(song: Song?, component: NotificationComponent) {
|
||||||
if (hasPlayed && playbackManager.song != null) {
|
if (hasPlayed && playbackManager.song != null) {
|
||||||
logD("Starting foreground/notifying")
|
logD("Starting foreground/notifying: ${song?.rawName}")
|
||||||
|
logD(NotificationCompat.getContentTitle(component.build()))
|
||||||
|
|
||||||
if (!isForeground) {
|
if (!isForeground) {
|
||||||
startForeground(IntegerTable.PLAYBACK_NOTIFICATION_CODE, component.build())
|
startForeground(IntegerTable.PLAYBACK_NOTIFICATION_CODE, component.build())
|
||||||
|
|
|
@ -123,9 +123,9 @@ class Settings(private val context: Context, private val callback: Callback? = n
|
||||||
val useQualityCovers: Boolean
|
val useQualityCovers: Boolean
|
||||||
get() = inner.getBoolean(context.getString(R.string.set_key_quality_covers), false)
|
get() = inner.getBoolean(context.getString(R.string.set_key_quality_covers), false)
|
||||||
|
|
||||||
/** Whether to round album covers */
|
/** Whether to round additional UI elements (including album covers) */
|
||||||
val roundCovers: Boolean
|
val roundMode: Boolean
|
||||||
get() = inner.getBoolean(context.getString(R.string.set_key_round_covers), false)
|
get() = inner.getBoolean(context.getString(R.string.set_key_round_mode), false)
|
||||||
|
|
||||||
/** Whether to resume playback when a headset is connected (may not work well in all cases) */
|
/** Whether to resume playback when a headset is connected (may not work well in all cases) */
|
||||||
val headsetAutoplay: Boolean
|
val headsetAutoplay: Boolean
|
||||||
|
|
|
@ -102,7 +102,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
|
||||||
|
|
||||||
private val elevationNormal = context.getDimenSafe(R.dimen.elevation_normal)
|
private val elevationNormal = context.getDimenSafe(R.dimen.elevation_normal)
|
||||||
private val cornersLarge =
|
private val cornersLarge =
|
||||||
if (Settings(context).roundCovers) {
|
if (Settings(context).roundMode) {
|
||||||
// Since album covers are rounded, we can also round the bar too.
|
// Since album covers are rounded, we can also round the bar too.
|
||||||
context.getDimenSizeSafe(R.dimen.size_corners_large)
|
context.getDimenSizeSafe(R.dimen.size_corners_large)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -18,12 +18,14 @@
|
||||||
package org.oxycblt.auxio.widgets
|
package org.oxycblt.auxio.widgets
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.RemoteViews
|
import android.widget.RemoteViews
|
||||||
import androidx.annotation.LayoutRes
|
import androidx.annotation.LayoutRes
|
||||||
import org.oxycblt.auxio.R
|
import org.oxycblt.auxio.R
|
||||||
import org.oxycblt.auxio.playback.state.RepeatMode
|
import org.oxycblt.auxio.playback.state.RepeatMode
|
||||||
import org.oxycblt.auxio.playback.system.PlaybackService
|
import org.oxycblt.auxio.playback.system.PlaybackService
|
||||||
|
import org.oxycblt.auxio.settings.Settings
|
||||||
import org.oxycblt.auxio.util.newBroadcastPendingIntent
|
import org.oxycblt.auxio.util.newBroadcastPendingIntent
|
||||||
import org.oxycblt.auxio.util.newMainPendingIntent
|
import org.oxycblt.auxio.util.newMainPendingIntent
|
||||||
|
|
||||||
|
@ -39,6 +41,7 @@ fun createDefaultWidget(context: Context) = createViews(context, R.layout.widget
|
||||||
*/
|
*/
|
||||||
fun createThinWidget(context: Context, state: WidgetComponent.WidgetState) =
|
fun createThinWidget(context: Context, state: WidgetComponent.WidgetState) =
|
||||||
createViews(context, R.layout.widget_thin)
|
createViews(context, R.layout.widget_thin)
|
||||||
|
.applyRoundingToBackground(context)
|
||||||
.applyMeta(context, state)
|
.applyMeta(context, state)
|
||||||
.applyBasicControls(context, state)
|
.applyBasicControls(context, state)
|
||||||
/**
|
/**
|
||||||
|
@ -48,6 +51,7 @@ fun createThinWidget(context: Context, state: WidgetComponent.WidgetState) =
|
||||||
*/
|
*/
|
||||||
fun createSmallWidget(context: Context, state: WidgetComponent.WidgetState) =
|
fun createSmallWidget(context: Context, state: WidgetComponent.WidgetState) =
|
||||||
createViews(context, R.layout.widget_small)
|
createViews(context, R.layout.widget_small)
|
||||||
|
.applyRoundingToBar(context)
|
||||||
.applyCover(context, state)
|
.applyCover(context, state)
|
||||||
.applyBasicControls(context, state)
|
.applyBasicControls(context, state)
|
||||||
|
|
||||||
|
@ -57,18 +61,21 @@ fun createSmallWidget(context: Context, state: WidgetComponent.WidgetState) =
|
||||||
*/
|
*/
|
||||||
fun createMediumWidget(context: Context, state: WidgetComponent.WidgetState) =
|
fun createMediumWidget(context: Context, state: WidgetComponent.WidgetState) =
|
||||||
createViews(context, R.layout.widget_medium)
|
createViews(context, R.layout.widget_medium)
|
||||||
|
.applyRoundingToBackground(context)
|
||||||
.applyMeta(context, state)
|
.applyMeta(context, state)
|
||||||
.applyBasicControls(context, state)
|
.applyBasicControls(context, state)
|
||||||
|
|
||||||
/** The wide widget is for Nx2 widgets and is like the small widget but with more controls. */
|
/** The wide widget is for Nx2 widgets and is like the small widget but with more controls. */
|
||||||
fun createWideWidget(context: Context, state: WidgetComponent.WidgetState) =
|
fun createWideWidget(context: Context, state: WidgetComponent.WidgetState) =
|
||||||
createViews(context, R.layout.widget_wide)
|
createViews(context, R.layout.widget_wide)
|
||||||
|
.applyRoundingToBar(context)
|
||||||
.applyCover(context, state)
|
.applyCover(context, state)
|
||||||
.applyFullControls(context, state)
|
.applyFullControls(context, state)
|
||||||
|
|
||||||
/** The large widget is for 3x4 widgets and shows all metadata and controls. */
|
/** The large widget is for 3x4 widgets and shows all metadata and controls. */
|
||||||
fun createLargeWidget(context: Context, state: WidgetComponent.WidgetState): RemoteViews =
|
fun createLargeWidget(context: Context, state: WidgetComponent.WidgetState): RemoteViews =
|
||||||
createViews(context, R.layout.widget_large)
|
createViews(context, R.layout.widget_large)
|
||||||
|
.applyRoundingToBackground(context)
|
||||||
.applyMeta(context, state)
|
.applyMeta(context, state)
|
||||||
.applyFullControls(context, state)
|
.applyFullControls(context, state)
|
||||||
|
|
||||||
|
@ -78,6 +85,26 @@ private fun createViews(context: Context, @LayoutRes layout: Int): RemoteViews {
|
||||||
return views
|
return views
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun RemoteViews.applyRoundingToBackground(context: Context): RemoteViews {
|
||||||
|
if (Settings(context).roundMode && Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
|
||||||
|
setInt(android.R.id.background, "setBackgroundResource", R.drawable.ui_widget_bg_round)
|
||||||
|
} else {
|
||||||
|
setInt(android.R.id.background, "setBackgroundResource", R.drawable.ui_widget_bg)
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun RemoteViews.applyRoundingToBar(context: Context): RemoteViews {
|
||||||
|
if (Settings(context).roundMode && Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
|
||||||
|
setInt(R.id.widget_controls, "setBackgroundResource", R.drawable.ui_widget_bg_round)
|
||||||
|
} else {
|
||||||
|
setInt(R.id.widget_controls, "setBackgroundResource", R.drawable.ui_widget_bar)
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
private fun RemoteViews.applyMeta(
|
private fun RemoteViews.applyMeta(
|
||||||
context: Context,
|
context: Context,
|
||||||
state: WidgetComponent.WidgetState
|
state: WidgetComponent.WidgetState
|
||||||
|
|
|
@ -84,14 +84,23 @@ class WidgetComponent(private val context: Context) :
|
||||||
song,
|
song,
|
||||||
object : BitmapProvider.Target {
|
object : BitmapProvider.Target {
|
||||||
override fun onConfigRequest(builder: ImageRequest.Builder): ImageRequest.Builder {
|
override fun onConfigRequest(builder: ImageRequest.Builder): ImageRequest.Builder {
|
||||||
|
val cornerRadius =
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
context.getDimenSizeSafe(android.R.dimen.system_app_widget_inner_radius)
|
||||||
|
} else if (settings.roundMode) {
|
||||||
|
context.getDimenSizeSafe(R.dimen.size_corners_large)
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
// The widget has two distinct styles that we must transform the album art to
|
// The widget has two distinct styles that we must transform the album art to
|
||||||
// accommodate:
|
// accommodate:
|
||||||
// - Before Android 12, the widget has hard edges, so we don't need to round
|
// - Before Android 12, the widget has hard edges, so we don't need to round
|
||||||
// out the album art.
|
// out the album art.
|
||||||
// - After Android 12, the widget has round edges, so we need to round out
|
// - After Android 12, the widget has round edges, so we need to round out
|
||||||
// the album art. I dislike this, but it's mainly for stylistic cohesion.
|
// the album art. I dislike this, but it's mainly for stylistic cohesion.
|
||||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
return if (cornerRadius > 0) {
|
||||||
this@WidgetComponent.logD("Doing API 31 cover load")
|
this@WidgetComponent.logD("Loading round covers: $cornerRadius")
|
||||||
|
|
||||||
val metrics = context.resources.displayMetrics
|
val metrics = context.resources.displayMetrics
|
||||||
|
|
||||||
|
@ -101,11 +110,7 @@ class WidgetComponent(private val context: Context) :
|
||||||
builder
|
builder
|
||||||
.transformations(
|
.transformations(
|
||||||
SquareFrameTransform.INSTANCE,
|
SquareFrameTransform.INSTANCE,
|
||||||
RoundedCornersTransformation(
|
RoundedCornersTransformation(cornerRadius.toFloat()))
|
||||||
context
|
|
||||||
.getDimenSizeSafe(
|
|
||||||
android.R.dimen.system_app_widget_inner_radius)
|
|
||||||
.toFloat()))
|
|
||||||
// The output of RoundedCornersTransformation is dimension-dependent,
|
// The output of RoundedCornersTransformation is dimension-dependent,
|
||||||
// so scale up the image to the screen size to ensure consistent radii.
|
// so scale up the image to the screen size to ensure consistent radii.
|
||||||
// Make sure we stop at 1024, so we don't accidentally make a massive
|
// Make sure we stop at 1024, so we don't accidentally make a massive
|
||||||
|
@ -145,7 +150,8 @@ class WidgetComponent(private val context: Context) :
|
||||||
override fun onRepeatChanged(repeatMode: RepeatMode) = update()
|
override fun onRepeatChanged(repeatMode: RepeatMode) = update()
|
||||||
override fun onSettingChanged(key: String) {
|
override fun onSettingChanged(key: String) {
|
||||||
if (key == context.getString(R.string.set_key_show_covers) ||
|
if (key == context.getString(R.string.set_key_show_covers) ||
|
||||||
key == context.getString(R.string.set_key_quality_covers)) {
|
key == context.getString(R.string.set_key_quality_covers) ||
|
||||||
|
key == context.getString(R.string.set_key_round_mode)) {
|
||||||
update()
|
update()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 283 KiB |
5
app/src/main/res/drawable/ui_widget_bg.xml
Normal file
5
app/src/main/res/drawable/ui_widget_bg.xml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
<solid android:color="@android:color/white" />
|
||||||
|
</shape>
|
6
app/src/main/res/drawable/ui_widget_bg_round.xml
Normal file
6
app/src/main/res/drawable/ui_widget_bg_round.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
<solid android:color="@android:color/white" />
|
||||||
|
<corners android:radius="@dimen/spacing_medium" />
|
||||||
|
</shape>
|
|
@ -4,7 +4,8 @@
|
||||||
android:id="@android:id/background"
|
android:id="@android:id/background"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?attr/colorSurface"
|
android:backgroundTint="?attr/colorSurface"
|
||||||
|
android:background="@drawable/ui_widget_bg"
|
||||||
android:theme="@style/Theme.Widget">
|
android:theme="@style/Theme.Widget">
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
@ -72,11 +73,11 @@
|
||||||
android:id="@+id/widget_controls"
|
android:id="@+id/widget_controls"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
android:paddingStart="@dimen/spacing_mid_small"
|
android:paddingStart="@dimen/spacing_mid_small"
|
||||||
|
android:paddingTop="@dimen/spacing_medium"
|
||||||
android:paddingEnd="@dimen/spacing_mid_small"
|
android:paddingEnd="@dimen/spacing_mid_small"
|
||||||
android:paddingTop="@dimen/spacing_mid_small"
|
android:paddingBottom="@dimen/spacing_medium">
|
||||||
android:paddingBottom="@dimen/spacing_medium"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<android.widget.ImageButton
|
<android.widget.ImageButton
|
||||||
android:id="@+id/widget_repeat"
|
android:id="@+id/widget_repeat"
|
||||||
|
@ -104,13 +105,15 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
|
|
||||||
<android.widget.ImageButton
|
<android.widget.ImageButton
|
||||||
android:id="@+id/widget_play_pause"
|
android:id="@+id/widget_play_pause"
|
||||||
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
||||||
android:layout_width="@dimen/size_btn"
|
android:layout_width="@dimen/size_btn"
|
||||||
android:layout_height="@dimen/size_btn"
|
android:layout_height="@dimen/size_btn"
|
||||||
android:contentDescription="@string/desc_play_pause"
|
android:contentDescription="@string/desc_play_pause"
|
||||||
android:src="@drawable/sel_playing_state_24" />
|
android:src="@drawable/ic_pause_24" />
|
||||||
|
|
||||||
|
|
||||||
<android.widget.ImageView
|
<android.widget.ImageView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
android:id="@android:id/background"
|
android:id="@android:id/background"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?attr/colorSurface"
|
android:backgroundTint="?attr/colorSurface"
|
||||||
|
android:background="@drawable/ui_widget_bg"
|
||||||
android:theme="@style/Theme.Widget">
|
android:theme="@style/Theme.Widget">
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
@ -70,11 +71,11 @@
|
||||||
android:id="@+id/widget_controls"
|
android:id="@+id/widget_controls"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
android:paddingStart="@dimen/spacing_mid_small"
|
android:paddingStart="@dimen/spacing_mid_small"
|
||||||
|
android:paddingTop="@dimen/spacing_medium"
|
||||||
android:paddingEnd="@dimen/spacing_mid_small"
|
android:paddingEnd="@dimen/spacing_mid_small"
|
||||||
android:paddingTop="@dimen/spacing_mid_small"
|
android:paddingBottom="@dimen/spacing_medium">
|
||||||
android:paddingBottom="@dimen/spacing_medium"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<android.widget.ImageButton
|
<android.widget.ImageButton
|
||||||
android:id="@+id/widget_skip_prev"
|
android:id="@+id/widget_skip_prev"
|
||||||
|
@ -89,13 +90,15 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
|
|
||||||
<android.widget.ImageButton
|
<android.widget.ImageButton
|
||||||
android:id="@+id/widget_play_pause"
|
android:id="@+id/widget_play_pause"
|
||||||
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
||||||
android:layout_width="@dimen/size_btn"
|
android:layout_width="@dimen/size_btn"
|
||||||
android:layout_height="@dimen/size_btn"
|
android:layout_height="@dimen/size_btn"
|
||||||
android:contentDescription="@string/desc_play_pause"
|
android:contentDescription="@string/desc_play_pause"
|
||||||
android:src="@drawable/sel_playing_state_24" />
|
android:src="@drawable/ic_pause_24" />
|
||||||
|
|
||||||
|
|
||||||
<android.widget.ImageView
|
<android.widget.ImageView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:background="@drawable/ui_widget_panel"
|
android:background="@drawable/ui_widget_bar"
|
||||||
android:backgroundTint="?attr/colorSurface"
|
android:backgroundTint="?attr/colorSurface"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:padding="@dimen/spacing_mid_small">
|
android:padding="@dimen/spacing_mid_small">
|
||||||
|
@ -79,14 +79,13 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
<android.widget.ImageButton
|
<android.widget.ImageButton
|
||||||
android:id="@+id/widget_play_pause"
|
android:id="@+id/widget_play_pause"
|
||||||
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
||||||
android:layout_width="@dimen/size_btn"
|
android:layout_width="@dimen/size_btn"
|
||||||
android:layout_height="@dimen/size_btn"
|
android:layout_height="@dimen/size_btn"
|
||||||
android:contentDescription="@string/desc_play_pause"
|
android:contentDescription="@string/desc_play_pause"
|
||||||
android:src="@drawable/sel_playing_state_24" />
|
android:src="@drawable/ic_pause_24" />
|
||||||
|
|
||||||
|
|
||||||
<android.widget.ImageView
|
<android.widget.ImageView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
android:id="@android:id/background"
|
android:id="@android:id/background"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?attr/colorSurface"
|
android:backgroundTint="?attr/colorSurface"
|
||||||
|
android:background="@drawable/ui_widget_bg"
|
||||||
android:baselineAligned="false"
|
android:baselineAligned="false"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:theme="@style/Theme.Widget">
|
android:theme="@style/Theme.Widget">
|
||||||
|
@ -89,13 +90,15 @@
|
||||||
|
|
||||||
</android.widget.LinearLayout>
|
</android.widget.LinearLayout>
|
||||||
|
|
||||||
<android.widget.ImageButton
|
|
||||||
android:id="@+id/widget_play_pause"
|
<android.widget.ImageButton
|
||||||
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
android:id="@+id/widget_play_pause"
|
||||||
android:layout_width="@dimen/size_btn"
|
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
||||||
android:layout_height="@dimen/size_btn"
|
android:layout_width="@dimen/size_btn"
|
||||||
android:contentDescription="@string/desc_play_pause"
|
android:layout_height="@dimen/size_btn"
|
||||||
android:src="@drawable/sel_playing_state_24" />
|
android:contentDescription="@string/desc_play_pause"
|
||||||
|
android:src="@drawable/ic_pause_24" />
|
||||||
|
|
||||||
|
|
||||||
</android.widget.LinearLayout>
|
</android.widget.LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
android:src="@drawable/ic_remote_default_cover_24"
|
android:src="@drawable/ic_remote_default_cover_24"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<!-- See widget_small.xml for an explanation of the view layout -->
|
<!-- See widget_small.xml for an explanation of the view layout -->
|
||||||
|
|
||||||
<android.widget.LinearLayout
|
<android.widget.LinearLayout
|
||||||
android:id="@+id/widget_controls"
|
android:id="@+id/widget_controls"
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:background="@drawable/ui_widget_panel"
|
android:background="@drawable/ui_widget_bar"
|
||||||
android:backgroundTint="?attr/colorSurface"
|
android:backgroundTint="?attr/colorSurface"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:padding="@dimen/spacing_mid_small">
|
android:padding="@dimen/spacing_mid_small">
|
||||||
|
@ -79,13 +79,14 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
<android.widget.ImageButton
|
<android.widget.ImageButton
|
||||||
android:id="@+id/widget_play_pause"
|
android:id="@+id/widget_play_pause"
|
||||||
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
style="@style/Widget.Auxio.FloatingActionButton.AppWidget"
|
||||||
android:layout_width="@dimen/size_btn"
|
android:layout_width="@dimen/size_btn"
|
||||||
android:layout_height="@dimen/size_btn"
|
android:layout_height="@dimen/size_btn"
|
||||||
android:contentDescription="@string/desc_play_pause"
|
android:contentDescription="@string/desc_play_pause"
|
||||||
android:src="@drawable/sel_playing_state_24" />
|
android:src="@drawable/ic_pause_24" />
|
||||||
|
|
||||||
|
|
||||||
<android.widget.ImageView
|
<android.widget.ImageView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -74,8 +74,8 @@
|
||||||
<string name="set_show_covers_desc">أطفاء لتقليل استخدام الذاكرة</string>
|
<string name="set_show_covers_desc">أطفاء لتقليل استخدام الذاكرة</string>
|
||||||
<string name="set_quality_covers">تجاهل اغلفة وسائط التخزين</string>
|
<string name="set_quality_covers">تجاهل اغلفة وسائط التخزين</string>
|
||||||
<string name="set_quality_covers_desc">يزيد من جودة غلاف الالبوم، لكن يؤذي إلى زيادة وقت التحميل واستخدام اعلى للذاكرة</string>
|
<string name="set_quality_covers_desc">يزيد من جودة غلاف الالبوم، لكن يؤذي إلى زيادة وقت التحميل واستخدام اعلى للذاكرة</string>
|
||||||
<string name="set_round_covers">اغلفة البوم مدورة</string>
|
<string name="set_round_mode">اغلفة البوم مدورة</string>
|
||||||
<string name="set_round_covers_desc">جعل اغلفة الابومات ذات زوايا مدورة</string>
|
<string name="set_round_mode_desc">جعل اغلفة الابومات ذات زوايا مدورة</string>
|
||||||
<string name="set_alt_action">استخدام نشاط بديل للإشعار</string>
|
<string name="set_alt_action">استخدام نشاط بديل للإشعار</string>
|
||||||
<string name="set_alt_repeat">تفضيل نشاط وضع التكرار</string>
|
<string name="set_alt_repeat">تفضيل نشاط وضع التكرار</string>
|
||||||
<string name="set_alt_shuffle">تفضيل نشاط الخلط</string>
|
<string name="set_alt_shuffle">تفضيل نشاط الخلط</string>
|
||||||
|
|
|
@ -84,8 +84,8 @@
|
||||||
<string name="set_show_covers_desc">Vypněte pro ušetření paměti</string>
|
<string name="set_show_covers_desc">Vypněte pro ušetření paměti</string>
|
||||||
<string name="set_quality_covers">Ignorovat obaly MediaStore</string>
|
<string name="set_quality_covers">Ignorovat obaly MediaStore</string>
|
||||||
<string name="set_quality_covers_desc">Zvýší kvalitu obalů alb, ale znamená také delší časy načítání a vyšší využití paměti</string>
|
<string name="set_quality_covers_desc">Zvýší kvalitu obalů alb, ale znamená také delší časy načítání a vyšší využití paměti</string>
|
||||||
<string name="set_round_covers">Zakulacené obaly alb</string>
|
<string name="set_round_mode">Zakulacené obaly alb</string>
|
||||||
<string name="set_round_covers_desc">Použít obaly alb se zakulacenými rohy</string>
|
<string name="set_round_mode_desc">Použít obaly alb se zakulacenými rohy</string>
|
||||||
<string name="set_alt_action">Použít alternativní akci oznámení</string>
|
<string name="set_alt_action">Použít alternativní akci oznámení</string>
|
||||||
<string name="set_alt_repeat">Preferovat akci režimu opakování</string>
|
<string name="set_alt_repeat">Preferovat akci režimu opakování</string>
|
||||||
<string name="set_alt_shuffle">Preferovat akci náhodného přehrávání</string>
|
<string name="set_alt_shuffle">Preferovat akci náhodného přehrávání</string>
|
||||||
|
|
|
@ -66,8 +66,8 @@
|
||||||
<string name="set_show_covers_desc">Ausschalten um Speicherplatz zu sparen</string>
|
<string name="set_show_covers_desc">Ausschalten um Speicherplatz zu sparen</string>
|
||||||
<string name="set_quality_covers">MediaStore Cover ignorieren</string>
|
<string name="set_quality_covers">MediaStore Cover ignorieren</string>
|
||||||
<string name="set_quality_covers_desc">Verbesst die Albumcoverqualität, führt jedoch zu längeren Ladezeiten und höherem Speicherverbrauch</string>
|
<string name="set_quality_covers_desc">Verbesst die Albumcoverqualität, führt jedoch zu längeren Ladezeiten und höherem Speicherverbrauch</string>
|
||||||
<string name="set_round_covers">Abgerundete Cover</string>
|
<string name="set_round_mode">Abgerundete Cover</string>
|
||||||
<string name="set_round_covers_desc">Rundet Ecken der Cover ab</string>
|
<string name="set_round_mode_desc">Rundet Ecken der Cover ab</string>
|
||||||
<string name="set_alt_action">Alternative Aktionstaste verwenden</string>
|
<string name="set_alt_action">Alternative Aktionstaste verwenden</string>
|
||||||
<string name="set_alt_repeat">Wiederholen-Aktionstaste bevorzugen</string>
|
<string name="set_alt_repeat">Wiederholen-Aktionstaste bevorzugen</string>
|
||||||
<string name="set_alt_shuffle">Zufällig-Aktionstaste bevorzugen</string>
|
<string name="set_alt_shuffle">Zufällig-Aktionstaste bevorzugen</string>
|
||||||
|
|
|
@ -74,8 +74,8 @@
|
||||||
<string name="set_show_covers_desc">Desactive para ahorrar memoria</string>
|
<string name="set_show_covers_desc">Desactive para ahorrar memoria</string>
|
||||||
<string name="set_quality_covers">Ignorar carátulas de MediaStore</string>
|
<string name="set_quality_covers">Ignorar carátulas de MediaStore</string>
|
||||||
<string name="set_quality_covers_desc">Incrementa la calidad de las carátulas, pero deriva en mayores tiempos de carga y uso de memoria</string>
|
<string name="set_quality_covers_desc">Incrementa la calidad de las carátulas, pero deriva en mayores tiempos de carga y uso de memoria</string>
|
||||||
<string name="set_round_covers">Carátulas redondeadas</string>
|
<string name="set_round_mode">Carátulas redondeadas</string>
|
||||||
<string name="set_round_covers_desc">Usar carátulas redondeadas para los álbumes</string>
|
<string name="set_round_mode_desc">Usar carátulas redondeadas para los álbumes</string>
|
||||||
<string name="set_alt_action">Usar acciones de notificación alternativas</string>
|
<string name="set_alt_action">Usar acciones de notificación alternativas</string>
|
||||||
<string name="set_alt_repeat">Preferir acción de bucle</string>
|
<string name="set_alt_repeat">Preferir acción de bucle</string>
|
||||||
<string name="set_alt_shuffle">Preferir acción de mezcla</string>
|
<string name="set_alt_shuffle">Preferir acción de mezcla</string>
|
||||||
|
|
|
@ -74,8 +74,8 @@
|
||||||
<string name="set_show_covers_desc">Disattiva per ridurre il consumo di memoria</string>
|
<string name="set_show_covers_desc">Disattiva per ridurre il consumo di memoria</string>
|
||||||
<string name="set_quality_covers">Ignora copertine MediaStore</string>
|
<string name="set_quality_covers">Ignora copertine MediaStore</string>
|
||||||
<string name="set_quality_covers_desc">Migliora la qualità delle copertine, ma comporta maggiori tempi di caricamento e consumo di memoria</string>
|
<string name="set_quality_covers_desc">Migliora la qualità delle copertine, ma comporta maggiori tempi di caricamento e consumo di memoria</string>
|
||||||
<string name="set_round_covers">Copertine dischi arrotondate</string>
|
<string name="set_round_mode">Copertine dischi arrotondate</string>
|
||||||
<string name="set_round_covers_desc">Usa copertine dischi con angoli arrotondati</string>
|
<string name="set_round_mode_desc">Usa copertine dischi con angoli arrotondati</string>
|
||||||
<string name="set_alt_action">Usa azioni notifica alternative</string>
|
<string name="set_alt_action">Usa azioni notifica alternative</string>
|
||||||
<string name="set_alt_repeat">Preferisci azione modalità ripetizione</string>
|
<string name="set_alt_repeat">Preferisci azione modalità ripetizione</string>
|
||||||
<string name="set_alt_shuffle">Preferisci azione mescola</string>
|
<string name="set_alt_shuffle">Preferisci azione mescola</string>
|
||||||
|
|
|
@ -82,8 +82,8 @@
|
||||||
<string name="set_show_covers_desc">이 옵션을 끄면 메모리 사용량을 줄일 수 있습니다.</string>
|
<string name="set_show_covers_desc">이 옵션을 끄면 메모리 사용량을 줄일 수 있습니다.</string>
|
||||||
<string name="set_quality_covers">MediaStore 커버 무시</string>
|
<string name="set_quality_covers">MediaStore 커버 무시</string>
|
||||||
<string name="set_quality_covers_desc">앨범 커버의 품질을 높일 수 있지만 메모리 사용량이 늘어나고 불러오는 시간이 더 오래 걸립니다.</string>
|
<string name="set_quality_covers_desc">앨범 커버의 품질을 높일 수 있지만 메모리 사용량이 늘어나고 불러오는 시간이 더 오래 걸립니다.</string>
|
||||||
<string name="set_round_covers">둥근 앨범 커버 사용</string>
|
<string name="set_round_mode">둥근 앨범 커버 사용</string>
|
||||||
<string name="set_round_covers_desc">앨범 커버의 가장자리를 둥글게 표시</string>
|
<string name="set_round_mode_desc">앨범 커버의 가장자리를 둥글게 표시</string>
|
||||||
<string name="set_alt_action">다른 방식의 알림 동작 사용</string>
|
<string name="set_alt_action">다른 방식의 알림 동작 사용</string>
|
||||||
<string name="set_alt_repeat">반복 모드 동작 선호</string>
|
<string name="set_alt_repeat">반복 모드 동작 선호</string>
|
||||||
<string name="set_alt_shuffle">무작위 동작 선호</string>
|
<string name="set_alt_shuffle">무작위 동작 선호</string>
|
||||||
|
|
|
@ -74,8 +74,8 @@
|
||||||
<string name="set_show_covers_desc">Отключите для экономии памяти</string>
|
<string name="set_show_covers_desc">Отключите для экономии памяти</string>
|
||||||
<string name="set_quality_covers">Игнорировать хранилище обложек</string>
|
<string name="set_quality_covers">Игнорировать хранилище обложек</string>
|
||||||
<string name="set_quality_covers_desc">Улучшает качество обложек, но увеличивает время загрузки и использование памяти</string>
|
<string name="set_quality_covers_desc">Улучшает качество обложек, но увеличивает время загрузки и использование памяти</string>
|
||||||
<string name="set_round_covers">Скруглённые обложки</string>
|
<string name="set_round_mode">Скруглённые обложки</string>
|
||||||
<string name="set_round_covers_desc">Показывать обложки со скруглёнными краями</string>
|
<string name="set_round_mode_desc">Показывать обложки со скруглёнными краями</string>
|
||||||
<string name="set_alt_action">Кнопка в уведомлении</string>
|
<string name="set_alt_action">Кнопка в уведомлении</string>
|
||||||
<string name="set_alt_repeat">Режим повтора</string>
|
<string name="set_alt_repeat">Режим повтора</string>
|
||||||
<string name="set_alt_shuffle">Режим перемешивания</string>
|
<string name="set_alt_shuffle">Режим перемешивания</string>
|
||||||
|
|
|
@ -73,8 +73,8 @@
|
||||||
<string name="set_show_covers_desc">关闭以节省内存使用</string>
|
<string name="set_show_covers_desc">关闭以节省内存使用</string>
|
||||||
<string name="set_quality_covers">忽略 MediaStore 封面</string>
|
<string name="set_quality_covers">忽略 MediaStore 封面</string>
|
||||||
<string name="set_quality_covers_desc">提升专辑封面质量,但需要更长的加载时间并消耗更多内存</string>
|
<string name="set_quality_covers_desc">提升专辑封面质量,但需要更长的加载时间并消耗更多内存</string>
|
||||||
<string name="set_round_covers">专辑封面圆角</string>
|
<string name="set_round_mode">专辑封面圆角</string>
|
||||||
<string name="set_round_covers_desc">使用圆角设计的专辑封面</string>
|
<string name="set_round_mode_desc">使用圆角设计的专辑封面</string>
|
||||||
<string name="set_alt_action">使用替代通知操作方案</string>
|
<string name="set_alt_action">使用替代通知操作方案</string>
|
||||||
<string name="set_alt_repeat">偏好重复播放操作</string>
|
<string name="set_alt_repeat">偏好重复播放操作</string>
|
||||||
<string name="set_alt_shuffle">偏好随机播放操作</string>
|
<string name="set_alt_shuffle">偏好随机播放操作</string>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<string name="set_key_lib_tabs" translatable="false">auxio_lib_tabs</string>
|
<string name="set_key_lib_tabs" translatable="false">auxio_lib_tabs</string>
|
||||||
<string name="set_key_show_covers" translatable="false">KEY_SHOW_COVERS</string>
|
<string name="set_key_show_covers" translatable="false">KEY_SHOW_COVERS</string>
|
||||||
<string name="set_key_quality_covers" translatable="false">KEY_QUALITY_COVERS</string>
|
<string name="set_key_quality_covers" translatable="false">KEY_QUALITY_COVERS</string>
|
||||||
<string name="set_key_round_covers" translatable="false">auxio_round_covers</string>
|
<string name="set_key_round_mode" translatable="false">auxio_round_covers</string>
|
||||||
<string name="set_key_alt_notif_action" translatable="false">KEY_ALT_NOTIF_ACTION</string>
|
<string name="set_key_alt_notif_action" translatable="false">KEY_ALT_NOTIF_ACTION</string>
|
||||||
|
|
||||||
<string name="set_key_headset_autoplay" translatable="false">auxio_headset_autoplay</string>
|
<string name="set_key_headset_autoplay" translatable="false">auxio_headset_autoplay</string>
|
||||||
|
|
|
@ -94,8 +94,8 @@
|
||||||
<string name="set_show_covers_desc">Turn off to save memory usage</string>
|
<string name="set_show_covers_desc">Turn off to save memory usage</string>
|
||||||
<string name="set_quality_covers">Ignore MediaStore covers</string>
|
<string name="set_quality_covers">Ignore MediaStore covers</string>
|
||||||
<string name="set_quality_covers_desc">Increases album cover quality, but results in longer loading times and higher memory usage</string>
|
<string name="set_quality_covers_desc">Increases album cover quality, but results in longer loading times and higher memory usage</string>
|
||||||
<string name="set_round_covers">Rounded album covers</string>
|
<string name="set_round_mode">Round mode</string>
|
||||||
<string name="set_round_covers_desc">Use album covers with rounded corners</string>
|
<string name="set_round_mode_desc">Enable rounded corners on additional UI elements (Requires album covers to be rounded)</string>
|
||||||
<string name="set_alt_action">Use alternate notification action</string>
|
<string name="set_alt_action">Use alternate notification action</string>
|
||||||
<string name="set_alt_repeat">Prefer repeat mode action</string>
|
<string name="set_alt_repeat">Prefer repeat mode action</string>
|
||||||
<string name="set_alt_shuffle">Prefer shuffle action</string>
|
<string name="set_alt_shuffle">Prefer shuffle action</string>
|
||||||
|
|
|
@ -58,9 +58,9 @@
|
||||||
<org.oxycblt.auxio.settings.ui.M3SwitchPreference
|
<org.oxycblt.auxio.settings.ui.M3SwitchPreference
|
||||||
app:defaultValue="false"
|
app:defaultValue="false"
|
||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
app:key="@string/set_key_round_covers"
|
app:key="@string/set_key_round_mode"
|
||||||
app:summary="@string/set_round_covers_desc"
|
app:summary="@string/set_round_mode_desc"
|
||||||
app:title="@string/set_round_covers" />
|
app:title="@string/set_round_mode" />
|
||||||
|
|
||||||
<org.oxycblt.auxio.settings.ui.M3SwitchPreference
|
<org.oxycblt.auxio.settings.ui.M3SwitchPreference
|
||||||
app:allowDividerBelow="false"
|
app:allowDividerBelow="false"
|
||||||
|
|
Loading…
Reference in a new issue