add play queue sidebar

This commit is contained in:
Drew Weymouth
2025-10-05 11:20:27 -07:00
parent 7dc4640269
commit 27ae29a88c
10 changed files with 518 additions and 7 deletions
+46
View File
@@ -0,0 +1,46 @@
package ui
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"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"
"github.com/dweymouth/supersonic/ui/theme"
"github.com/dweymouth/supersonic/ui/widgets"
)
type Sidebar struct {
widget.BaseWidget
queueList *widgets.PlayQueueList
}
func NewSidebar(contr *controller.Controller, im *backend.ImageManager) *Sidebar {
s := &Sidebar{
queueList: widgets.NewPlayQueueList(im, false),
}
s.queueList.Reorderable = true
contr.ConnectPlayQueuelistActions(s.queueList)
s.ExtendBaseWidget(s)
return s
}
func (s *Sidebar) SetQueueTracks(items []mediaprovider.MediaItem) {
s.queueList.SetItems(items)
}
func (s *Sidebar) SetNowPlaying(itemID string) {
s.queueList.SetNowPlaying(itemID)
}
func (s *Sidebar) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(container.NewStack(
theme.NewThemedRectangle(theme.ColorNamePageBackground),
container.NewAppTabs(
container.NewTabItem(lang.L("Play Queue"), container.NewPadded(s.queueList)),
),
))
}