playback: add remember pause setting
This setting allows you to remain playing/paused when you move in the queue or edit the queue. Useful for some people who like this behavior more than always playing. Resolves #568.
This commit is contained in:
parent
a44f0bce35
commit
3e79f31792
8 changed files with 28 additions and 12 deletions
|
@ -58,6 +58,8 @@ interface PlaybackSettings : Settings<PlaybackSettings.Listener> {
|
|||
val rewindWithPrev: Boolean
|
||||
/** Whether a song should pause after every repeat. */
|
||||
val pauseOnRepeat: Boolean
|
||||
/** Whether to maintain the play/pause state when skipping or editing the queue */
|
||||
val rememberPause: Boolean
|
||||
|
||||
interface Listener {
|
||||
/** Called when one of the ReplayGain configurations have changed. */
|
||||
|
@ -129,6 +131,9 @@ class PlaybackSettingsImpl @Inject constructor(@ApplicationContext context: Cont
|
|||
override val pauseOnRepeat: Boolean
|
||||
get() = sharedPreferences.getBoolean(getString(R.string.set_key_repeat_pause), false)
|
||||
|
||||
override val rememberPause: Boolean
|
||||
get() = sharedPreferences.getBoolean(getString(R.string.set_key_remember_pause), false)
|
||||
|
||||
override fun migrate() {
|
||||
// MusicMode was converted to PlaySong in 3.2.0
|
||||
fun Int.migrateMusicMode() =
|
||||
|
|
|
@ -456,7 +456,6 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
val stateHolder = stateHolder ?: return
|
||||
logD("Going to next song")
|
||||
stateHolder.next()
|
||||
stateHolder.playing(true)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
@ -464,7 +463,6 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
val stateHolder = stateHolder ?: return
|
||||
logD("Going to previous song")
|
||||
stateHolder.prev()
|
||||
stateHolder.playing(true)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
@ -472,7 +470,6 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
val stateHolder = stateHolder ?: return
|
||||
logD("Going to index $index")
|
||||
stateHolder.goto(index)
|
||||
stateHolder.playing(true)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
@ -643,10 +640,6 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
rawQueue = rawQueue,
|
||||
)
|
||||
|
||||
if (change.type == QueueChange.Type.SONG) {
|
||||
stateHolder.playing(true)
|
||||
}
|
||||
|
||||
listeners.forEach {
|
||||
it.onQueueChanged(stateMirror.queue, stateMirror.index, change)
|
||||
}
|
||||
|
|
|
@ -316,6 +316,9 @@ class PlaybackService :
|
|||
|
||||
override fun next() {
|
||||
player.seekToNext()
|
||||
if (!playbackSettings.rememberPause) {
|
||||
player.play()
|
||||
}
|
||||
playbackManager.ack(this, StateAck.IndexMoved)
|
||||
// Deferred save is handled on position discontinuity
|
||||
}
|
||||
|
@ -326,6 +329,9 @@ class PlaybackService :
|
|||
} else {
|
||||
player.seekToPreviousMediaItem()
|
||||
}
|
||||
if (!playbackSettings.rememberPause) {
|
||||
player.play()
|
||||
}
|
||||
playbackManager.ack(this, StateAck.IndexMoved)
|
||||
// Deferred save is handled on position discontinuity
|
||||
}
|
||||
|
@ -338,6 +344,9 @@ class PlaybackService :
|
|||
|
||||
val trueIndex = indices[index]
|
||||
player.seekTo(trueIndex, C.TIME_UNSET)
|
||||
if (!playbackSettings.rememberPause) {
|
||||
player.play()
|
||||
}
|
||||
playbackManager.ack(this, StateAck.IndexMoved)
|
||||
// Deferred save is handled on position discontinuity
|
||||
}
|
||||
|
@ -396,7 +405,11 @@ class PlaybackService :
|
|||
}
|
||||
|
||||
val trueIndex = indices[at]
|
||||
val songWillChange = player.currentMediaItemIndex == trueIndex
|
||||
player.removeMediaItem(trueIndex)
|
||||
if (songWillChange && !playbackSettings.rememberPause) {
|
||||
player.play()
|
||||
}
|
||||
playbackManager.ack(this, ack)
|
||||
deferSave()
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.oxycblt.auxio.playback.PlaybackViewModel
|
|||
import org.oxycblt.auxio.settings.ui.WrappedDialogPreference
|
||||
import org.oxycblt.auxio.util.logD
|
||||
import org.oxycblt.auxio.util.navigateSafe
|
||||
import org.oxycblt.auxio.util.showToast
|
||||
|
||||
/**
|
||||
* The [PreferenceFragmentCompat] that displays the root settings list.
|
||||
|
|
|
@ -32,9 +32,7 @@
|
|||
<string name="set_key_keep_shuffle" translatable="false">KEY_KEEP_SHUFFLE</string>
|
||||
<string name="set_key_rewind_prev" translatable="false">KEY_PREV_REWIND</string>
|
||||
<string name="set_key_repeat_pause" translatable="false">KEY_LOOP_PAUSE</string>
|
||||
<string name="set_key_save_state" translatable="false">auxio_save_state</string>
|
||||
<string name="set_key_wipe_state" translatable="false">auxio_wipe_state</string>
|
||||
<string name="set_key_restore_state" translatable="false">auxio_restore_state</string>
|
||||
<string name="set_key_remember_pause" translatable="false">auxio_remember_pause</string>
|
||||
|
||||
<string name="set_key_home_tabs" translatable="false">auxio_home_tabs</string>
|
||||
<string name="set_key_hide_collaborators" translatable="false">auxio_hide_collaborators</string>
|
||||
|
|
|
@ -288,6 +288,8 @@
|
|||
<string name="set_rewind_prev_desc">Rewind before skipping to the previous song</string>
|
||||
<string name="set_repeat_pause">Pause on repeat</string>
|
||||
<string name="set_repeat_pause_desc">Pause when a song repeats</string>
|
||||
<string name="set_remember_pause">Remember pause</string>
|
||||
<string name="set_remember_pause_desc">Remain playing/paused when skipping or editing queue</string>
|
||||
<string name="set_replay_gain">ReplayGain</string>
|
||||
<string name="set_replay_gain_mode">ReplayGain strategy</string>
|
||||
<string name="set_replay_gain_mode_track">Prefer track</string>
|
||||
|
|
|
@ -21,6 +21,12 @@
|
|||
app:summary="@string/set_repeat_pause_desc"
|
||||
app:title="@string/set_repeat_pause" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:defaultValue="false"
|
||||
app:key="@string/set_key_remember_pause"
|
||||
app:summary="@string/set_remember_pause_desc"
|
||||
app:title="@string/set_remember_pause" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/set_replay_gain">
|
||||
|
|
|
@ -44,5 +44,5 @@
|
|||
app:title="@string/set_rescan" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
</PreferenceScreen>
|
Loading…
Reference in a new issue