Make BasePlayer.get[Next/Previous]WindowIndex more useful

When in REPEAT_MODE_ONE, it's unlikely apps want next/previous methods
on the player to keep them in the same window. Music apps in particular
tend to implement next/previous functionality as though repeat mode were
off when in this mode (i.e. current song loops forever during playback,
but next/previous navigation still navigates to next/previous items).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220469655
This commit is contained in:
olly 2018-11-07 08:49:10 -08:00 committed by Oliver Woodman
parent fd98d70a11
commit 6bc0408222

View File

@ -79,7 +79,7 @@ public abstract class BasePlayer implements Player {
return timeline.isEmpty()
? C.INDEX_UNSET
: timeline.getNextWindowIndex(
getCurrentWindowIndex(), getRepeatMode(), getShuffleModeEnabled());
getCurrentWindowIndex(), getRepeatModeForNavigation(), getShuffleModeEnabled());
}
@Override
@ -88,7 +88,7 @@ public abstract class BasePlayer implements Player {
return timeline.isEmpty()
? C.INDEX_UNSET
: timeline.getPreviousWindowIndex(
getCurrentWindowIndex(), getRepeatMode(), getShuffleModeEnabled());
getCurrentWindowIndex(), getRepeatModeForNavigation(), getShuffleModeEnabled());
}
@Override
@ -129,4 +129,10 @@ public abstract class BasePlayer implements Player {
? C.TIME_UNSET
: timeline.getWindow(getCurrentWindowIndex(), window).getDurationMs();
}
@RepeatMode
private int getRepeatModeForNavigation() {
@RepeatMode int repeatMode = getRepeatMode();
return repeatMode == REPEAT_MODE_ONE ? REPEAT_MODE_OFF : repeatMode;
}
}