add Play random button to album page

This commit is contained in:
Drew Weymouth
2025-02-20 16:13:11 -08:00
parent 72f4d4b5c7
commit 568e380a51
2 changed files with 20 additions and 5 deletions
+4 -4
View File
@@ -295,13 +295,13 @@ func (p *PlaybackManager) PlayRandomAlbums(genreName string) error {
}
mp := p.engine.sm.Server
var filter mediaprovider.AlbumFilter
var options mediaprovider.AlbumFilterOptions
if genreName != "" {
filter = mediaprovider.NewAlbumFilter(mediaprovider.AlbumFilterOptions{
options = mediaprovider.AlbumFilterOptions{
Genres: []string{genreName},
})
}
}
iter := mp.IterateAlbums(mediaprovider.AlbumSortRandom, filter)
iter := mp.IterateAlbums(mediaprovider.AlbumSortRandom, mediaprovider.NewAlbumFilter(options))
insertMode := Replace
for i := 0; i < 20; i++ {
al := iter.Next()
+16 -1
View File
@@ -1,10 +1,12 @@
package browsing
import (
"log"
"slices"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/lang"
"fyne.io/fyne/v2/widget"
"github.com/dweymouth/supersonic/backend"
"github.com/dweymouth/supersonic/backend/mediaprovider"
"github.com/dweymouth/supersonic/ui/controller"
@@ -63,7 +65,20 @@ func (a *albumsPageAdapter) SaveSortOrder(orderIdx int) {
a.cfg.SortOrder = a.mp.AlbumSortOrders()[orderIdx]
}
func (a *albumsPageAdapter) ActionButton() fyne.CanvasObject { return nil }
func (a *albumsPageAdapter) ActionButton() fyne.CanvasObject {
fn := func() {
go func() {
if err := a.pm.PlayRandomAlbums(""); err != nil {
log.Printf("error playing random albums: %v", err)
fyne.Do(func() {
a.contr.ToastProvider.ShowErrorToast(lang.L("Unable to play random albums"))
})
}
}()
}
return widget.NewButtonWithIcon(lang.L("Play random"), myTheme.ShuffleIcon, fn)
}
func (a *albumsPageAdapter) Iter(sortOrderIdx int, filter mediaprovider.AlbumFilter) widgets.GridViewIterator {
sortOrder := a.mp.AlbumSortOrders()[sortOrderIdx]