refactor: get rid of browsingpane as play album mediator
This commit is contained in:
@@ -26,8 +26,6 @@ type AlbumPage struct {
|
|||||||
tracklist *widgets.Tracklist
|
tracklist *widgets.Tracklist
|
||||||
nowPlayingID string
|
nowPlayingID string
|
||||||
container *fyne.Container
|
container *fyne.Container
|
||||||
|
|
||||||
OnPlayAlbum func(string, int)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type albumPageState struct {
|
type albumPageState struct {
|
||||||
@@ -84,10 +82,6 @@ func (a *AlbumPage) CreateRenderer() fyne.WidgetRenderer {
|
|||||||
return widget.NewSimpleRenderer(a.container)
|
return widget.NewSimpleRenderer(a.container)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlbumPage) SetPlayAlbumCallback(cb func(string, int)) {
|
|
||||||
a.OnPlayAlbum = cb
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *AlbumPage) Save() SavedPage {
|
func (a *AlbumPage) Save() SavedPage {
|
||||||
s := a.albumPageState
|
s := a.albumPageState
|
||||||
return &s
|
return &s
|
||||||
@@ -115,9 +109,7 @@ func (a *AlbumPage) Tapped(*fyne.PointEvent) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlbumPage) onPlayTrackAt(tracknum int) {
|
func (a *AlbumPage) onPlayTrackAt(tracknum int) {
|
||||||
if a.OnPlayAlbum != nil {
|
a.pm.PlayAlbum(a.albumID, tracknum)
|
||||||
a.OnPlayAlbum(a.albumID, tracknum)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlbumPage) loadAsync() {
|
func (a *AlbumPage) loadAsync() {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ type AlbumsPage struct {
|
|||||||
widget.BaseWidget
|
widget.BaseWidget
|
||||||
|
|
||||||
title string
|
title string
|
||||||
|
pm *backend.PlaybackManager
|
||||||
im *backend.ImageManager
|
im *backend.ImageManager
|
||||||
lm *backend.LibraryManager
|
lm *backend.LibraryManager
|
||||||
nav func(Route)
|
nav func(Route)
|
||||||
@@ -27,7 +28,6 @@ type AlbumsPage struct {
|
|||||||
titleDisp *widget.RichText
|
titleDisp *widget.RichText
|
||||||
sortOrder *selectWidget
|
sortOrder *selectWidget
|
||||||
container *fyne.Container
|
container *fyne.Container
|
||||||
OnPlayAlbum func(string, int)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type selectWidget struct {
|
type selectWidget struct {
|
||||||
@@ -51,9 +51,10 @@ func (s *selectWidget) MinSize() fyne.Size {
|
|||||||
return fyne.NewSize(170, s.height)
|
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{
|
a := &AlbumsPage{
|
||||||
title: title,
|
title: title,
|
||||||
|
pm: pm,
|
||||||
lm: lm,
|
lm: lm,
|
||||||
im: im,
|
im: im,
|
||||||
nav: nav,
|
nav: nav,
|
||||||
@@ -98,6 +99,7 @@ func (a *AlbumsPage) createContainer(searchgrid bool) {
|
|||||||
func restoreAlbumsPage(saved *savedAlbumsPage) *AlbumsPage {
|
func restoreAlbumsPage(saved *savedAlbumsPage) *AlbumsPage {
|
||||||
a := &AlbumsPage{
|
a := &AlbumsPage{
|
||||||
title: saved.title,
|
title: saved.title,
|
||||||
|
pm: saved.pm,
|
||||||
lm: saved.lm,
|
lm: saved.lm,
|
||||||
im: saved.im,
|
im: saved.im,
|
||||||
nav: saved.nav,
|
nav: saved.nav,
|
||||||
@@ -146,10 +148,6 @@ func (a *AlbumsPage) SearchWidget() fyne.Focusable {
|
|||||||
return a.searcher.Entry
|
return a.searcher.Entry
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlbumsPage) SetPlayAlbumCallback(cb func(string, int)) {
|
|
||||||
a.OnPlayAlbum = cb
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *AlbumsPage) Reload() {
|
func (a *AlbumsPage) Reload() {
|
||||||
if a.searchText != "" {
|
if a.searchText != "" {
|
||||||
a.doSearch(a.searchText)
|
a.doSearch(a.searchText)
|
||||||
@@ -162,6 +160,7 @@ func (a *AlbumsPage) Reload() {
|
|||||||
func (a *AlbumsPage) Save() SavedPage {
|
func (a *AlbumsPage) Save() SavedPage {
|
||||||
sa := &savedAlbumsPage{
|
sa := &savedAlbumsPage{
|
||||||
title: a.title,
|
title: a.title,
|
||||||
|
pm: a.pm,
|
||||||
lm: a.lm,
|
lm: a.lm,
|
||||||
im: a.im,
|
im: a.im,
|
||||||
nav: a.nav,
|
nav: a.nav,
|
||||||
@@ -189,9 +188,7 @@ func (a *AlbumsPage) doSearch(query string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlbumsPage) onPlayAlbum(albumID string) {
|
func (a *AlbumsPage) onPlayAlbum(albumID string) {
|
||||||
if a.OnPlayAlbum != nil {
|
a.pm.PlayAlbum(albumID, 0)
|
||||||
a.OnPlayAlbum(albumID, 0)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlbumsPage) onShowArtistPage(artistID string) {
|
func (a *AlbumsPage) onShowArtistPage(artistID string) {
|
||||||
@@ -218,6 +215,7 @@ func (a *AlbumsPage) CreateRenderer() fyne.WidgetRenderer {
|
|||||||
type savedAlbumsPage struct {
|
type savedAlbumsPage struct {
|
||||||
title string
|
title string
|
||||||
searchText string
|
searchText string
|
||||||
|
pm *backend.PlaybackManager
|
||||||
lm *backend.LibraryManager
|
lm *backend.LibraryManager
|
||||||
im *backend.ImageManager
|
im *backend.ImageManager
|
||||||
nav func(Route)
|
nav func(Route)
|
||||||
|
|||||||
@@ -31,10 +31,6 @@ type Searchable interface {
|
|||||||
SearchWidget() fyne.Focusable
|
SearchWidget() fyne.Focusable
|
||||||
}
|
}
|
||||||
|
|
||||||
type CanPlayAlbum interface {
|
|
||||||
SetPlayAlbumCallback(func(albumID string, startingTrack int))
|
|
||||||
}
|
|
||||||
|
|
||||||
type CanShowNowPlaying interface {
|
type CanShowNowPlaying interface {
|
||||||
OnSongChange(song *subsonic.Child)
|
OnSongChange(song *subsonic.Child)
|
||||||
}
|
}
|
||||||
@@ -98,11 +94,6 @@ func (b *BrowsingPane) doSetPage(p Page) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
b.curPage = p
|
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 {
|
if np, ok := p.(CanShowNowPlaying); ok {
|
||||||
np.OnSongChange(b.app.PlaybackManager.NowPlaying())
|
np.OnSongChange(b.app.PlaybackManager.NowPlaying())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ func (r Router) CreatePage(rte Route) Page {
|
|||||||
case Album:
|
case Album:
|
||||||
return NewAlbumPage(rte.Arg, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.Controller, r.OpenRoute)
|
return NewAlbumPage(rte.Arg, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.Controller, r.OpenRoute)
|
||||||
case Albums:
|
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:
|
case Artist:
|
||||||
return NewArtistPage(rte.Arg, r.App.ServerManager, r.App.ImageManager, r.Controller, r.OpenRoute)
|
return NewArtistPage(rte.Arg, r.App.ServerManager, r.App.ImageManager, r.Controller, r.OpenRoute)
|
||||||
case Artists:
|
case Artists:
|
||||||
|
|||||||
Reference in New Issue
Block a user