refactor: get rid of browsingpane as play album mediator
This commit is contained in:
@@ -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() {
|
||||
|
||||
+18
-20
@@ -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)
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user