add artist discography page

This commit is contained in:
Drew Weymouth
2022-12-31 21:13:24 -08:00
parent 87b4762ae1
commit 0ff1b6bafd
8 changed files with 233 additions and 39 deletions
+16 -2
View File
@@ -1,6 +1,7 @@
package ui
import (
"supersonic/backend"
"supersonic/ui/widgets"
"sync"
"time"
@@ -18,9 +19,15 @@ type Searchable interface {
OnSearched(string)
}
type CanPlayAlbum interface {
SetPlayAlbumCallback(func(albumID string))
}
type BrowsingPane struct {
widget.BaseWidget
app *backend.App
searchBar *widgets.SearchEntry
pendingSearchLock sync.Mutex
pendingSearch bool
@@ -34,8 +41,8 @@ type blankPage struct {
widget.Separator
}
func NewBrowsingPane() *BrowsingPane {
b := &BrowsingPane{}
func NewBrowsingPane(app *backend.App) *BrowsingPane {
b := &BrowsingPane{app: app}
b.ExtendBaseWidget(b)
b.searchBar = widgets.NewSearchEntry()
b.searchBar.OnTextChanged = b.onSearchTextChanged
@@ -48,6 +55,13 @@ func NewBrowsingPane() *BrowsingPane {
func (b *BrowsingPane) SetPage(p Page) {
b.curPage = p
if pa, ok := p.(CanPlayAlbum); ok {
pa.SetPlayAlbumCallback(func(albumID string) {
_ = b.app.PlaybackManager.PlayAlbum(albumID)
})
}
_, s := p.(Searchable)
b.searchBar.Hidden = !s
b.container.Objects[0] = p
b.Refresh()
}