ui: add basic bar actions [#108]

Add the ability to customize the bar action to the repeat mode or
shuffle state.

This is a much smaller implementation than what I planned, mostly
because other options did not make much sense (queue) or were
superceded by better options (clear state).

Resolves #108.
This commit is contained in:
OxygenCobalt 2022-08-10 13:14:19 -06:00
parent ce2e950a9b
commit 68ca9973df
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
25 changed files with 197 additions and 109 deletions

View file

@ -3,9 +3,12 @@
## dev ## dev
#### What's New #### What's New
- Added basic equalizer support in external apps like Wavelet - Added basic equalizer support in external apps like Wavelet [#211]
- Detail UI now displays the type of item shown (ex. the release type) - Detail UI now displays the type of item shown (ex. the release type)
#### What's Improved
- Queue now scrolls to currently playing song instead of the song after it
#### What's Fixed #### What's Fixed
- Fixed incorrect font being used in the queue title - Fixed incorrect font being used in the queue title
- Fixed missing fast scroll indicator with date added scrolling - Fixed missing fast scroll indicator with date added scrolling

View file

@ -116,4 +116,11 @@ object IntegerTable {
const val REPLAY_GAIN_MODE_ALBUM = 0xA112 const val REPLAY_GAIN_MODE_ALBUM = 0xA112
/** ReplayGainMode.Dynamic */ /** ReplayGainMode.Dynamic */
const val REPLAY_GAIN_MODE_DYNAMIC = 0xA113 const val REPLAY_GAIN_MODE_DYNAMIC = 0xA113
/** BarAction.Next */
const val BAR_ACTION_NEXT = 0xA119
/** BarAction.Repeat */
const val BAR_ACTION_REPEAT = 0xA11A
/** BarAction.Shuffle */
const val BAR_ACTION_SHUFFLE = 0xA11B
} }

View file

@ -42,7 +42,7 @@ import org.oxycblt.auxio.util.logEOrThrow
*/ */
class AlbumListFragment : HomeListFragment<Album>() { class AlbumListFragment : HomeListFragment<Album>() {
private val homeAdapter = AlbumAdapter(this) private val homeAdapter = AlbumAdapter(this)
private val formatterSb = StringBuilder(50) private val formatterSb = StringBuilder(32)
private val formatter = Formatter(formatterSb) private val formatter = Formatter(formatterSb)
override fun onBindingCreated(binding: FragmentHomeListBinding, savedInstanceState: Bundle?) { override fun onBindingCreated(binding: FragmentHomeListBinding, savedInstanceState: Bundle?) {

View file

@ -20,14 +20,18 @@ 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
import org.oxycblt.auxio.playback.state.RepeatMode
import org.oxycblt.auxio.settings.Settings
import org.oxycblt.auxio.ui.MainNavigationAction import org.oxycblt.auxio.ui.MainNavigationAction
import org.oxycblt.auxio.ui.NavigationViewModel import org.oxycblt.auxio.ui.NavigationViewModel
import org.oxycblt.auxio.ui.fragment.ViewBindingFragment import org.oxycblt.auxio.ui.fragment.ViewBindingFragment
import org.oxycblt.auxio.util.androidActivityViewModels import org.oxycblt.auxio.util.androidActivityViewModels
import org.oxycblt.auxio.util.collectImmediately import org.oxycblt.auxio.util.collectImmediately
import org.oxycblt.auxio.util.getAttrColorCompat
import org.oxycblt.auxio.util.getColorCompat import org.oxycblt.auxio.util.getColorCompat
/** /**
@ -46,6 +50,8 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
binding: FragmentPlaybackBarBinding, binding: FragmentPlaybackBarBinding,
savedInstanceState: Bundle? savedInstanceState: Bundle?
) { ) {
val context = requireContext()
binding.root.apply { binding.root.apply {
setOnClickListener { navModel.mainNavigateTo(MainNavigationAction.Expand) } setOnClickListener { navModel.mainNavigateTo(MainNavigationAction.Expand) }
@ -58,11 +64,39 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
// Load the track color in manually as it's unclear whether the track actually supports // Load the track color in manually as it's unclear whether the track actually supports
// using a ColorStateList in the resources // using a ColorStateList in the resources
binding.playbackProgressBar.trackColor = binding.playbackProgressBar.trackColor =
requireContext().getColorCompat(R.color.sel_track).defaultColor context.getColorCompat(R.color.sel_track).defaultColor
binding.playbackPlayPause.setOnClickListener { playbackModel.invertPlaying() } binding.playbackPlayPause.setOnClickListener { playbackModel.invertPlaying() }
binding.playbackSkipNext.setOnClickListener { playbackModel.next() } // Update the secondary action to match the setting.
when (Settings(context).barAction) {
BarAction.NEXT -> {
binding.playbackSecondaryAction.apply {
setIconResource(R.drawable.ic_skip_next_24)
contentDescription = getString(R.string.desc_skip_next)
iconTint = context.getAttrColorCompat(R.attr.colorOnSurfaceVariant)
setOnClickListener { playbackModel.next() }
}
}
BarAction.REPEAT -> {
binding.playbackSecondaryAction.apply {
contentDescription = getString(R.string.desc_change_repeat)
iconTint = context.getColorCompat(R.color.sel_accented)
setOnClickListener { playbackModel.incrementRepeatMode() }
collectImmediately(playbackModel.repeatMode, ::updateRepeat)
}
}
BarAction.SHUFFLE -> {
binding.playbackSecondaryAction.apply {
setIconResource(R.drawable.sel_shuffle_state_24)
contentDescription = getString(R.string.desc_shuffle)
iconTint = context.getColorCompat(R.color.sel_accented)
setOnClickListener { playbackModel.invertShuffled() }
collectImmediately(playbackModel.isShuffled, ::updateShuffled)
}
}
}
// -- VIEWMODEL SETUP --- // -- VIEWMODEL SETUP ---
@ -86,7 +120,36 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
requireBinding().playbackPlayPause.isActivated = isPlaying requireBinding().playbackPlayPause.isActivated = isPlaying
} }
private fun updateRepeat(repeatMode: RepeatMode) {
requireBinding().playbackSecondaryAction.apply {
setIconResource(repeatMode.icon)
isActivated = repeatMode != RepeatMode.NONE
}
}
private fun updateShuffled(isShuffled: Boolean) {
requireBinding().playbackSecondaryAction.isActivated = isShuffled
}
private fun updatePosition(position: Long) { private fun updatePosition(position: Long) {
requireBinding().playbackProgressBar.progress = position.toInt() requireBinding().playbackProgressBar.progress = position.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

@ -34,7 +34,6 @@ import org.oxycblt.auxio.ui.NavigationViewModel
import org.oxycblt.auxio.ui.fragment.ViewBindingFragment import org.oxycblt.auxio.ui.fragment.ViewBindingFragment
import org.oxycblt.auxio.util.androidActivityViewModels import org.oxycblt.auxio.util.androidActivityViewModels
import org.oxycblt.auxio.util.collectImmediately import org.oxycblt.auxio.util.collectImmediately
import org.oxycblt.auxio.util.getDrawableCompat
import org.oxycblt.auxio.util.systemBarInsetsCompat import org.oxycblt.auxio.util.systemBarInsetsCompat
/** /**
@ -158,15 +157,8 @@ class PlaybackPanelFragment :
} }
private fun updateRepeat(repeatMode: RepeatMode) { private fun updateRepeat(repeatMode: RepeatMode) {
val iconRes =
when (repeatMode) {
RepeatMode.NONE -> R.drawable.ic_repeat_off_24
RepeatMode.ALL -> R.drawable.ic_repeat_on_24
RepeatMode.TRACK -> R.drawable.ic_repeat_one_24
}
requireBinding().playbackRepeat.apply { requireBinding().playbackRepeat.apply {
icon = requireContext().getDrawableCompat(iconRes) setIconResource(repeatMode.icon)
isActivated = repeatMode != RepeatMode.NONE isActivated = repeatMode != RepeatMode.NONE
} }
} }

View file

@ -18,6 +18,7 @@
package org.oxycblt.auxio.playback.state package org.oxycblt.auxio.playback.state
import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R
/** /**
* Enum that determines the playback repeat mode. * Enum that determines the playback repeat mode.
@ -36,6 +37,15 @@ enum class RepeatMode {
TRACK -> NONE TRACK -> NONE
} }
/** The icon representing this particular mode. */
val icon: Int
get() =
when (this) {
NONE -> R.drawable.ic_repeat_off_24
ALL -> R.drawable.ic_repeat_on_24
TRACK -> R.drawable.ic_repeat_one_24
}
/** The integer code representing this particular mode. */ /** The integer code representing this particular mode. */
val intCode: Int val intCode: Int
get() = get() =

View file

@ -117,14 +117,7 @@ class NotificationComponent(private val context: Context, sessionToken: MediaSes
context: Context, context: Context,
repeatMode: RepeatMode repeatMode: RepeatMode
): NotificationCompat.Action { ): NotificationCompat.Action {
val drawableRes = return buildAction(context, PlaybackService.ACTION_INC_REPEAT_MODE, repeatMode.icon)
when (repeatMode) {
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)
} }
private fun buildShuffleAction( private fun buildShuffleAction(

View file

@ -203,19 +203,15 @@ class PlaybackService :
} }
override fun onPlaybackStateChanged(state: Int) { override fun onPlaybackStateChanged(state: Int) {
when (state) { if (state == Player.STATE_ENDED) {
Player.STATE_ENDED -> { if (playbackManager.repeatMode == RepeatMode.TRACK) {
logD("State ended") playbackManager.rewind()
if (playbackManager.repeatMode == RepeatMode.TRACK) { if (settings.pauseOnRepeat) {
playbackManager.rewind() playbackManager.isPlaying = false
if (settings.pauseOnRepeat) {
playbackManager.isPlaying = false
}
} else {
playbackManager.next()
} }
} else {
playbackManager.next()
} }
else -> {}
} }
} }
@ -274,7 +270,7 @@ class PlaybackService :
player.prepare() player.prepare()
if (!openAudioEffectSession) { if (!openAudioEffectSession) {
// Wavelet does not like it if you start an audio effect session without having // Android does not like it if you start an audio effect session without having
// something within your player buffer. Make sure we only start one when we load // something within your player buffer. Make sure we only start one when we load
// a song. // a song.
broadcastAudioEffectAction(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION) broadcastAudioEffectAction(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION)

View file

@ -27,6 +27,7 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.home.tabs.Tab import org.oxycblt.auxio.home.tabs.Tab
import org.oxycblt.auxio.music.Directory import org.oxycblt.auxio.music.Directory
import org.oxycblt.auxio.music.dirs.MusicDirs import org.oxycblt.auxio.music.dirs.MusicDirs
import org.oxycblt.auxio.playback.BarAction
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.playback.state.PlaybackMode import org.oxycblt.auxio.playback.state.PlaybackMode
@ -91,13 +92,6 @@ class Settings(private val context: Context, private val callback: Callback? = n
} }
} }
/**
* Whether to display the RepeatMode or the shuffle status on the notification. False if repeat,
* true if shuffle.
*/
val useAltNotifAction: Boolean
get() = inner.getBoolean(context.getString(R.string.set_key_alt_notif_action), false)
/** The current library tabs preferred by the user. */ /** The current library tabs preferred by the user. */
var libTabs: Array<Tab> var libTabs: Array<Tab>
get() = get() =
@ -123,6 +117,19 @@ class Settings(private val context: Context, private val callback: Callback? = n
val roundMode: Boolean val roundMode: Boolean
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. */
val barAction: BarAction
get() =
BarAction.fromIntCode(inner.getInt(context.getString(R.string.set_key_bar_action), -1))
?: BarAction.NEXT
/**
* Whether to display the RepeatMode or the shuffle status on the notification. False if repeat,
* true if shuffle.
*/
val useAltNotifAction: Boolean
get() = inner.getBoolean(context.getString(R.string.set_key_alt_notif_action), 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
get() = inner.getBoolean(context.getString(R.string.set_key_headset_autoplay), false) get() = inner.getBoolean(context.getString(R.string.set_key_headset_autoplay), false)
@ -131,7 +138,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
val replayGainMode: ReplayGainMode val replayGainMode: ReplayGainMode
get() = get() =
ReplayGainMode.fromIntCode( ReplayGainMode.fromIntCode(
inner.getInt(context.getString(R.string.set_key_replay_gain), Int.MIN_VALUE)) inner.getInt(context.getString(R.string.set_key_replay_gain), -1))
?: ReplayGainMode.OFF ?: ReplayGainMode.OFF
/** The current ReplayGain pre-amp configuration */ /** The current ReplayGain pre-amp configuration */
@ -152,8 +159,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
val libPlaybackMode: PlaybackMode val libPlaybackMode: PlaybackMode
get() = get() =
PlaybackMode.fromInt( PlaybackMode.fromInt(
inner.getInt( inner.getInt(context.getString(R.string.set_key_library_song_playback_mode), -1))
context.getString(R.string.set_key_library_song_playback_mode), Int.MIN_VALUE))
?: PlaybackMode.ALL_SONGS ?: PlaybackMode.ALL_SONGS
/** /**
@ -163,8 +169,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
val detailPlaybackMode: PlaybackMode? val detailPlaybackMode: PlaybackMode?
get() = get() =
PlaybackMode.fromInt( PlaybackMode.fromInt(
inner.getInt( inner.getInt(context.getString(R.string.set_key_detail_song_playback_mode), -1))
context.getString(R.string.set_key_detail_song_playback_mode), Int.MIN_VALUE))
/** Whether shuffle should stay on when a new song is selected. */ /** Whether shuffle should stay on when a new song is selected. */
val keepShuffle: Boolean val keepShuffle: Boolean
@ -214,14 +219,11 @@ class Settings(private val context: Context, private val callback: Callback? = n
/** The current filter mode of the search tab */ /** The current filter mode of the search tab */
var searchFilterMode: DisplayMode? var searchFilterMode: DisplayMode?
get() = get() =
DisplayMode.fromInt( DisplayMode.fromInt(inner.getInt(context.getString(R.string.set_key_search_filter), -1))
inner.getInt(context.getString(R.string.set_key_search_filter), Int.MIN_VALUE))
set(value) { set(value) {
logD(value) logD(value)
inner.edit { inner.edit {
putInt( putInt(context.getString(R.string.set_key_search_filter), value?.intCode ?: -1)
context.getString(R.string.set_key_search_filter),
value?.intCode ?: Int.MIN_VALUE)
apply() apply()
} }
} }
@ -229,8 +231,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
/** The song sort mode on HomeFragment */ /** The song sort mode on HomeFragment */
var libSongSort: Sort var libSongSort: Sort
get() = get() =
Sort.fromIntCode( Sort.fromIntCode(inner.getInt(context.getString(R.string.set_key_lib_songs_sort), -1))
inner.getInt(context.getString(R.string.set_key_lib_songs_sort), Int.MIN_VALUE))
?: Sort(Sort.Mode.ByName, true) ?: Sort(Sort.Mode.ByName, true)
set(value) { set(value) {
inner.edit { inner.edit {
@ -242,8 +243,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
/** The album sort mode on HomeFragment */ /** The album sort mode on HomeFragment */
var libAlbumSort: Sort var libAlbumSort: Sort
get() = get() =
Sort.fromIntCode( Sort.fromIntCode(inner.getInt(context.getString(R.string.set_key_lib_albums_sort), -1))
inner.getInt(context.getString(R.string.set_key_lib_albums_sort), Int.MIN_VALUE))
?: Sort(Sort.Mode.ByName, true) ?: Sort(Sort.Mode.ByName, true)
set(value) { set(value) {
inner.edit { inner.edit {
@ -255,8 +255,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
/** The artist sort mode on HomeFragment */ /** The artist sort mode on HomeFragment */
var libArtistSort: Sort var libArtistSort: Sort
get() = get() =
Sort.fromIntCode( Sort.fromIntCode(inner.getInt(context.getString(R.string.set_key_lib_artists_sort), -1))
inner.getInt(context.getString(R.string.set_key_lib_artists_sort), Int.MIN_VALUE))
?: Sort(Sort.Mode.ByName, true) ?: Sort(Sort.Mode.ByName, true)
set(value) { set(value) {
inner.edit { inner.edit {
@ -268,8 +267,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
/** The genre sort mode on HomeFragment */ /** The genre sort mode on HomeFragment */
var libGenreSort: Sort var libGenreSort: Sort
get() = get() =
Sort.fromIntCode( Sort.fromIntCode(inner.getInt(context.getString(R.string.set_key_lib_genres_sort), -1))
inner.getInt(context.getString(R.string.set_key_lib_genres_sort), Int.MIN_VALUE))
?: Sort(Sort.Mode.ByName, true) ?: Sort(Sort.Mode.ByName, true)
set(value) { set(value) {
inner.edit { inner.edit {
@ -283,8 +281,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
get() { get() {
var sort = var sort =
Sort.fromIntCode( Sort.fromIntCode(
inner.getInt( inner.getInt(context.getString(R.string.set_key_detail_album_sort), -1))
context.getString(R.string.set_key_detail_album_sort), Int.MIN_VALUE))
?: Sort(Sort.Mode.ByDisc, true) ?: Sort(Sort.Mode.ByDisc, true)
// Correct legacy album sort modes to Disc // Correct legacy album sort modes to Disc
@ -305,7 +302,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
var detailArtistSort: Sort var detailArtistSort: Sort
get() = get() =
Sort.fromIntCode( Sort.fromIntCode(
inner.getInt(context.getString(R.string.set_key_detail_artist_sort), Int.MIN_VALUE)) inner.getInt(context.getString(R.string.set_key_detail_artist_sort), -1))
?: Sort(Sort.Mode.ByYear, false) ?: Sort(Sort.Mode.ByYear, false)
set(value) { set(value) {
inner.edit { inner.edit {
@ -318,7 +315,7 @@ class Settings(private val context: Context, private val callback: Callback? = n
var detailGenreSort: Sort var detailGenreSort: Sort
get() = get() =
Sort.fromIntCode( Sort.fromIntCode(
inner.getInt(context.getString(R.string.set_key_detail_genre_sort), Int.MIN_VALUE)) inner.getInt(context.getString(R.string.set_key_detail_genre_sort), -1))
?: Sort(Sort.Mode.ByName, true) ?: Sort(Sort.Mode.ByName, true)
set(value) { set(value) {
inner.edit { inner.edit {

View file

@ -57,7 +57,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<Button <com.google.android.material.button.MaterialButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Auxio.Button.Icon.Small" style="@style/Widget.Auxio.Button.Icon.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -65,13 +65,12 @@
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
app:icon="@drawable/sel_playing_state_24" /> app:icon="@drawable/sel_playing_state_24" />
<Button <com.google.android.material.button.MaterialButton
android:id="@+id/playback_skip_next" android:id="@+id/playback_secondary_action"
style="@style/Widget.Auxio.Button.Icon.Small" style="@style/Widget.Auxio.Button.Icon.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_play_pause" tools:icon="@drawable/ic_skip_next_24" />
app:icon="@drawable/ic_skip_next_24" />
</LinearLayout> </LinearLayout>
</org.oxycblt.auxio.playback.ForcedLTRFrameLayout> </org.oxycblt.auxio.playback.ForcedLTRFrameLayout>

View file

@ -97,7 +97,7 @@
<string name="set_repeat_pause_desc">ايقاف مؤقت عند تكرار تشغيل اغنية</string> <string name="set_repeat_pause_desc">ايقاف مؤقت عند تكرار تشغيل اغنية</string>
<string name="set_content">محتوى</string> <string name="set_content">محتوى</string>
<string name="set_save">حفظ حالة التشغيل</string> <string name="set_save_state">حفظ حالة التشغيل</string>
<string name="set_save_desc">حفظ حالة التشغيل الحالية الآن</string> <string name="set_save_desc">حفظ حالة التشغيل الحالية الآن</string>
<!-- Error Namespace | Error Labels --> <!-- Error Namespace | Error Labels -->

View file

@ -98,7 +98,7 @@
<string name="set_repeat_pause">Pozastavit při opakování</string> <string name="set_repeat_pause">Pozastavit při opakování</string>
<string name="set_repeat_pause_desc">Pozastavit při opakování skladby</string> <string name="set_repeat_pause_desc">Pozastavit při opakování skladby</string>
<string name="set_content">Obsah</string> <string name="set_content">Obsah</string>
<string name="set_save">Uložit stav přehrávání</string> <string name="set_save_state">Uložit stav přehrávání</string>
<string name="set_save_desc">Uložit aktuální stav přehrávání</string> <string name="set_save_desc">Uložit aktuální stav přehrávání</string>
<string name="set_reindex">Znovu načíst hudbu</string> <string name="set_reindex">Znovu načíst hudbu</string>
<string name="set_reindex_desc">Může vymazat stav přehrávání</string> <string name="set_reindex_desc">Může vymazat stav přehrávání</string>
@ -207,7 +207,7 @@
<string name="set_dirs">Hudební složky</string> <string name="set_dirs">Hudební složky</string>
<string name="set_quality_tags">Ignorovat štítky MediaStore</string> <string name="set_quality_tags">Ignorovat štítky MediaStore</string>
<string name="set_quality_tags_desc">Zvýší kvalitu štítků, ale má za následek delší načítací čas (experimentální)</string> <string name="set_quality_tags_desc">Zvýší kvalitu štítků, ale má za následek delší načítací čas (experimentální)</string>
<string name="set_restore">Obnovit stav přehrávání</string> <string name="set_restore_state">Obnovit stav přehrávání</string>
<string name="lng_state_restored">Stav obnoven</string> <string name="lng_state_restored">Stav obnoven</string>
<string name="set_restore_desc">Obnovit dříve uložený stav přehrávání (pokud existuje)</string> <string name="set_restore_desc">Obnovit dříve uložený stav přehrávání (pokud existuje)</string>
<string name="err_did_not_restore">Nemohl být obnoven žádný stav</string> <string name="err_did_not_restore">Nemohl být obnoven žádný stav</string>
@ -235,7 +235,7 @@
<string name="lbl_album_remix">Remixové album</string> <string name="lbl_album_remix">Remixové album</string>
<string name="lbl_ep_live">Živé EP</string> <string name="lbl_ep_live">Živé EP</string>
<string name="lbl_ep_remix">Remixové EP</string> <string name="lbl_ep_remix">Remixové EP</string>
<string name="set_wipe">Vymazat stav přehrávání</string> <string name="set_wipe_state">Vymazat stav přehrávání</string>
<string name="set_wipe_desc">Vymazat dříve uložený stav přehrávání (pokud existuje)</string> <string name="set_wipe_desc">Vymazat dříve uložený stav přehrávání (pokud existuje)</string>
<string name="lng_state_wiped">Stav vymazán</string> <string name="lng_state_wiped">Stav vymazán</string>
<string name="desc_queue_bar">Otevřít frontu</string> <string name="desc_queue_bar">Otevřít frontu</string>

View file

@ -74,7 +74,7 @@
<string name="set_rewind_prev" tools:ignore="Typos">Zurückspulen, bevor das Lied zurück geändert wird</string> <string name="set_rewind_prev" tools:ignore="Typos">Zurückspulen, bevor das Lied zurück geändert wird</string>
<string name="set_rewind_prev_desc">Zurückspulen, bevor zum vorheriger Lied gewechselt wird</string> <string name="set_rewind_prev_desc">Zurückspulen, bevor zum vorheriger Lied gewechselt wird</string>
<string name="set_content">Inhalt</string> <string name="set_content">Inhalt</string>
<string name="set_save">Wiedergabezustand speichern</string> <string name="set_save_state">Wiedergabezustand speichern</string>
<string name="set_save_desc">Den aktuellen Wiedergabezustand speichern</string> <string name="set_save_desc">Den aktuellen Wiedergabezustand speichern</string>
<string name="set_reindex">Musik neu laden</string> <string name="set_reindex">Musik neu laden</string>
<string name="set_reindex_desc">Könnte den Wiedergabezustand löschen</string> <string name="set_reindex_desc">Könnte den Wiedergabezustand löschen</string>
@ -218,7 +218,7 @@
<string name="lbl_compilation">Kompilation</string> <string name="lbl_compilation">Kompilation</string>
<string name="lbl_soundtrack">Soundtrack</string> <string name="lbl_soundtrack">Soundtrack</string>
<string name="lbl_soundtracks">Soundtracks</string> <string name="lbl_soundtracks">Soundtracks</string>
<string name="set_restore">Wiedergabezustand wiederherstellen</string> <string name="set_restore_state">Wiedergabezustand wiederherstellen</string>
<string name="lbl_album_remix">Remix-Album</string> <string name="lbl_album_remix">Remix-Album</string>
<string name="lbl_mixtapes">Mixtapes</string> <string name="lbl_mixtapes">Mixtapes</string>
<string name="lbl_mixtape">Mixtape</string> <string name="lbl_mixtape">Mixtape</string>
@ -231,5 +231,5 @@
<string name="lbl_live_group">Live</string> <string name="lbl_live_group">Live</string>
<string name="set_wipe_desc">Den vorher gespeicherten Wiedergabezustand löschen (wenn vorhanden)</string> <string name="set_wipe_desc">Den vorher gespeicherten Wiedergabezustand löschen (wenn vorhanden)</string>
<string name="lng_state_wiped">Zustand gelöscht</string> <string name="lng_state_wiped">Zustand gelöscht</string>
<string name="set_wipe">Wiedergabezustand löschen</string> <string name="set_wipe_state">Wiedergabezustand löschen</string>
</resources> </resources>

View file

@ -81,7 +81,7 @@
<string name="set_repeat_pause">Pausa en repetición</string> <string name="set_repeat_pause">Pausa en repetición</string>
<string name="set_repeat_pause_desc">Pausa cuando se repite una canción</string> <string name="set_repeat_pause_desc">Pausa cuando se repite una canción</string>
<string name="set_content">Contenido</string> <string name="set_content">Contenido</string>
<string name="set_save">Guardar estado de reproducción</string> <string name="set_save_state">Guardar estado de reproducción</string>
<string name="set_save_desc">Guardar el estado de reproduccion ahora</string> <string name="set_save_desc">Guardar el estado de reproduccion ahora</string>
<string name="set_reindex">Recargar música</string> <string name="set_reindex">Recargar música</string>
<string name="set_reindex_desc">Puede borrar el estado de reproducción</string> <string name="set_reindex_desc">Puede borrar el estado de reproducción</string>
@ -187,7 +187,7 @@
<string name="lbl_sample_rate">Frecuencia de muestreo</string> <string name="lbl_sample_rate">Frecuencia de muestreo</string>
<string name="lbl_cancel">\@android:string/cancel</string> <string name="lbl_cancel">\@android:string/cancel</string>
<string name="set_headset_autoplay">Reproducción automática con auriculares</string> <string name="set_headset_autoplay">Reproducción automática con auriculares</string>
<string name="set_restore">Reestablecer el estado de reproducción</string> <string name="set_restore_state">Reestablecer el estado de reproducción</string>
<string name="set_restore_desc">Reestablecer el estado de reproducción guardado previamente (si existe)</string> <string name="set_restore_desc">Reestablecer el estado de reproducción guardado previamente (si existe)</string>
<string name="set_dirs">Carpetas de música</string> <string name="set_dirs">Carpetas de música</string>
<string name="set_quality_tags">Ignorar etiquetas MediaStore</string> <string name="set_quality_tags">Ignorar etiquetas MediaStore</string>

View file

@ -216,13 +216,13 @@
<string name="desc_play_pause">Reproduciraj ili pauziraj</string> <string name="desc_play_pause">Reproduciraj ili pauziraj</string>
<string name="set_repeat_pause">Pauziraj na ponavljanje</string> <string name="set_repeat_pause">Pauziraj na ponavljanje</string>
<string name="set_content">Sadržaj</string> <string name="set_content">Sadržaj</string>
<string name="set_save">Spremi stanje reprodukcije</string> <string name="set_save_state">Spremi stanje reprodukcije</string>
<string name="set_restore">Vrati stanje reprodukcije</string> <string name="set_restore_state">Vrati stanje reprodukcije</string>
<string name="desc_skip_prev">Preskoči na prethodnu pjesmu</string> <string name="desc_skip_prev">Preskoči na prethodnu pjesmu</string>
<string name="desc_change_repeat">Promijeni način ponavljanja</string> <string name="desc_change_repeat">Promijeni način ponavljanja</string>
<string name="clr_purple">Ljubičasto</string> <string name="clr_purple">Ljubičasto</string>
<string name="cdc_mka">Matroska Zvuk</string> <string name="cdc_mka">Matroska Zvuk</string>
<string name="set_wipe">Izbriši stanje reprodukcije</string> <string name="set_wipe_state">Izbriši stanje reprodukcije</string>
<string name="lng_state_wiped">Stanje izbrisano</string> <string name="lng_state_wiped">Stanje izbrisano</string>
<string name="set_wipe_desc">Izbriši prethodno stanje reprodukcije (ako postoji)</string> <string name="set_wipe_desc">Izbriši prethodno stanje reprodukcije (ako postoji)</string>
</resources> </resources>

View file

@ -111,7 +111,7 @@
<string name="set_rewind_prev_desc">Putar mundur sebelum melompat ke lagu sebelumnya</string> <string name="set_rewind_prev_desc">Putar mundur sebelum melompat ke lagu sebelumnya</string>
<string name="set_repeat_pause_desc">Jeda saat lagu diulang</string> <string name="set_repeat_pause_desc">Jeda saat lagu diulang</string>
<string name="set_content">Konten</string> <string name="set_content">Konten</string>
<string name="set_save">Simpan status pemutaran</string> <string name="set_save_state">Simpan status pemutaran</string>
<string name="set_save_desc">Simpan status pemutaran saat ini sekarang</string> <string name="set_save_desc">Simpan status pemutaran saat ini sekarang</string>
<string name="set_reindex">Muat ulang musik</string> <string name="set_reindex">Muat ulang musik</string>
<string name="set_reindex_desc">Akan memulai ulang aplikasi</string> <string name="set_reindex_desc">Akan memulai ulang aplikasi</string>

View file

@ -83,7 +83,7 @@
<string name="set_repeat_pause">Pausa alla ripetizione</string> <string name="set_repeat_pause">Pausa alla ripetizione</string>
<string name="set_repeat_pause_desc">Pausa quando una canzone si ripete</string> <string name="set_repeat_pause_desc">Pausa quando una canzone si ripete</string>
<string name="set_content">Contenuti</string> <string name="set_content">Contenuti</string>
<string name="set_save">Salva stato riproduzione</string> <string name="set_save_state">Salva stato riproduzione</string>
<string name="set_save_desc">Salva lo stato di riproduzione corrente</string> <string name="set_save_desc">Salva lo stato di riproduzione corrente</string>
<string name="set_reindex">Ricarica musica</string> <string name="set_reindex">Ricarica musica</string>
<string name="set_reindex_desc">Potrebbe cancellare lo stato di riproduzione</string> <string name="set_reindex_desc">Potrebbe cancellare lo stato di riproduzione</string>
@ -208,7 +208,7 @@
<string name="set_observing">Ricaricamento automatico</string> <string name="set_observing">Ricaricamento automatico</string>
<string name="set_quality_tags">Ignora tags MediaStore</string> <string name="set_quality_tags">Ignora tags MediaStore</string>
<string name="set_quality_tags_desc">Migliora qualità dei tag, ma potrebbe richiedere tempi di carimento più lunghi (sperimentale)</string> <string name="set_quality_tags_desc">Migliora qualità dei tag, ma potrebbe richiedere tempi di carimento più lunghi (sperimentale)</string>
<string name="set_restore">Ripristina stato riproduzione</string> <string name="set_restore_state">Ripristina stato riproduzione</string>
<string name="set_restore_desc">Ripristina lo stato di riproduzione precedentemente salvato (se disponibile)</string> <string name="set_restore_desc">Ripristina lo stato di riproduzione precedentemente salvato (se disponibile)</string>
<string name="err_did_not_restore">Impossibile ripristinare lo stato</string> <string name="err_did_not_restore">Impossibile ripristinare lo stato</string>
<string name="lbl_eps">EP</string> <string name="lbl_eps">EP</string>

View file

@ -111,7 +111,7 @@
<string name="set_repeat_pause_desc">곡이 반복 재생될 때 일시 중지</string> <string name="set_repeat_pause_desc">곡이 반복 재생될 때 일시 중지</string>
<string name="set_content">내용</string> <string name="set_content">내용</string>
<string name="set_save">재생 상태 저장</string> <string name="set_save_state">재생 상태 저장</string>
<string name="set_save_desc">현재 재생 상태를 지금 저장</string> <string name="set_save_desc">현재 재생 상태를 지금 저장</string>
<string name="set_reindex">음악 다시 불러오기</string> <string name="set_reindex">음악 다시 불러오기</string>
<string name="set_reindex_desc">앱이 다시 시작됩니다.</string> <string name="set_reindex_desc">앱이 다시 시작됩니다.</string>

View file

@ -63,7 +63,7 @@
<string name="set_rewind_prev">Terugspoelen voordat je terugspoelt</string> <string name="set_rewind_prev">Terugspoelen voordat je terugspoelt</string>
<string name="set_rewind_prev_desc">Terugspoelen voordat u naar het vorige nummer gaat</string> <string name="set_rewind_prev_desc">Terugspoelen voordat u naar het vorige nummer gaat</string>
<string name="set_content">Inhoud</string> <string name="set_content">Inhoud</string>
<string name="set_save">Afspeelstatus opslaan</string> <string name="set_save_state">Afspeelstatus opslaan</string>
<string name="set_save_desc">Sla de huidige afspeelstatus nu op </string> <string name="set_save_desc">Sla de huidige afspeelstatus nu op </string>
<!-- Error Namespace | Error Labels --> <!-- Error Namespace | Error Labels -->
<string name="err_no_music">Geen muziek aangetroffen</string> <string name="err_no_music">Geen muziek aangetroffen</string>
@ -170,7 +170,7 @@
<string name="set_replay_gain">ReplayGain</string> <string name="set_replay_gain">ReplayGain</string>
<string name="set_pre_amp_warning">Waarschuwing: Als u de voorversterker op een hoge positieve waarde zet, kan dit bij sommige audiotracks tot pieken leiden.</string> <string name="set_pre_amp_warning">Waarschuwing: Als u de voorversterker op een hoge positieve waarde zet, kan dit bij sommige audiotracks tot pieken leiden.</string>
<string name="set_playback_mode_none">Afspelen vanaf getoond item</string> <string name="set_playback_mode_none">Afspelen vanaf getoond item</string>
<string name="set_restore">Afspeelstatus herstellen</string> <string name="set_restore_state">Afspeelstatus herstellen</string>
<string name="set_restore_desc">Herstel de eerder opgeslagen afspeelstatus (indien aanwezig)</string> <string name="set_restore_desc">Herstel de eerder opgeslagen afspeelstatus (indien aanwezig)</string>
<string name="set_quality_tags">MediaStore tags negeren</string> <string name="set_quality_tags">MediaStore tags negeren</string>
<string name="set_quality_tags_desc">Verhoogt tag-kwaliteit, maar vereist langere laadtijden</string> <string name="set_quality_tags_desc">Verhoogt tag-kwaliteit, maar vereist langere laadtijden</string>

View file

@ -83,7 +83,7 @@
<string name="set_repeat_pause">Пауза при повторе</string> <string name="set_repeat_pause">Пауза при повторе</string>
<string name="set_repeat_pause_desc">Ставить на паузу при повторе трека</string> <string name="set_repeat_pause_desc">Ставить на паузу при повторе трека</string>
<string name="set_content">Библиотека</string> <string name="set_content">Библиотека</string>
<string name="set_save">Запоминать позицию</string> <string name="set_save_state">Запоминать позицию</string>
<string name="set_save_desc">Запоминать позицию в треке</string> <string name="set_save_desc">Запоминать позицию в треке</string>
<string name="set_reindex">Перезагрузить музыку</string> <string name="set_reindex">Перезагрузить музыку</string>
<string name="set_reindex_desc">Это перезапустит приложение</string> <string name="set_reindex_desc">Это перезапустит приложение</string>
@ -173,7 +173,7 @@
<string name="lbl_sample_rate">Частота дискретизации</string> <string name="lbl_sample_rate">Частота дискретизации</string>
<string name="set_pre_amp_desc">Предусилитель применяется к существующей настройке во время воспроизведения</string> <string name="set_pre_amp_desc">Предусилитель применяется к существующей настройке во время воспроизведения</string>
<string name="lbl_library_counts">Статистика библиотеки</string> <string name="lbl_library_counts">Статистика библиотеки</string>
<string name="set_restore">Восстановить состояние воспроизведения</string> <string name="set_restore_state">Восстановить состояние воспроизведения</string>
<string name="lbl_sort_duration">Продолжительность</string> <string name="lbl_sort_duration">Продолжительность</string>
<string name="lbl_file_name">Имя файла</string> <string name="lbl_file_name">Имя файла</string>
<string name="lbl_ep">Мини-альбом</string> <string name="lbl_ep">Мини-альбом</string>

View file

@ -160,7 +160,7 @@
<string name="set_rewind_prev_desc">Önceki şarkıya atlamadan önce geri sar</string> <string name="set_rewind_prev_desc">Önceki şarkıya atlamadan önce geri sar</string>
<string name="set_repeat_pause_desc">Bir şarkı tekrarlandığında duraklat</string> <string name="set_repeat_pause_desc">Bir şarkı tekrarlandığında duraklat</string>
<string name="set_content">İçerik</string> <string name="set_content">İçerik</string>
<string name="set_save">Çalma durumunu kaydet</string> <string name="set_save_state">Çalma durumunu kaydet</string>
<string name="set_save_desc">Mevcut çalma durumunu şimdi kaydet</string> <string name="set_save_desc">Mevcut çalma durumunu şimdi kaydet</string>
<string name="set_keep_shuffle">Karıştırmayı hatırla</string> <string name="set_keep_shuffle">Karıştırmayı hatırla</string>
<string name="set_keep_shuffle_desc">Yeni bir şarkı çalarken karışık çalmayıık tut</string> <string name="set_keep_shuffle_desc">Yeni bir şarkı çalarken karışık çalmayıık tut</string>
@ -194,7 +194,7 @@
<string name="lng_state_restored">Durum geri yüklendi</string> <string name="lng_state_restored">Durum geri yüklendi</string>
<string name="set_restore_desc">Önceden kaydedilmiş oynatma durumunu geri getirir (varsa)</string> <string name="set_restore_desc">Önceden kaydedilmiş oynatma durumunu geri getirir (varsa)</string>
<string name="set_round_mode">Yuvarlak mod</string> <string name="set_round_mode">Yuvarlak mod</string>
<string name="set_restore">Oynatma durumunu eski haline getir</string> <string name="set_restore_state">Oynatma durumunu eski haline getir</string>
<string name="set_quality_tags">MediaStore etiketlerini yoksay</string> <string name="set_quality_tags">MediaStore etiketlerini yoksay</string>
<string name="set_quality_tags_desc">Etiket kalitesini artırır, ancak daha uzun yükleme süreleri gerektirir</string> <string name="set_quality_tags_desc">Etiket kalitesini artırır, ancak daha uzun yükleme süreleri gerektirir</string>
<string name="err_did_not_restore">Hiçbir durum geri getirelemedi</string> <string name="err_did_not_restore">Hiçbir durum geri getirelemedi</string>

View file

@ -82,7 +82,7 @@
<string name="set_repeat_pause">重复播放前暂停</string> <string name="set_repeat_pause">重复播放前暂停</string>
<string name="set_repeat_pause_desc">曲目重复播放前暂停</string> <string name="set_repeat_pause_desc">曲目重复播放前暂停</string>
<string name="set_content">内容</string> <string name="set_content">内容</string>
<string name="set_save">保存播放状态</string> <string name="set_save_state">保存播放状态</string>
<string name="set_save_desc">立即保存当前播放状态</string> <string name="set_save_desc">立即保存当前播放状态</string>
<string name="set_reindex">重新加载音乐</string> <string name="set_reindex">重新加载音乐</string>
<string name="set_reindex_desc">将会重启应用</string> <string name="set_reindex_desc">将会重启应用</string>

View file

@ -11,6 +11,7 @@
<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_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_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>
@ -63,55 +64,71 @@
<item>@integer/theme_dark</item> <item>@integer/theme_dark</item>
</integer-array> </integer-array>
<array name="entries_library_song_playback_mode"> <string-array name="entries_bar_action">
<item>@string/set_bar_action_next</item>
<item>@string/set_bar_action_repeat</item>
<item>@string/set_bar_action_shuffle</item>
</string-array>
<integer-array name="values_bar_action">
<item>@integer/bar_action_next</item>
<item>@integer/bar_action_repeat</item>
<item>@integer/bar_action_shuffle</item>
</integer-array>
<string-array name="entries_library_song_playback_mode">
<item>@string/set_playback_mode_all</item> <item>@string/set_playback_mode_all</item>
<item>@string/set_playback_mode_artist</item> <item>@string/set_playback_mode_artist</item>
<item>@string/set_playback_mode_album</item> <item>@string/set_playback_mode_album</item>
<item>@string/set_playback_mode_genre</item> <item>@string/set_playback_mode_genre</item>
</array> </string-array>
<string-array name="values_library_song_playback_mode"> <integer-array name="values_library_song_playback_mode">
<item>@integer/play_mode_songs</item> <item>@integer/play_mode_songs</item>
<item>@integer/play_mode_artist</item> <item>@integer/play_mode_artist</item>
<item>@integer/play_mode_album</item> <item>@integer/play_mode_album</item>
<item>@integer/play_mode_genre</item> <item>@integer/play_mode_genre</item>
</string-array> </integer-array>
<array name="entries_detail_song_playback_mode"> <string-array name="entries_detail_song_playback_mode">
<item>@string/set_playback_mode_none</item> <item>@string/set_playback_mode_none</item>
<item>@string/set_playback_mode_all</item> <item>@string/set_playback_mode_all</item>
<item>@string/set_playback_mode_artist</item> <item>@string/set_playback_mode_artist</item>
<item>@string/set_playback_mode_album</item> <item>@string/set_playback_mode_album</item>
<item>@string/set_playback_mode_genre</item> <item>@string/set_playback_mode_genre</item>
</array> </string-array>
<string-array name="values_detail_song_playback_mode"> <integer-array name="values_detail_song_playback_mode">
<item>@integer/play_mode_none</item> <item>@integer/play_mode_none</item>
<item>@integer/play_mode_songs</item> <item>@integer/play_mode_songs</item>
<item>@integer/play_mode_artist</item> <item>@integer/play_mode_artist</item>
<item>@integer/play_mode_album</item> <item>@integer/play_mode_album</item>
<item>@integer/play_mode_genre</item> <item>@integer/play_mode_genre</item>
</string-array> </integer-array>
<array name="entries_replay_gain"> <string-array name="entries_replay_gain">
<item>@string/lbl_off</item> <item>@string/lbl_off</item>
<item>@string/set_replay_gain_track</item> <item>@string/set_replay_gain_track</item>
<item>@string/set_replay_gain_album</item> <item>@string/set_replay_gain_album</item>
<item>@string/set_replay_gain_dynamic</item> <item>@string/set_replay_gain_dynamic</item>
</array> </string-array>
<string-array name="values_replay_gain"> <integer-array name="values_replay_gain">
<item>@integer/replay_gain_off</item> <item>@integer/replay_gain_off</item>
<item>@integer/replay_gain_track</item> <item>@integer/replay_gain_track</item>
<item>@integer/replay_gain_album</item> <item>@integer/replay_gain_album</item>
<item>@integer/replay_gain_dynamic</item> <item>@integer/replay_gain_dynamic</item>
</string-array> </integer-array>
<integer name="theme_auto">-1</integer> <integer name="theme_auto">-1</integer>
<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="play_mode_none">-2147483648</integer> <integer name="bar_action_next">0xA119</integer>
<integer name="bar_action_repeat">0xA11A</integer>
<integer name="bar_action_shuffle">0xA11B</integer>
<integer name="play_mode_none">-1</integer>
<integer name="play_mode_genre">0xA103</integer> <integer name="play_mode_genre">0xA103</integer>
<integer name="play_mode_artist">0xA104</integer> <integer name="play_mode_artist">0xA104</integer>
<integer name="play_mode_album">0xA105</integer> <integer name="play_mode_album">0xA105</integer>

View file

@ -158,6 +158,10 @@
<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_mode">Round mode</string> <string name="set_round_mode">Round mode</string>
<string name="set_round_mode_desc">Enable rounded corners on additional UI elements (Requires album covers to be rounded)</string> <string name="set_round_mode_desc">Enable rounded corners on additional UI elements (Requires album covers to be rounded)</string>
<string name="set_bar_action">Playback bar action</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_shuffle">@string/lbl_shuffle</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>
@ -191,11 +195,11 @@
<string name="set_repeat_pause_desc">Pause when a song repeats</string> <string name="set_repeat_pause_desc">Pause when a song repeats</string>
<string name="set_content">Content</string> <string name="set_content">Content</string>
<string name="set_save">Save playback state</string> <string name="set_save_state">Save playback state</string>
<string name="set_save_desc">Save the current playback state now</string> <string name="set_save_desc">Save the current playback state now</string>
<string name="set_wipe">Clear playback state</string> <string name="set_wipe_state">Clear playback state</string>
<string name="set_wipe_desc">Clear the previously saved playback state (if any)</string> <string name="set_wipe_desc">Clear the previously saved playback state (if any)</string>
<string name="set_restore">Restore playback state</string> <string name="set_restore_state">Restore playback state</string>
<string name="set_restore_desc">Restore the previously saved playback state (if any)</string> <string name="set_restore_desc">Restore the previously saved playback state (if any)</string>
<string name="set_reindex">Reload music</string> <string name="set_reindex">Reload music</string>
<string name="set_reindex_desc">May wipe playback state</string> <string name="set_reindex_desc">May wipe playback state</string>

View file

@ -51,6 +51,13 @@
app:summary="@string/set_round_mode_desc" app:summary="@string/set_round_mode_desc"
app:title="@string/set_round_mode" /> app:title="@string/set_round_mode" />
<org.oxycblt.auxio.settings.ui.IntListPreference
app:entries="@array/entries_bar_action"
app:entryValues="@array/values_bar_action"
app:defaultValue="@integer/bar_action_next"
app:key="@string/set_key_bar_action"
app:title="@string/set_bar_action" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
app:defaultValue="false" app:defaultValue="false"
app:key="@string/set_key_alt_notif_action" app:key="@string/set_key_alt_notif_action"
@ -126,17 +133,17 @@
<Preference <Preference
app:key="@string/set_key_save_state" app:key="@string/set_key_save_state"
app:summary="@string/set_save_desc" app:summary="@string/set_save_desc"
app:title="@string/set_save" /> app:title="@string/set_save_state" />
<Preference <Preference
app:key="@string/set_key_wipe_state" app:key="@string/set_key_wipe_state"
app:summary="@string/set_wipe_desc" app:summary="@string/set_wipe_desc"
app:title="@string/set_wipe" /> app:title="@string/set_wipe_state" />
<Preference <Preference
app:key="@string/set_key_restore_state" app:key="@string/set_key_restore_state"
app:summary="@string/set_restore_desc" app:summary="@string/set_restore_desc"
app:title="@string/set_restore" /> app:title="@string/set_restore_state" />
<Preference <Preference
app:key="@string/set_key_reindex" app:key="@string/set_key_reindex"