playback: unify notif and bar actions

Unify notif and bar actions under a new "ActionMode" enum.

This just makes things consistent.
This commit is contained in:
Alexander Capehart 2022-09-26 13:22:16 -06:00
parent 936f0ca167
commit 35e402b6b4
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
25 changed files with 142 additions and 90 deletions

View file

@ -143,12 +143,12 @@ object IntegerTable {
/** ReplayGainMode.Dynamic */ /** ReplayGainMode.Dynamic */
const val REPLAY_GAIN_MODE_DYNAMIC = 0xA113 const val REPLAY_GAIN_MODE_DYNAMIC = 0xA113
/** BarAction.Next */ /** ActionMode.Next */
const val BAR_ACTION_NEXT = 0xA119 const val BAR_ACTION_NEXT = 0xA119
/** BarAction.Repeat */ /** ActionMode.Repeat */
const val BAR_ACTION_REPEAT = 0xA11A const val BAR_ACTION_REPEAT = 0xA11A
/** BarAction.Shuffle */ /** ActionMode.Shuffle */
const val BAR_ACTION_SHUFFLE = 0xA11B const val BAR_ACTION_SHUFFLE = 0xA11B
} }

View file

@ -0,0 +1,45 @@
/*
* 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 org.oxycblt.auxio.IntegerTable
/** Represents the action that should be shown on the playback bar. */
enum class ActionMode {
NEXT,
REPEAT,
SHUFFLE;
val intCode: Int
get() = when (this) {
NEXT -> IntegerTable.BAR_ACTION_NEXT
REPEAT -> IntegerTable.BAR_ACTION_REPEAT
SHUFFLE -> IntegerTable.BAR_ACTION_SHUFFLE
}
companion object {
/** Convert an int [code] into an instance, or null if it isn't valid. */
fun fromIntCode(code: Int) =
when (code) {
IntegerTable.BAR_ACTION_NEXT -> NEXT
IntegerTable.BAR_ACTION_REPEAT -> REPEAT
IntegerTable.BAR_ACTION_SHUFFLE -> SHUFFLE
else -> null
}
}
}

View file

@ -20,7 +20,6 @@ package org.oxycblt.auxio.playback
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
@ -73,8 +72,8 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
// Update the secondary action to match the setting. // Update the secondary action to match the setting.
when (Settings(context).barAction) { when (Settings(context).actionMode) {
BarAction.NEXT -> { ActionMode.NEXT -> {
binding.playbackSecondaryAction.apply { binding.playbackSecondaryAction.apply {
setIconResource(R.drawable.ic_skip_next_24) setIconResource(R.drawable.ic_skip_next_24)
contentDescription = getString(R.string.desc_skip_next) contentDescription = getString(R.string.desc_skip_next)
@ -82,7 +81,7 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
setOnClickListener { playbackModel.next() } setOnClickListener { playbackModel.next() }
} }
} }
BarAction.REPEAT -> { ActionMode.REPEAT -> {
binding.playbackSecondaryAction.apply { binding.playbackSecondaryAction.apply {
contentDescription = getString(R.string.desc_change_repeat) contentDescription = getString(R.string.desc_change_repeat)
iconTint = context.getColorCompat(R.color.sel_accented) iconTint = context.getColorCompat(R.color.sel_accented)
@ -90,7 +89,7 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
collectImmediately(playbackModel.repeatMode, ::updateRepeat) collectImmediately(playbackModel.repeatMode, ::updateRepeat)
} }
} }
BarAction.SHUFFLE -> { ActionMode.SHUFFLE -> {
binding.playbackSecondaryAction.apply { binding.playbackSecondaryAction.apply {
setIconResource(R.drawable.sel_shuffle_state_24) setIconResource(R.drawable.sel_shuffle_state_24)
contentDescription = getString(R.string.desc_shuffle) contentDescription = getString(R.string.desc_shuffle)
@ -144,21 +143,3 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
requireBinding().playbackProgressBar.progress = positionDs.toInt() requireBinding().playbackProgressBar.progress = positionDs.toInt()
} }
} }
/** Represents the action that should be shown on the playback bar. */
enum class BarAction {
NEXT,
REPEAT,
SHUFFLE;
companion object {
/** Convert an int [code] into an instance, or null if it isn't valid. */
fun fromIntCode(code: Int) =
when (code) {
IntegerTable.BAR_ACTION_NEXT -> NEXT
IntegerTable.BAR_ACTION_REPEAT -> REPEAT
IntegerTable.BAR_ACTION_SHUFFLE -> SHUFFLE
else -> null
}
}
}

View file

@ -32,6 +32,7 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.image.BitmapProvider import org.oxycblt.auxio.image.BitmapProvider
import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicParent
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.playback.ActionMode
import org.oxycblt.auxio.playback.state.InternalPlayer import org.oxycblt.auxio.playback.state.InternalPlayer
import org.oxycblt.auxio.playback.state.PlaybackStateManager import org.oxycblt.auxio.playback.state.PlaybackStateManager
import org.oxycblt.auxio.playback.state.RepeatMode import org.oxycblt.auxio.playback.state.RepeatMode
@ -254,7 +255,7 @@ class MediaSessionComponent(private val context: Context, private val callback:
context.getString(R.string.set_key_show_covers), context.getString(R.string.set_key_show_covers),
context.getString(R.string.set_key_quality_covers) -> context.getString(R.string.set_key_quality_covers) ->
updateMediaMetadata(playbackManager.song, playbackManager.parent) updateMediaMetadata(playbackManager.song, playbackManager.parent)
context.getString(R.string.set_key_alt_notif_action) -> invalidateSecondaryAction() context.getString(R.string.set_key_notif_action) -> invalidateSecondaryAction()
} }
} }
@ -368,24 +369,23 @@ class MediaSessionComponent(private val context: Context, private val callback:
// Android 13+ leverages custom actions in the notification. // Android 13+ leverages custom actions in the notification.
val extraAction = val extraAction = when (settings.notifAction) {
if (settings.useAltNotifAction) { ActionMode.SHUFFLE -> PlaybackStateCompat.CustomAction.Builder(
PlaybackStateCompat.CustomAction.Builder( PlaybackService.ACTION_INVERT_SHUFFLE,
PlaybackService.ACTION_INVERT_SHUFFLE, context.getString(R.string.desc_shuffle),
context.getString(R.string.desc_shuffle), if (playbackManager.isShuffled) {
if (playbackManager.isShuffled) { R.drawable.ic_shuffle_on_24
R.drawable.ic_shuffle_on_24 } else {
} else { R.drawable.ic_shuffle_off_24
R.drawable.ic_shuffle_off_24 }
} )
)
} else { else -> PlaybackStateCompat.CustomAction.Builder(
PlaybackStateCompat.CustomAction.Builder( PlaybackService.ACTION_INC_REPEAT_MODE,
PlaybackService.ACTION_INC_REPEAT_MODE, context.getString(R.string.desc_change_repeat),
context.getString(R.string.desc_change_repeat), playbackManager.repeatMode.icon
playbackManager.repeatMode.icon )
) }
}
val exitAction = val exitAction =
PlaybackStateCompat.CustomAction.Builder( PlaybackStateCompat.CustomAction.Builder(
@ -404,10 +404,9 @@ class MediaSessionComponent(private val context: Context, private val callback:
private fun invalidateSecondaryAction() { private fun invalidateSecondaryAction() {
invalidateSessionState() invalidateSessionState()
if (settings.useAltNotifAction) { when (settings.notifAction) {
notification.updateShuffled(playbackManager.isShuffled) ActionMode.SHUFFLE -> notification.updateShuffled(playbackManager.isShuffled)
} else { else -> notification.updateRepeatMode(playbackManager.repeatMode)
notification.updateRepeatMode(playbackManager.repeatMode)
} }
if (!provider.isBusy) { if (!provider.isBusy) {

View file

@ -31,7 +31,7 @@ import org.oxycblt.auxio.music.MusicMode
import org.oxycblt.auxio.music.Sort import org.oxycblt.auxio.music.Sort
import org.oxycblt.auxio.music.storage.Directory import org.oxycblt.auxio.music.storage.Directory
import org.oxycblt.auxio.music.storage.MusicDirs import org.oxycblt.auxio.music.storage.MusicDirs
import org.oxycblt.auxio.playback.BarAction import org.oxycblt.auxio.playback.ActionMode
import org.oxycblt.auxio.playback.replaygain.ReplayGainMode import org.oxycblt.auxio.playback.replaygain.ReplayGainMode
import org.oxycblt.auxio.playback.replaygain.ReplayGainPreAmp import org.oxycblt.auxio.playback.replaygain.ReplayGainPreAmp
import org.oxycblt.auxio.ui.accent.Accent import org.oxycblt.auxio.ui.accent.Accent
@ -74,12 +74,28 @@ class Settings(private val context: Context, private val callback: Callback? = n
} }
inner.edit { inner.edit {
putInt(context.getString(R.string.set_accent), accent) putInt(context.getString(R.string.set_key_accent), accent)
remove(OldKeys.KEY_ACCENT3) remove(OldKeys.KEY_ACCENT3)
apply() apply()
} }
} }
if (inner.contains(OldKeys.KEY_ALT_NOTIF_ACTION)) {
logD("Migrating ${OldKeys.KEY_ALT_NOTIF_ACTION}")
val mode = if (inner.getBoolean(OldKeys.KEY_ALT_NOTIF_ACTION, false)) {
ActionMode.SHUFFLE
} else {
ActionMode.REPEAT
}
inner.edit {
putInt(context.getString(R.string.set_key_notif_action), mode.intCode)
remove(OldKeys.KEY_ALT_NOTIF_ACTION)
apply()
}
}
fun Int.migratePlaybackMode() = fun Int.migratePlaybackMode() =
when (this) { when (this) {
// Genre playback mode was retried in 3.0.0 // Genre playback mode was retried in 3.0.0
@ -100,6 +116,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
inner.edit { inner.edit {
putInt(context.getString(R.string.set_key_library_song_playback_mode), mode.intCode) putInt(context.getString(R.string.set_key_library_song_playback_mode), mode.intCode)
remove(OldKeys.KEY_LIB_PLAYBACK_MODE) remove(OldKeys.KEY_LIB_PLAYBACK_MODE)
apply()
} }
} }
@ -114,6 +131,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
mode?.intCode ?: Int.MIN_VALUE mode?.intCode ?: Int.MIN_VALUE
) )
remove(OldKeys.KEY_DETAIL_PLAYBACK_MODE) remove(OldKeys.KEY_DETAIL_PLAYBACK_MODE)
apply()
} }
} }
} }
@ -182,19 +200,19 @@ class Settings(private val context: Context, private val callback: Callback? = n
get() = inner.getBoolean(context.getString(R.string.set_key_round_mode), false) get() = inner.getBoolean(context.getString(R.string.set_key_round_mode), false)
/** Which action to display on the playback bar. */ /** Which action to display on the playback bar. */
val barAction: BarAction val actionMode: ActionMode
get() = get() =
BarAction.fromIntCode( ActionMode.fromIntCode(
inner.getInt(context.getString(R.string.set_key_bar_action), Int.MIN_VALUE) inner.getInt(context.getString(R.string.set_key_bar_action), Int.MIN_VALUE)
) )
?: BarAction.NEXT ?: ActionMode.NEXT
/** /**
* Whether to display the RepeatMode or the shuffle status on the notification. False if repeat, * Whether to display the RepeatMode or the shuffle status on the notification. False if repeat,
* true if shuffle. * true if shuffle.
*/ */
val useAltNotifAction: Boolean val notifAction: ActionMode
get() = inner.getBoolean(context.getString(R.string.set_key_alt_notif_action), false) get() = ActionMode.fromIntCode(inner.getInt(context.getString(R.string.set_key_notif_action), Int.MIN_VALUE)) ?: ActionMode.REPEAT
/** 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
@ -439,6 +457,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
/** Cache of the old keys used in Auxio. */ /** Cache of the old keys used in Auxio. */
private object OldKeys { private object OldKeys {
const val KEY_ACCENT3 = "auxio_accent" const val KEY_ACCENT3 = "auxio_accent"
const val KEY_ALT_NOTIF_ACTION = "KEY_ALT_NOTIF_ACTION"
const val KEY_LIB_PLAYBACK_MODE = "KEY_SONG_PLAY_MODE2" const val KEY_LIB_PLAYBACK_MODE = "KEY_SONG_PLAY_MODE2"
const val KEY_DETAIL_PLAYBACK_MODE = "auxio_detail_song_play_mode" const val KEY_DETAIL_PLAYBACK_MODE = "auxio_detail_song_play_mode"
} }

View file

@ -61,7 +61,7 @@
<string name="set_quality_covers_desc">يزيد من جودة غلاف الالبوم، لكن يؤذي إلى زيادة وقت التحميل واستخدام اعلى للذاكرة</string> <string name="set_quality_covers_desc">يزيد من جودة غلاف الالبوم، لكن يؤذي إلى زيادة وقت التحميل واستخدام اعلى للذاكرة</string>
<string name="set_round_mode">اغلفة البوم مدورة</string> <string name="set_round_mode">اغلفة البوم مدورة</string>
<string name="set_round_mode_desc">جعل اغلفة الابومات ذات زوايا مدورة</string> <string name="set_round_mode_desc">جعل اغلفة الابومات ذات زوايا مدورة</string>
<string name="set_alt_action">استخدام نشاط بديل للإشعار</string> <string name="set_notif_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>
<string name="set_audio">صوتيات</string> <string name="set_audio">صوتيات</string>

View file

@ -71,7 +71,7 @@
<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_mode">Zakulacené obaly alb</string> <string name="set_round_mode">Zakulacené obaly alb</string>
<string name="set_round_mode_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_notif_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>
<string name="set_audio">Zvuk</string> <string name="set_audio">Zvuk</string>

View file

@ -49,7 +49,7 @@
<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_mode">Abgerundete Cover</string> <string name="set_round_mode">Abgerundete Cover</string>
<string name="set_round_mode_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_notif_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>
<string name="set_audio">Audio</string> <string name="set_audio">Audio</string>

View file

@ -61,7 +61,7 @@
<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_mode">Carátulas redondeadas</string> <string name="set_round_mode">Carátulas redondeadas</string>
<string name="set_round_mode_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_notif_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>
<string name="set_audio">Sonido</string> <string name="set_audio">Sonido</string>

View file

@ -83,7 +83,7 @@
<string name="set_audio">Tunog</string> <string name="set_audio">Tunog</string>
<string name="set_headset_autoplay">Kusang pagtugtog ng headset</string> <string name="set_headset_autoplay">Kusang pagtugtog ng headset</string>
<string name="set_headset_autoplay_desc">Laging simulan ang pagtugtog tuwing pagkonekta ng headset (maaaring \'di gumana sa lahat ng device)</string> <string name="set_headset_autoplay_desc">Laging simulan ang pagtugtog tuwing pagkonekta ng headset (maaaring \'di gumana sa lahat ng device)</string>
<string name="set_alt_action">Naisin ang alternatibong aksyong patalastas</string> <string name="set_notif_action">Naisin ang alternatibong aksyong patalastas</string>
<string name="set_alt_repeat">Naisin ang aksyong modang pang-ulit</string> <string name="set_alt_repeat">Naisin ang aksyong modang pang-ulit</string>
<string name="set_replay_gain_dynamic">Naisin ang album kung may isang tumutugtog</string> <string name="set_replay_gain_dynamic">Naisin ang album kung may isang tumutugtog</string>
<string name="set_pre_amp">ReplayGain pre-amp</string> <string name="set_pre_amp">ReplayGain pre-amp</string>

View file

@ -82,7 +82,7 @@
<string name="set_black_mode_desc">Utiliser un thème noir pur</string> <string name="set_black_mode_desc">Utiliser un thème noir pur</string>
<string name="set_lib_tabs_desc">Modifier la visibilité et l\'ordre des onglets de la bibliothèque</string> <string name="set_lib_tabs_desc">Modifier la visibilité et l\'ordre des onglets de la bibliothèque</string>
<string name="lbl_bitrate">Débit binaire</string> <string name="lbl_bitrate">Débit binaire</string>
<string name="set_alt_action">Utiliser une autre action de notification</string> <string name="set_notif_action">Utiliser une autre action de notification</string>
<string name="lbl_sample_rate">Taux d\'échantillonnage</string> <string name="lbl_sample_rate">Taux d\'échantillonnage</string>
<string name="lbl_relative_path">Chemin parent</string> <string name="lbl_relative_path">Chemin parent</string>
<string name="lbl_file_name">Nom du fichier</string> <string name="lbl_file_name">Nom du fichier</string>

View file

@ -195,7 +195,7 @@
<string name="set_title">Postavke</string> <string name="set_title">Postavke</string>
<string name="set_theme">Tema</string> <string name="set_theme">Tema</string>
<string name="set_theme_auto">Automatski</string> <string name="set_theme_auto">Automatski</string>
<string name="set_alt_action">Koristi alternativnu radnju za obavijest</string> <string name="set_notif_action">Koristi alternativnu radnju za obavijest</string>
<string name="set_round_mode_desc">Omogući zaobljene rubove na dodatnim elementima korisničkog sučelja (zahtijeva zaobljene omote albuma)</string> <string name="set_round_mode_desc">Omogući zaobljene rubove na dodatnim elementima korisničkog sučelja (zahtijeva zaobljene omote albuma)</string>
<string name="set_behavior">Ponašanje</string> <string name="set_behavior">Ponašanje</string>
<string name="set_rewind_prev">Premotaj prije preskakanja natrag</string> <string name="set_rewind_prev">Premotaj prije preskakanja natrag</string>

View file

@ -88,7 +88,7 @@
<string name="lbl_library_counts">Statistik perpustakaan</string> <string name="lbl_library_counts">Statistik perpustakaan</string>
<string name="set_show_covers_desc">Matikan untuk menghemat penggunaan memori</string> <string name="set_show_covers_desc">Matikan untuk menghemat penggunaan memori</string>
<string name="set_quality_covers_desc">Meningkatkan kualitas sampul album, tetapi menghasilkan waktu pemuatan yang lebih lama dan penggunaan memori yang lebih tinggi</string> <string name="set_quality_covers_desc">Meningkatkan kualitas sampul album, tetapi menghasilkan waktu pemuatan yang lebih lama dan penggunaan memori yang lebih tinggi</string>
<string name="set_alt_action">Gunakan tindakan pemberitahuan alternatif</string> <string name="set_notif_action">Gunakan tindakan pemberitahuan alternatif</string>
<string name="set_alt_repeat">Lebih suka tindakan mode pengulangan</string> <string name="set_alt_repeat">Lebih suka tindakan mode pengulangan</string>
<string name="set_alt_shuffle">Lebih suka tindakan mengacak</string> <string name="set_alt_shuffle">Lebih suka tindakan mengacak</string>
<string name="lbl_shuffle_shortcut_short">Acak</string> <string name="lbl_shuffle_shortcut_short">Acak</string>

View file

@ -62,7 +62,7 @@
<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_mode">Copertine dischi arrotondate</string> <string name="set_round_mode">Copertine dischi arrotondate</string>
<string name="set_round_mode_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_notif_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>
<string name="set_audio">Audio</string> <string name="set_audio">Audio</string>

View file

@ -69,7 +69,7 @@
<string name="set_quality_covers_desc">앨범 커버의 품질을 높일 수 있지만 메모리 사용량이 늘어나고 불러오는 시간이 더 오래 걸립니다.</string> <string name="set_quality_covers_desc">앨범 커버의 품질을 높일 수 있지만 메모리 사용량이 늘어나고 불러오는 시간이 더 오래 걸립니다.</string>
<string name="set_round_mode">둥근 앨범 커버 사용</string> <string name="set_round_mode">둥근 앨범 커버 사용</string>
<string name="set_round_mode_desc">앨범 커버의 가장자리를 둥글게 표시</string> <string name="set_round_mode_desc">앨범 커버의 가장자리를 둥글게 표시</string>
<string name="set_alt_action">다른 방식의 알림 동작 사용</string> <string name="set_notif_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>
<string name="set_audio">오디오</string> <string name="set_audio">오디오</string>

View file

@ -94,7 +94,7 @@
<string name="set_audio">Garso</string> <string name="set_audio">Garso</string>
<string name="set_quality_covers">Ignoruoti „MediaStore“ viršelius</string> <string name="set_quality_covers">Ignoruoti „MediaStore“ viršelius</string>
<string name="set_round_mode">Apvalus režimas</string> <string name="set_round_mode">Apvalus režimas</string>
<string name="set_alt_action">Naudoti alternatyvų pranešimo veiksmą</string> <string name="set_notif_action">Naudoti alternatyvų pranešimo veiksmą</string>
<string name="cdc_mp3">MPEG-1 garsas</string> <string name="cdc_mp3">MPEG-1 garsas</string>
<string name="clr_green">Žalia</string> <string name="clr_green">Žalia</string>
<string name="clr_deep_green">Giliai žalia</string> <string name="clr_deep_green">Giliai žalia</string>

View file

@ -50,7 +50,7 @@
<string name="set_show_covers_desc">Schakel uit om geheugengebruik te besparen</string> <string name="set_show_covers_desc">Schakel uit om geheugengebruik te besparen</string>
<string name="set_quality_covers">Negeer Mediaopslag illustraties</string> <string name="set_quality_covers">Negeer Mediaopslag illustraties</string>
<string name="set_quality_covers_desc">Verhoogt de kwaliteit van de albumhoezen, maar resulteert in langere laadtijden en hoger geheugengebruik </string> <string name="set_quality_covers_desc">Verhoogt de kwaliteit van de albumhoezen, maar resulteert in langere laadtijden en hoger geheugengebruik </string>
<string name="set_alt_action">Gebruikt een afternatief notification action</string> <string name="set_notif_action">Gebruikt een afternatief notification action</string>
<string name="set_alt_repeat">Voorkeur aan herhaalde actie</string> <string name="set_alt_repeat">Voorkeur aan herhaalde actie</string>
<string name="set_alt_shuffle">Voorkeur aan shuffle actie</string> <string name="set_alt_shuffle">Voorkeur aan shuffle actie</string>
<string name="set_audio">Audio</string> <string name="set_audio">Audio</string>

View file

@ -215,7 +215,7 @@
<string name="err_no_app">Nie znaleziono aplikacji mogącej wykonać to zadanie</string> <string name="err_no_app">Nie znaleziono aplikacji mogącej wykonać to zadanie</string>
<string name="lbl_library_counts">Statystyki biblioteki</string> <string name="lbl_library_counts">Statystyki biblioteki</string>
<string name="fmt_lib_artist_count">Załadowani artyści: %d</string> <string name="fmt_lib_artist_count">Załadowani artyści: %d</string>
<string name="set_alt_action">Użyj alternatywnej akcji w powiadomieniu</string> <string name="set_notif_action">Użyj alternatywnej akcji w powiadomieniu</string>
<string name="set_repeat_pause">Zatrzymaj odtwarzanie przy powtórzeniu</string> <string name="set_repeat_pause">Zatrzymaj odtwarzanie przy powtórzeniu</string>
<string name="desc_clear_search">Wyczyść zapytanie wyszukiwania</string> <string name="desc_clear_search">Wyczyść zapytanie wyszukiwania</string>
<string name="err_did_not_restore">Nie można przywrócić stanu odtwarzania</string> <string name="err_did_not_restore">Nie można przywrócić stanu odtwarzania</string>

View file

@ -79,7 +79,7 @@
<string name="lbl_library_counts">Estatísticas da biblioteca</string> <string name="lbl_library_counts">Estatísticas da biblioteca</string>
<string name="set_show_covers_desc">Desligue para economizar o uso de memória</string> <string name="set_show_covers_desc">Desligue para economizar o uso de memória</string>
<string name="set_quality_covers_desc">Aumenta a qualidade da capa do álbum, mas resulta em tempos de carregamento mais longos e maior uso de memória</string> <string name="set_quality_covers_desc">Aumenta a qualidade da capa do álbum, mas resulta em tempos de carregamento mais longos e maior uso de memória</string>
<string name="set_alt_action">Usar ação de notificação alternativa</string> <string name="set_notif_action">Usar ação de notificação alternativa</string>
<string name="set_alt_repeat">Prefira a ação do modo de repetição</string> <string name="set_alt_repeat">Prefira a ação do modo de repetição</string>
<string name="set_pre_amp_desc">O pré-amplificador é aplicado ao ajuste existente durante a reprodução</string> <string name="set_pre_amp_desc">O pré-amplificador é aplicado ao ajuste existente durante a reprodução</string>
<string name="set_pre_amp_warning">Aviso: Alterar o pré-amplificador para um valor positivo alto pode resultar em picos em algumas faixas de áudio.</string> <string name="set_pre_amp_warning">Aviso: Alterar o pré-amplificador para um valor positivo alto pode resultar em picos em algumas faixas de áudio.</string>

View file

@ -61,7 +61,7 @@
<string name="set_quality_covers_desc">Улучшает качество обложек, но увеличивает время загрузки и использование памяти</string> <string name="set_quality_covers_desc">Улучшает качество обложек, но увеличивает время загрузки и использование памяти</string>
<string name="set_round_mode">Скруглённые обложки</string> <string name="set_round_mode">Скруглённые обложки</string>
<string name="set_round_mode_desc">Показывать обложки со скруглёнными краями</string> <string name="set_round_mode_desc">Показывать обложки со скруглёнными краями</string>
<string name="set_alt_action">Кнопка в уведомлении</string> <string name="set_notif_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>
<string name="set_audio">Звук</string> <string name="set_audio">Звук</string>

View file

@ -145,7 +145,7 @@
<string name="fmt_indexing">Müzik kitaplığınız yükleniyor… (%1$d/%2$d)</string> <string name="fmt_indexing">Müzik kitaplığınız yükleniyor… (%1$d/%2$d)</string>
<string name="fmt_lib_song_count">Yüklenen şarkılar: %d</string> <string name="fmt_lib_song_count">Yüklenen şarkılar: %d</string>
<string name="fmt_lib_album_count">Yüklenen albümler: %d</string> <string name="fmt_lib_album_count">Yüklenen albümler: %d</string>
<string name="set_alt_action">Alternatif bildirim eylemi kullan</string> <string name="set_notif_action">Alternatif bildirim eylemi kullan</string>
<string name="set_replay_gain_dynamic">Çalan bir albüm varsa tercih et</string> <string name="set_replay_gain_dynamic">Çalan bir albüm varsa tercih et</string>
<string name="set_alt_repeat">Tekrar modu eylemini tercih et</string> <string name="set_alt_repeat">Tekrar modu eylemini tercih et</string>
<string name="set_alt_shuffle">Karıştırma eylemini tercih et</string> <string name="set_alt_shuffle">Karıştırma eylemini tercih et</string>

View file

@ -61,7 +61,7 @@
<string name="set_quality_covers_desc">提升专辑封面质量,但需要更长的加载时间并消耗更多内存</string> <string name="set_quality_covers_desc">提升专辑封面质量,但需要更长的加载时间并消耗更多内存</string>
<string name="set_round_mode">专辑封面圆角</string> <string name="set_round_mode">专辑封面圆角</string>
<string name="set_round_mode_desc">使用圆角设计的专辑封面</string> <string name="set_round_mode_desc">使用圆角设计的专辑封面</string>
<string name="set_alt_action">使用替代通知操作方案</string> <string name="set_notif_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>
<string name="set_audio">音频</string> <string name="set_audio">音频</string>

View file

@ -10,7 +10,7 @@
<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_mode" translatable="false">auxio_round_covers</string> <string name="set_key_round_mode" translatable="false">auxio_round_covers</string>
<string name="set_key_bar_action" translatable="false">auxio_bar_action</string> <string name="set_key_bar_action" translatable="false">auxio_bar_action</string>
<string name="set_key_alt_notif_action" translatable="false">KEY_ALT_NOTIF_ACTION</string> <string name="set_key_notif_action" translatable="false">auxio_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>
<string name="set_key_replay_gain" translatable="false">auxio_replay_gain</string> <string name="set_key_replay_gain" translatable="false">auxio_replay_gain</string>
@ -70,9 +70,19 @@
</string-array> </string-array>
<integer-array name="values_bar_action"> <integer-array name="values_bar_action">
<item>@integer/bar_action_next</item> <item>@integer/action_mode_next</item>
<item>@integer/bar_action_repeat</item> <item>@integer/action_mode_repeat</item>
<item>@integer/bar_action_shuffle</item> <item>@integer/action_mode_shuffle</item>
</integer-array>
<integer-array name="entries_notif_action">
<item>@string/set_bar_action_repeat</item>
<item>@string/lbl_shuffle</item>
</integer-array>
<integer-array name="values_notif_action">
<item>@integer/action_mode_repeat</item>
<item>@integer/action_mode_shuffle</item>
</integer-array> </integer-array>
<string-array name="entries_library_song_playback_mode"> <string-array name="entries_library_song_playback_mode">
@ -117,9 +127,9 @@
<integer name="theme_light">1</integer> <integer name="theme_light">1</integer>
<integer name="theme_dark">2</integer> <integer name="theme_dark">2</integer>
<integer name="bar_action_next">0xA119</integer> <integer name="action_mode_next">0xA119</integer>
<integer name="bar_action_repeat">0xA11A</integer> <integer name="action_mode_repeat">0xA11A</integer>
<integer name="bar_action_shuffle">0xA11B</integer> <integer name="action_mode_shuffle">0xA11B</integer>
<integer name="music_mode_none">-2147483648</integer> <integer name="music_mode_none">-2147483648</integer>
<integer name="music_mode_artist">0xA109</integer> <integer name="music_mode_artist">0xA109</integer>

View file

@ -181,9 +181,7 @@
<string name="set_bar_action_next">Skip to next</string> <string name="set_bar_action_next">Skip to next</string>
<string name="set_bar_action_repeat">Repeat mode</string> <string name="set_bar_action_repeat">Repeat mode</string>
<string name="set_bar_action_shuffle">Shuffle</string> <string name="set_bar_action_shuffle">Shuffle</string>
<string name="set_alt_action">Use alternate notification action</string> <string name="set_notif_action">Custom notification action</string>
<string name="set_alt_repeat">Prefer repeat mode action</string>
<string name="set_alt_shuffle">Prefer shuffle action</string>
<string name="set_audio">Audio</string> <string name="set_audio">Audio</string>
<string name="set_headset_autoplay">Headset autoplay</string> <string name="set_headset_autoplay">Headset autoplay</string>

View file

@ -51,18 +51,18 @@
app:title="@string/set_round_mode" /> app:title="@string/set_round_mode" />
<org.oxycblt.auxio.settings.prefs.IntListPreference <org.oxycblt.auxio.settings.prefs.IntListPreference
app:defaultValue="@integer/bar_action_next" app:defaultValue="@integer/action_mode_next"
app:entries="@array/entries_bar_action" app:entries="@array/entries_bar_action"
app:entryValues="@array/values_bar_action" app:entryValues="@array/values_bar_action"
app:key="@string/set_key_bar_action" app:key="@string/set_key_bar_action"
app:title="@string/set_bar_action" /> app:title="@string/set_bar_action" />
<SwitchPreferenceCompat <org.oxycblt.auxio.settings.prefs.IntListPreference
app:defaultValue="false" app:defaultValue="@integer/action_mode_repeat"
app:key="@string/set_key_alt_notif_action" app:entries="@array/entries_notif_action"
app:summaryOff="@string/set_alt_repeat" app:entryValues="@array/values_notif_action"
app:summaryOn="@string/set_alt_shuffle" app:key="@string/set_key_notif_action"
app:title="@string/set_alt_action" /> app:title="@string/set_notif_action" />
</PreferenceCategory> </PreferenceCategory>