diff --git a/ui/browsing/albumpage.go b/ui/browsing/albumpage.go index 7e90870..b5957c4 100644 --- a/ui/browsing/albumpage.go +++ b/ui/browsing/albumpage.go @@ -26,8 +26,6 @@ type AlbumPage struct { tracklist *widgets.Tracklist nowPlayingID string container *fyne.Container - - OnPlayAlbum func(string, int) } type albumPageState struct { @@ -84,10 +82,6 @@ func (a *AlbumPage) CreateRenderer() fyne.WidgetRenderer { return widget.NewSimpleRenderer(a.container) } -func (a *AlbumPage) SetPlayAlbumCallback(cb func(string, int)) { - a.OnPlayAlbum = cb -} - func (a *AlbumPage) Save() SavedPage { s := a.albumPageState return &s @@ -115,9 +109,7 @@ func (a *AlbumPage) Tapped(*fyne.PointEvent) { } func (a *AlbumPage) onPlayTrackAt(tracknum int) { - if a.OnPlayAlbum != nil { - a.OnPlayAlbum(a.albumID, tracknum) - } + a.pm.PlayAlbum(a.albumID, tracknum) } func (a *AlbumPage) loadAsync() { diff --git a/ui/browsing/albumspage.go b/ui/browsing/albumspage.go index 3368d00..c5b83c8 100644 --- a/ui/browsing/albumspage.go +++ b/ui/browsing/albumspage.go @@ -16,18 +16,18 @@ var _ fyne.Widget = (*AlbumsPage)(nil) type AlbumsPage struct { widget.BaseWidget - title string - im *backend.ImageManager - lm *backend.LibraryManager - nav func(Route) - grid *widgets.AlbumGrid - searchGrid *widgets.AlbumGrid - searcher *widgets.Searcher - searchText string - titleDisp *widget.RichText - sortOrder *selectWidget - container *fyne.Container - OnPlayAlbum func(string, int) + title string + pm *backend.PlaybackManager + im *backend.ImageManager + lm *backend.LibraryManager + nav func(Route) + grid *widgets.AlbumGrid + searchGrid *widgets.AlbumGrid + searcher *widgets.Searcher + searchText string + titleDisp *widget.RichText + sortOrder *selectWidget + container *fyne.Container } type selectWidget struct { @@ -51,9 +51,10 @@ func (s *selectWidget) MinSize() fyne.Size { return fyne.NewSize(170, s.height) } -func NewAlbumsPage(title string, sortOrder string, lm *backend.LibraryManager, im *backend.ImageManager, nav func(Route)) *AlbumsPage { +func NewAlbumsPage(title string, sortOrder string, pm *backend.PlaybackManager, lm *backend.LibraryManager, im *backend.ImageManager, nav func(Route)) *AlbumsPage { a := &AlbumsPage{ title: title, + pm: pm, lm: lm, im: im, nav: nav, @@ -98,6 +99,7 @@ func (a *AlbumsPage) createContainer(searchgrid bool) { func restoreAlbumsPage(saved *savedAlbumsPage) *AlbumsPage { a := &AlbumsPage{ title: saved.title, + pm: saved.pm, lm: saved.lm, im: saved.im, nav: saved.nav, @@ -146,10 +148,6 @@ func (a *AlbumsPage) SearchWidget() fyne.Focusable { return a.searcher.Entry } -func (a *AlbumsPage) SetPlayAlbumCallback(cb func(string, int)) { - a.OnPlayAlbum = cb -} - func (a *AlbumsPage) Reload() { if a.searchText != "" { a.doSearch(a.searchText) @@ -162,6 +160,7 @@ func (a *AlbumsPage) Reload() { func (a *AlbumsPage) Save() SavedPage { sa := &savedAlbumsPage{ title: a.title, + pm: a.pm, lm: a.lm, im: a.im, nav: a.nav, @@ -189,9 +188,7 @@ func (a *AlbumsPage) doSearch(query string) { } func (a *AlbumsPage) onPlayAlbum(albumID string) { - if a.OnPlayAlbum != nil { - a.OnPlayAlbum(albumID, 0) - } + a.pm.PlayAlbum(albumID, 0) } func (a *AlbumsPage) onShowArtistPage(artistID string) { @@ -218,6 +215,7 @@ func (a *AlbumsPage) CreateRenderer() fyne.WidgetRenderer { type savedAlbumsPage struct { title string searchText string + pm *backend.PlaybackManager lm *backend.LibraryManager im *backend.ImageManager nav func(Route) diff --git a/ui/browsing/browsingpane.go b/ui/browsing/browsingpane.go index 4efed1c..278fa25 100644 --- a/ui/browsing/browsingpane.go +++ b/ui/browsing/browsingpane.go @@ -31,10 +31,6 @@ type Searchable interface { SearchWidget() fyne.Focusable } -type CanPlayAlbum interface { - SetPlayAlbumCallback(func(albumID string, startingTrack int)) -} - type CanShowNowPlaying interface { OnSongChange(song *subsonic.Child) } @@ -98,11 +94,6 @@ func (b *BrowsingPane) doSetPage(p Page) bool { return false } b.curPage = p - if pa, ok := p.(CanPlayAlbum); ok { - pa.SetPlayAlbumCallback(func(albumID string, firstTrack int) { - _ = b.app.PlaybackManager.PlayAlbum(albumID, firstTrack) - }) - } if np, ok := p.(CanShowNowPlaying); ok { np.OnSongChange(b.app.PlaybackManager.NowPlaying()) } diff --git a/ui/browsing/router.go b/ui/browsing/router.go index 32ac87b..e95b453 100644 --- a/ui/browsing/router.go +++ b/ui/browsing/router.go @@ -87,7 +87,7 @@ func (r Router) CreatePage(rte Route) Page { case Album: return NewAlbumPage(rte.Arg, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.Controller, r.OpenRoute) case Albums: - return NewAlbumsPage("Albums", rte.Arg, r.App.LibraryManager, r.App.ImageManager, r.OpenRoute) + return NewAlbumsPage("Albums", rte.Arg, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.OpenRoute) case Artist: return NewArtistPage(rte.Arg, r.App.ServerManager, r.App.ImageManager, r.Controller, r.OpenRoute) case Artists: