47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
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)),
|
|
),
|
|
))
|
|
}
|