Fix playlist shuffle

- Shuffle all indexes
- Use persistent indexes to store play history
- Update virtual items to keep original shuffle order when the playlist is reordered
- Make sure to always set virtual index on manual shuffle
- Ignore repeat and shuffle when dynamic playlist is activated

Fixes #707
Fixes #1381
Fixes #1366
Fixes #1353
This commit is contained in:
Jonas Kvinge
2024-03-22 20:00:12 +01:00
parent 93c2fa4c73
commit 5e725e0bbe
7 changed files with 139 additions and 90 deletions

View File

@@ -47,8 +47,7 @@ PlaylistSequence::PlaylistSequence(QWidget *parent, SettingsProvider *settings)
shuffle_menu_(new QMenu(this)),
loading_(false),
repeat_mode_(RepeatMode::Off),
shuffle_mode_(ShuffleMode::Off),
dynamic_(false) {
shuffle_mode_(ShuffleMode::Off) {
ui_->setupUi(this);
@@ -205,11 +204,11 @@ void PlaylistSequence::SetShuffleMode(const ShuffleMode mode) {
}
PlaylistSequence::ShuffleMode PlaylistSequence::shuffle_mode() const {
return dynamic_ ? ShuffleMode::Off : shuffle_mode_;
return shuffle_mode_;
}
PlaylistSequence::RepeatMode PlaylistSequence::repeat_mode() const {
return dynamic_ ? RepeatMode::Off : repeat_mode_;
return repeat_mode_;
}
// Called from global shortcut