Update loop behavior [Resolves #13]
Change the loop behavior to something that is actually sensible, with [ ] looping the whole playlist and [ 1 ] looping the song. This also removes the "Do on end" setting. A new stop option may be reintroduced, however. This resolves issue #13.
This commit is contained in:
parent
2b047f0d2c
commit
f2445e56f2
29 changed files with 33 additions and 166 deletions
|
@ -106,16 +106,16 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener {
|
||||||
binding.playbackLoop.setImageResource(R.drawable.ic_loop)
|
binding.playbackLoop.setImageResource(R.drawable.ic_loop)
|
||||||
}
|
}
|
||||||
|
|
||||||
LoopMode.ONCE -> {
|
LoopMode.ALL -> {
|
||||||
binding.playbackLoop.imageTintList = accentColor
|
|
||||||
binding.playbackLoop.setImageResource(R.drawable.ic_loop_one)
|
|
||||||
}
|
|
||||||
|
|
||||||
LoopMode.INFINITE -> {
|
|
||||||
binding.playbackLoop.imageTintList = accentColor
|
binding.playbackLoop.imageTintList = accentColor
|
||||||
binding.playbackLoop.setImageResource(R.drawable.ic_loop)
|
binding.playbackLoop.setImageResource(R.drawable.ic_loop)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoopMode.TRACK -> {
|
||||||
|
binding.playbackLoop.imageTintList = accentColor
|
||||||
|
binding.playbackLoop.setImageResource(R.drawable.ic_loop_one)
|
||||||
|
}
|
||||||
|
|
||||||
else -> return@observe
|
else -> return@observe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,16 +5,16 @@ package org.oxycblt.auxio.playback.state
|
||||||
* @author OxygenCobalt
|
* @author OxygenCobalt
|
||||||
*/
|
*/
|
||||||
enum class LoopMode {
|
enum class LoopMode {
|
||||||
NONE, ONCE, INFINITE;
|
NONE, ALL, TRACK;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increment the LoopMode, e.g from [NONE] to [ONCE]
|
* Increment the LoopMode, e.g from [NONE] to [ALL]
|
||||||
*/
|
*/
|
||||||
fun increment(): LoopMode {
|
fun increment(): LoopMode {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
NONE -> ONCE
|
NONE -> ALL
|
||||||
ONCE -> INFINITE
|
ALL -> TRACK
|
||||||
INFINITE -> NONE
|
TRACK -> NONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,25 +25,24 @@ enum class LoopMode {
|
||||||
fun toInt(): Int {
|
fun toInt(): Int {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
NONE -> CONST_NONE
|
NONE -> CONST_NONE
|
||||||
ONCE -> CONST_ONCE
|
ALL -> CONST_ALL
|
||||||
INFINITE -> CONST_INFINITE
|
TRACK -> CONST_TRACK
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val CONST_NONE = 0xA100
|
const val CONST_NONE = 0xA100
|
||||||
const val CONST_ONCE = 0xA101
|
const val CONST_ALL = 0xA101
|
||||||
const val CONST_INFINITE = 0xA102
|
const val CONST_TRACK = 0xA102
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert an int [constant] into a LoopMode
|
* Convert an int [constant] into a LoopMode, or null if it isnt valid.
|
||||||
* @return The corresponding LoopMode. Null if it corresponds to nothing.
|
|
||||||
*/
|
*/
|
||||||
fun fromInt(constant: Int): LoopMode? {
|
fun fromInt(constant: Int): LoopMode? {
|
||||||
return when (constant) {
|
return when (constant) {
|
||||||
CONST_NONE -> NONE
|
CONST_NONE -> NONE
|
||||||
CONST_ONCE -> ONCE
|
CONST_ALL -> ALL
|
||||||
CONST_INFINITE -> INFINITE
|
CONST_TRACK -> TRACK
|
||||||
|
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,5 @@ enum class PlaybackMode {
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -235,17 +235,13 @@ class PlaybackStateManager private constructor() {
|
||||||
/**
|
/**
|
||||||
* Update the playback to a new [song], doing all the required logic.
|
* Update the playback to a new [song], doing all the required logic.
|
||||||
*/
|
*/
|
||||||
private fun updatePlayback(song: Song) {
|
private fun updatePlayback(song: Song, shouldPlay: Boolean = true) {
|
||||||
mIsInUserQueue = false
|
mIsInUserQueue = false
|
||||||
|
|
||||||
mSong = song
|
mSong = song
|
||||||
mPosition = 0
|
mPosition = 0
|
||||||
|
|
||||||
if (!mIsPlaying) {
|
setPlaying(shouldPlay)
|
||||||
setPlaying(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
clearLoopMode()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- QUEUE FUNCTIONS ---
|
// --- QUEUE FUNCTIONS ---
|
||||||
|
@ -269,13 +265,14 @@ class PlaybackStateManager private constructor() {
|
||||||
// If it cant be incremented anymore, end playback or loop depending on the setting.
|
// If it cant be incremented anymore, end playback or loop depending on the setting.
|
||||||
if (mIndex < mQueue.lastIndex) {
|
if (mIndex < mQueue.lastIndex) {
|
||||||
mIndex = mIndex.inc()
|
mIndex = mIndex.inc()
|
||||||
|
updatePlayback(mQueue[mIndex])
|
||||||
} else {
|
} else {
|
||||||
handlePlaylistEnd()
|
mIndex = 0
|
||||||
|
updatePlayback(mQueue[mIndex], shouldPlay = mLoopMode == LoopMode.ALL)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePlayback(mQueue[mIndex])
|
|
||||||
forceQueueUpdate()
|
forceQueueUpdate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -299,39 +296,6 @@ class PlaybackStateManager private constructor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle what to do at then end of a playlist.
|
|
||||||
*/
|
|
||||||
private fun handlePlaylistEnd() {
|
|
||||||
when (settingsManager.doAtEnd) {
|
|
||||||
SettingsManager.EntryValues.AT_END_LOOP_PAUSE -> {
|
|
||||||
mIndex = 0
|
|
||||||
mPosition = 0
|
|
||||||
mIsInUserQueue = false
|
|
||||||
mSong = mQueue[0]
|
|
||||||
|
|
||||||
clearLoopMode()
|
|
||||||
setPlaying(false)
|
|
||||||
forceQueueUpdate()
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsManager.EntryValues.AT_END_LOOP -> {
|
|
||||||
mIndex = 0
|
|
||||||
|
|
||||||
forceQueueUpdate()
|
|
||||||
updatePlayback(mQueue[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsManager.EntryValues.AT_END_STOP -> {
|
|
||||||
mQueue.clear()
|
|
||||||
forceQueueUpdate()
|
|
||||||
|
|
||||||
mSong = null
|
|
||||||
mParent = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- QUEUE EDITING FUNCTIONS ---
|
// --- QUEUE EDITING FUNCTIONS ---
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -562,17 +526,6 @@ class PlaybackStateManager private constructor() {
|
||||||
mLoopMode = mode
|
mLoopMode = mode
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reset the current [LoopMode] from [LoopMode.ONCE], if needed.
|
|
||||||
* Use this instead of duplicating the code manually.
|
|
||||||
*/
|
|
||||||
fun clearLoopMode() {
|
|
||||||
// Reset the loop mode from ONCE if needed.
|
|
||||||
if (mLoopMode == LoopMode.ONCE) {
|
|
||||||
mLoopMode = LoopMode.NONE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mark whether this instance has played or not
|
* Mark whether this instance has played or not
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -135,8 +135,8 @@ class PlaybackNotification private constructor(
|
||||||
): NotificationCompat.Action {
|
): NotificationCompat.Action {
|
||||||
val drawableRes = when (loopMode) {
|
val drawableRes = when (loopMode) {
|
||||||
LoopMode.NONE -> R.drawable.ic_loop_inactive
|
LoopMode.NONE -> R.drawable.ic_loop_inactive
|
||||||
LoopMode.ONCE -> R.drawable.ic_loop_one
|
LoopMode.ALL -> R.drawable.ic_loop
|
||||||
LoopMode.INFINITE -> R.drawable.ic_loop
|
LoopMode.TRACK -> R.drawable.ic_loop_one
|
||||||
}
|
}
|
||||||
|
|
||||||
return buildAction(context, ACTION_LOOP, drawableRes)
|
return buildAction(context, ACTION_LOOP, drawableRes)
|
||||||
|
|
|
@ -202,11 +202,6 @@ class PlaybackService : Service(), Player.EventListener, PlaybackStateManager.Ca
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) {
|
override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) {
|
||||||
// Reset the loop mode from LOOP_ONE (if it is LOOP_ONE) on each repeat
|
|
||||||
if (reason == Player.MEDIA_ITEM_TRANSITION_REASON_REPEAT) {
|
|
||||||
playbackManager.clearLoopMode()
|
|
||||||
}
|
|
||||||
|
|
||||||
// We use the wakelock to ensure that the CPU is active while music is being loaded
|
// We use the wakelock to ensure that the CPU is active while music is being loaded
|
||||||
acquireWakeLock()
|
acquireWakeLock()
|
||||||
}
|
}
|
||||||
|
@ -263,10 +258,10 @@ class PlaybackService : Service(), Player.EventListener, PlaybackStateManager.Ca
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onLoopUpdate(loopMode: LoopMode) {
|
override fun onLoopUpdate(loopMode: LoopMode) {
|
||||||
player.repeatMode = if (loopMode == LoopMode.NONE) {
|
player.repeatMode = if (loopMode == LoopMode.TRACK) {
|
||||||
Player.REPEAT_MODE_OFF
|
Player.REPEAT_MODE_ONE
|
||||||
} else {
|
} else {
|
||||||
Player.REPEAT_MODE_ALL
|
Player.REPEAT_MODE_OFF
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!settingsManager.useAltNotifAction) {
|
if (!settingsManager.useAltNotifAction) {
|
||||||
|
|
|
@ -45,8 +45,7 @@ class AboutDialog : BottomSheetDialogFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Go through the process of opening a [link] in a browser. Only supports the links
|
* Go through the process of opening a [link] in a browser.
|
||||||
* in [AboutDialog.Companion.LINKS].
|
|
||||||
*/
|
*/
|
||||||
private fun openLinkInBrowser(link: String) {
|
private fun openLinkInBrowser(link: String) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -38,6 +38,7 @@ class SettingsManager private constructor(context: Context) :
|
||||||
/** The current accent. */
|
/** The current accent. */
|
||||||
var accent: Accent
|
var accent: Accent
|
||||||
get() = handleAccentCompat(sharedPrefs)
|
get() = handleAccentCompat(sharedPrefs)
|
||||||
|
|
||||||
set(value) {
|
set(value) {
|
||||||
val accentIndex = ACCENTS.indexOf(value)
|
val accentIndex = ACCENTS.indexOf(value)
|
||||||
|
|
||||||
|
@ -87,11 +88,6 @@ class SettingsManager private constructor(context: Context) :
|
||||||
val songPlaybackMode: PlaybackMode
|
val songPlaybackMode: PlaybackMode
|
||||||
get() = handleSongPlayModeCompat(sharedPrefs)
|
get() = handleSongPlayModeCompat(sharedPrefs)
|
||||||
|
|
||||||
/** What to do at the end of a playlist. */
|
|
||||||
val doAtEnd: String
|
|
||||||
get() = sharedPrefs.getString(KEY_AT_END, EntryValues.AT_END_LOOP_PAUSE)
|
|
||||||
?: EntryValues.AT_END_LOOP_PAUSE
|
|
||||||
|
|
||||||
/** 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
|
||||||
get() = sharedPrefs.getBoolean(KEY_KEEP_SHUFFLE, true)
|
get() = sharedPrefs.getBoolean(KEY_KEEP_SHUFFLE, true)
|
||||||
|
@ -115,6 +111,7 @@ class SettingsManager private constructor(context: Context) :
|
||||||
/** The current filter mode of the search tab */
|
/** The current filter mode of the search tab */
|
||||||
var searchFilterMode: DisplayMode
|
var searchFilterMode: DisplayMode
|
||||||
get() = handleSearchModeCompat(sharedPrefs)
|
get() = handleSearchModeCompat(sharedPrefs)
|
||||||
|
|
||||||
set(value) {
|
set(value) {
|
||||||
sharedPrefs.edit {
|
sharedPrefs.edit {
|
||||||
putInt(KEY_SEARCH_FILTER_MODE, value.toInt())
|
putInt(KEY_SEARCH_FILTER_MODE, value.toInt())
|
||||||
|
@ -159,19 +156,6 @@ class SettingsManager private constructor(context: Context) :
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Values for some settings entries that arent important enough to recieve an enum.
|
|
||||||
*/
|
|
||||||
object EntryValues {
|
|
||||||
/** Pause and loop at the end. Similar to Spotify. */
|
|
||||||
const val AT_END_LOOP_PAUSE = "LOOP_PAUSE"
|
|
||||||
|
|
||||||
/** Loop at the end. Similar to Music Player GO. */
|
|
||||||
const val AT_END_LOOP = "LOOP"
|
|
||||||
|
|
||||||
/** Stop at the end. */
|
|
||||||
const val AT_END_STOP = "STOP"
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An interface for receiving some preference updates. Use/Extend this instead of
|
* An interface for receiving some preference updates. Use/Extend this instead of
|
||||||
|
@ -200,7 +184,6 @@ class SettingsManager private constructor(context: Context) :
|
||||||
const val KEY_PLUG_MANAGEMENT = "KEY_PLUG_MGT"
|
const val KEY_PLUG_MANAGEMENT = "KEY_PLUG_MGT"
|
||||||
|
|
||||||
const val KEY_SONG_PLAYBACK_MODE = "KEY_SONG_PLAY_MODE2"
|
const val KEY_SONG_PLAYBACK_MODE = "KEY_SONG_PLAY_MODE2"
|
||||||
const val KEY_AT_END = "KEY_AT_END"
|
|
||||||
const val KEY_KEEP_SHUFFLE = "KEY_KEEP_SHUFFLE"
|
const val KEY_KEEP_SHUFFLE = "KEY_KEEP_SHUFFLE"
|
||||||
const val KEY_PREV_REWIND = "KEY_PREV_REWIND"
|
const val KEY_PREV_REWIND = "KEY_PREV_REWIND"
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_open_about"
|
|
||||||
android:icon="@drawable/ic_about"
|
android:icon="@drawable/ic_about"
|
||||||
android:title="@string/label_about"
|
android:title="@string/label_about"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
|
@ -83,10 +83,6 @@
|
||||||
|
|
||||||
<string name="setting_behavior">Verhalten</string>
|
<string name="setting_behavior">Verhalten</string>
|
||||||
<string name="setting_behavior_song_playback_mode">Wenn ein Lied ausgewählt hat</string>
|
<string name="setting_behavior_song_playback_mode">Wenn ein Lied ausgewählt hat</string>
|
||||||
<string name="setting_behavior_at_end">Wenn eine Abspielliste zu Ende ist</string>
|
|
||||||
<string name="setting_behavior_end_loop_pause">Weiderholen und Pausieren</string>
|
|
||||||
<string name="setting_behavior_end_loop">Weiderholen</string>
|
|
||||||
<string name="setting_behavior_end_stop">Stoppen</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Zufällig-Einstellung merken</string>
|
<string name="setting_behavior_keep_shuffle">Zufällig-Einstellung merken</string>
|
||||||
<string name="setting_behavior_keep_shuffle_desc">Lassen zufällig an, wenn ein neues Lied anspielen</string>
|
<string name="setting_behavior_keep_shuffle_desc">Lassen zufällig an, wenn ein neues Lied anspielen</string>
|
||||||
<string name="setting_behavior_rewind_prev">Zurückspulen, bevor zurück springen</string>
|
<string name="setting_behavior_rewind_prev">Zurückspulen, bevor zurück springen</string>
|
||||||
|
|
|
@ -52,7 +52,6 @@
|
||||||
<string name="setting_audio">Ήχος</string>
|
<string name="setting_audio">Ήχος</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Συμπεριφορά</string>
|
<string name="setting_behavior">Συμπεριφορά</string>
|
||||||
<string name="setting_behavior_end_stop">Διακοπή</string>
|
|
||||||
|
|
||||||
<!-- Description Namespace | Accessibility Strings -->
|
<!-- Description Namespace | Accessibility Strings -->
|
||||||
<string name="description_track_number">Κομμάτι %d</string>
|
<string name="description_track_number">Κομμάτι %d</string>
|
||||||
|
|
|
@ -57,9 +57,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Conexión de auriculares</string>
|
<string name="setting_audio_plug_mgt">Conexión de auriculares</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Funcionamiento</string>
|
<string name="setting_behavior">Funcionamiento</string>
|
||||||
<string name="setting_behavior_end_loop_pause">Continuar y Pausar</string>
|
|
||||||
<string name="setting_behavior_end_stop">Detener</string>
|
|
||||||
<string name="setting_behavior_end_loop">Continuar</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Recordar aleatorio</string>
|
<string name="setting_behavior_keep_shuffle">Recordar aleatorio</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
|
|
|
@ -58,9 +58,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Branchement du casque</string>
|
<string name="setting_audio_plug_mgt">Branchement du casque</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Comportement</string>
|
<string name="setting_behavior">Comportement</string>
|
||||||
<string name="setting_behavior_end_loop_pause">Continuer et Pause</string>
|
|
||||||
<string name="setting_behavior_end_stop">Arrêter</string>
|
|
||||||
<string name="setting_behavior_end_loop">Continuer</string>
|
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="error_no_music">Pas de musique trouvée</string>
|
<string name="error_no_music">Pas de musique trouvée</string>
|
||||||
|
|
|
@ -48,8 +48,6 @@
|
||||||
<string name="setting_audio_plug_mgt">हेडसेट प्लग</string>
|
<string name="setting_audio_plug_mgt">हेडसेट प्लग</string>
|
||||||
|
|
||||||
<string name="setting_behavior">चाल चलन</string>
|
<string name="setting_behavior">चाल चलन</string>
|
||||||
<string name="setting_behavior_end_loop">जारी</string>
|
|
||||||
<string name="setting_behavior_end_stop">बंद</string>
|
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="error_no_music">कोई संगीत नहीं मिला</string>
|
<string name="error_no_music">कोई संगीत नहीं मिला</string>
|
||||||
|
|
|
@ -56,8 +56,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Fejhallgató csatlakozó</string>
|
<string name="setting_audio_plug_mgt">Fejhallgató csatlakozó</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Működés</string>
|
<string name="setting_behavior">Működés</string>
|
||||||
<string name="setting_behavior_end_loop">Folytatás</string>
|
|
||||||
<string name="setting_behavior_end_stop">Megállítás</string>
|
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="error_no_music">Nem található zene</string>
|
<string name="error_no_music">Nem található zene</string>
|
||||||
|
|
|
@ -55,8 +55,6 @@
|
||||||
<string name="setting_audio_focus">Fokus audio</string>
|
<string name="setting_audio_focus">Fokus audio</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Perilaku</string>
|
<string name="setting_behavior">Perilaku</string>
|
||||||
<string name="setting_behavior_end_loop">Lanjutkan</string>
|
|
||||||
<string name="setting_behavior_end_stop">Setop</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Ingat putar acak</string>
|
<string name="setting_behavior_keep_shuffle">Ingat putar acak</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
|
|
|
@ -57,9 +57,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Inserimento cuffie</string>
|
<string name="setting_audio_plug_mgt">Inserimento cuffie</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Comportamento</string>
|
<string name="setting_behavior">Comportamento</string>
|
||||||
<string name="setting_behavior_end_loop_pause">Continua e Pause</string>
|
|
||||||
<string name="setting_behavior_end_loop">Continua</string>
|
|
||||||
<string name="setting_behavior_end_stop">Ferma</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Ricorda casuale</string>
|
<string name="setting_behavior_keep_shuffle">Ricorda casuale</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
|
|
|
@ -55,8 +55,6 @@
|
||||||
<string name="setting_audio_plug_mgt">헤드셋 연결</string>
|
<string name="setting_audio_plug_mgt">헤드셋 연결</string>
|
||||||
|
|
||||||
<string name="setting_behavior">동작</string>
|
<string name="setting_behavior">동작</string>
|
||||||
<string name="setting_behavior_end_loop">계속</string>
|
|
||||||
<string name="setting_behavior_end_stop">중단</string>
|
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="error_no_music">노래를 찾을 수 없습니다</string>
|
<string name="error_no_music">노래를 찾을 수 없습니다</string>
|
||||||
|
|
|
@ -58,9 +58,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Headset-pluggen</string>
|
<string name="setting_audio_plug_mgt">Headset-pluggen</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Gedrag</string>
|
<string name="setting_behavior">Gedrag</string>
|
||||||
<string name="setting_behavior_end_loop_pause">Herhalen en Pauzeren</string>
|
|
||||||
<string name="setting_behavior_end_loop">Herhalen</string>
|
|
||||||
<string name="setting_behavior_end_stop">Stoppen</string>
|
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="error_no_music">Geen muziek aangetroffen</string>
|
<string name="error_no_music">Geen muziek aangetroffen</string>
|
||||||
|
|
|
@ -56,8 +56,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Podłączanie słuchawek</string>
|
<string name="setting_audio_plug_mgt">Podłączanie słuchawek</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Zachowanie</string>
|
<string name="setting_behavior">Zachowanie</string>
|
||||||
<string name="setting_behavior_end_loop">Kontynuuj</string>
|
|
||||||
<string name="setting_behavior_end_stop">Zatrzymaj</string>
|
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="error_no_music">Nie znaleziono muzyki</string>
|
<string name="error_no_music">Nie znaleziono muzyki</string>
|
||||||
|
|
|
@ -56,8 +56,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Entrada do fone de ouvido</string>
|
<string name="setting_audio_plug_mgt">Entrada do fone de ouvido</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Comportamento</string>
|
<string name="setting_behavior">Comportamento</string>
|
||||||
<string name="setting_behavior_end_loop">Continuar</string>
|
|
||||||
<string name="setting_behavior_end_stop">Parar</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Memorizar aleatorização</string>
|
<string name="setting_behavior_keep_shuffle">Memorizar aleatorização</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
|
|
|
@ -57,8 +57,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Entrada do fone de ouvido</string>
|
<string name="setting_audio_plug_mgt">Entrada do fone de ouvido</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Comportamento</string>
|
<string name="setting_behavior">Comportamento</string>
|
||||||
<string name="setting_behavior_end_loop">Continuar</string>
|
|
||||||
<string name="setting_behavior_end_stop">Parar</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Memorizar aleatorização</string>
|
<string name="setting_behavior_keep_shuffle">Memorizar aleatorização</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
|
|
|
@ -56,8 +56,6 @@
|
||||||
<string name="setting_audio_plug_mgt">Гарнитура</string>
|
<string name="setting_audio_plug_mgt">Гарнитура</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Поведение</string>
|
<string name="setting_behavior">Поведение</string>
|
||||||
<string name="setting_behavior_end_loop">Продолжить</string>
|
|
||||||
<string name="setting_behavior_end_stop">Стоп</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Запомнить перемешивание</string>
|
<string name="setting_behavior_keep_shuffle">Запомнить перемешивание</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
|
|
|
@ -55,8 +55,6 @@
|
||||||
<string name="setting_audio_focus">Ses odaklama</string>
|
<string name="setting_audio_focus">Ses odaklama</string>
|
||||||
|
|
||||||
<string name="setting_behavior">Tercihler</string>
|
<string name="setting_behavior">Tercihler</string>
|
||||||
<string name="setting_behavior_end_loop">Devam et</string>
|
|
||||||
<string name="setting_behavior_end_stop">Dur</string>
|
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="error_no_music">Müzik bulunamadı</string>
|
<string name="error_no_music">Müzik bulunamadı</string>
|
||||||
|
|
|
@ -37,16 +37,4 @@
|
||||||
<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>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="entries_at_end">
|
|
||||||
<item>@string/setting_behavior_end_loop_pause</item>
|
|
||||||
<item>@string/setting_behavior_end_loop</item>
|
|
||||||
<item>@string/setting_behavior_end_stop</item>
|
|
||||||
</string-array>
|
|
||||||
|
|
||||||
<string-array name="values_at_end">
|
|
||||||
<item>LOOP_PAUSE</item>
|
|
||||||
<item>LOOP</item>
|
|
||||||
<item>STOP</item>
|
|
||||||
</string-array>
|
|
||||||
</resources>
|
</resources>
|
|
@ -84,10 +84,6 @@
|
||||||
|
|
||||||
<string name="setting_behavior">Behavior</string>
|
<string name="setting_behavior">Behavior</string>
|
||||||
<string name="setting_behavior_song_playback_mode">When a song is selected</string>
|
<string name="setting_behavior_song_playback_mode">When a song is selected</string>
|
||||||
<string name="setting_behavior_at_end">When a playlist ends</string>
|
|
||||||
<string name="setting_behavior_end_loop_pause">Loop and Pause</string>
|
|
||||||
<string name="setting_behavior_end_loop">Loop</string>
|
|
||||||
<string name="setting_behavior_end_stop">Stop</string>
|
|
||||||
<string name="setting_behavior_keep_shuffle">Remember shuffle</string>
|
<string name="setting_behavior_keep_shuffle">Remember shuffle</string>
|
||||||
<string name="setting_behavior_keep_shuffle_desc">Keep shuffle on when playing a new song</string>
|
<string name="setting_behavior_keep_shuffle_desc">Keep shuffle on when playing a new song</string>
|
||||||
<string name="setting_behavior_rewind_prev">Rewind before skipping back</string>
|
<string name="setting_behavior_rewind_prev">Rewind before skipping back</string>
|
||||||
|
|
|
@ -103,15 +103,6 @@
|
||||||
app:title="@string/setting_behavior_song_playback_mode"
|
app:title="@string/setting_behavior_song_playback_mode"
|
||||||
app:useSimpleSummaryProvider="true" />
|
app:useSimpleSummaryProvider="true" />
|
||||||
|
|
||||||
<ListPreference
|
|
||||||
app:defaultValue="LOOP_PAUSE"
|
|
||||||
app:entries="@array/entries_at_end"
|
|
||||||
app:entryValues="@array/values_at_end"
|
|
||||||
app:iconSpaceReserved="false"
|
|
||||||
app:key="KEY_AT_END"
|
|
||||||
app:title="@string/setting_behavior_at_end"
|
|
||||||
app:useSimpleSummaryProvider="true" />
|
|
||||||
|
|
||||||
<SwitchPreferenceCompat
|
<SwitchPreferenceCompat
|
||||||
app:defaultValue="true"
|
app:defaultValue="true"
|
||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
|
|
|
@ -59,8 +59,8 @@ To prevent any strange bugs, all integer representations must be unique. A table
|
||||||
0xA1XX | Data Integer Space [Stored for IO efficency]
|
0xA1XX | Data Integer Space [Stored for IO efficency]
|
||||||
|
|
||||||
0xA100 | LoopMode.NONE
|
0xA100 | LoopMode.NONE
|
||||||
0xA101 | LoopMode.ONCE
|
0xA101 | LoopMode.ALL
|
||||||
0xA102 | LoopMode.INFINITE
|
0xA102 | LoopMode.TRACK
|
||||||
|
|
||||||
0xA103 | PlaybackMode.IN_GENRE
|
0xA103 | PlaybackMode.IN_GENRE
|
||||||
0xA104 | PlaybackMode.IN_ARTIST
|
0xA104 | PlaybackMode.IN_ARTIST
|
||||||
|
|
Loading…
Reference in a new issue