add album shuffle mode to Genre page
This commit is contained in:
+7
-4
@@ -64,9 +64,11 @@ type AlbumPageConfig struct {
|
||||
TracklistColumns []string
|
||||
}
|
||||
|
||||
// shared between Albums and Genre pages
|
||||
type AlbumsPageConfig struct {
|
||||
SortOrder string
|
||||
ShowYears bool
|
||||
SortOrder string // only relevant for Albums page
|
||||
ShowYears bool
|
||||
ShuffleMode string // only relevant for genre page
|
||||
}
|
||||
|
||||
type ArtistPageConfig struct {
|
||||
@@ -192,8 +194,9 @@ func DefaultConfig(appVersionTag string) *Config {
|
||||
TracklistColumns: []string{"Artist", "Time", "Plays", "Favorite", "Rating"},
|
||||
},
|
||||
AlbumsPage: AlbumsPageConfig{
|
||||
SortOrder: string("Recently Added"),
|
||||
ShowYears: false,
|
||||
SortOrder: string("Recently Added"),
|
||||
ShowYears: false,
|
||||
ShuffleMode: "Tracks",
|
||||
},
|
||||
ArtistPage: ArtistPageConfig{
|
||||
InitialView: "Discography",
|
||||
|
||||
@@ -289,6 +289,34 @@ func (p *PlaybackManager) PlaySimilarSongs(id string) error {
|
||||
})
|
||||
}
|
||||
|
||||
func (p *PlaybackManager) PlayRandomAlbums(genreName string) error {
|
||||
if p.engine.replayGainCfg.Mode == ReplayGainAuto {
|
||||
p.SetReplayGainMode(player.ReplayGainAlbum)
|
||||
}
|
||||
|
||||
mp := p.engine.sm.Server
|
||||
var filter mediaprovider.AlbumFilter
|
||||
if genreName != "" {
|
||||
filter = mediaprovider.NewAlbumFilter(mediaprovider.AlbumFilterOptions{
|
||||
Genres: []string{genreName},
|
||||
})
|
||||
}
|
||||
iter := mp.IterateAlbums(mediaprovider.AlbumSortRandom, filter)
|
||||
insertMode := Replace
|
||||
for i := 0; i < 20; i++ {
|
||||
al := iter.Next()
|
||||
if al, err := mp.GetAlbum(al.ID); err == nil {
|
||||
p.LoadTracks(al.Tracks, insertMode, false)
|
||||
if i == 0 {
|
||||
p.PlayFromBeginning()
|
||||
insertMode = Append
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *PlaybackManager) LoadRadioStation(station *mediaprovider.RadioStation, queueMode InsertQueueMode) {
|
||||
p.cmdQueue.LoadRadioStation(station, queueMode)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user