some refactoring around saved pages

This commit is contained in:
Drew Weymouth
2023-02-08 16:58:01 -08:00
parent edea337e7f
commit a4ce33af35
3 changed files with 58 additions and 77 deletions
+30 -31
View File
@@ -19,21 +19,26 @@ import (
type AlbumPage struct {
widget.BaseWidget
albumID string
sm *backend.ServerManager
pm *backend.PlaybackManager
im *backend.ImageManager
lm *backend.LibraryManager
nav func(Route)
header *AlbumPageHeader
tracklist *widgets.Tracklist
nowPlayingID string
container *fyne.Container
popUpProvider util.PopUpProvider
albumPageState
header *AlbumPageHeader
tracklist *widgets.Tracklist
nowPlayingID string
container *fyne.Container
OnPlayAlbum func(string, int)
}
type albumPageState struct {
albumID string
lm *backend.LibraryManager
pm *backend.PlaybackManager
im *backend.ImageManager
sm *backend.ServerManager
popUpProvider util.PopUpProvider
nav func(Route)
}
func NewAlbumPage(
albumID string,
sm *backend.ServerManager,
@@ -43,7 +48,17 @@ func NewAlbumPage(
popUpProvider util.PopUpProvider,
nav func(Route),
) *AlbumPage {
a := &AlbumPage{albumID: albumID, sm: sm, pm: pm, lm: lm, im: im, nav: nav, popUpProvider: popUpProvider}
a := &AlbumPage{
albumPageState: albumPageState{
albumID: albumID,
sm: sm,
pm: pm,
lm: lm,
im: im,
nav: nav,
popUpProvider: popUpProvider,
},
}
a.ExtendBaseWidget(a)
a.header = NewAlbumPageHeader(a)
a.tracklist = widgets.NewTracklist(nil)
@@ -72,14 +87,8 @@ func (a *AlbumPage) SetPlayAlbumCallback(cb func(string, int)) {
}
func (a *AlbumPage) Save() SavedPage {
return &savedAlbumPage{
albumID: a.albumID,
lm: a.lm,
pm: a.pm,
im: a.im,
nav: a.nav,
popUpProvider: a.popUpProvider,
}
s := a.albumPageState
return &s
}
func (a *AlbumPage) Route() Route {
@@ -239,16 +248,6 @@ func formatMiscLabelStr(a *subsonic.AlbumID3) string {
return fmt.Sprintf("%d · %d tracks · %s", a.Year, a.SongCount, util.SecondsToTimeString(float64(a.Duration)))
}
type savedAlbumPage struct {
albumID string
lm *backend.LibraryManager
pm *backend.PlaybackManager
im *backend.ImageManager
sm *backend.ServerManager
popUpProvider util.PopUpProvider
nav func(Route)
}
func (s *savedAlbumPage) Restore() Page {
func (s *albumPageState) Restore() Page {
return NewAlbumPage(s.albumID, s.sm, s.pm, s.lm, s.im, s.popUpProvider, s.nav)
}
+14 -24
View File
@@ -21,16 +21,19 @@ import (
var _ fyne.Widget = (*ArtistPage)(nil)
type artistPageState struct {
artistID string
sm *backend.ServerManager
im *backend.ImageManager
nav func(Route)
popUpProvider util.PopUpProvider
}
type ArtistPage struct {
widget.BaseWidget
artistID string
im *backend.ImageManager
sm *backend.ServerManager
nav func(Route)
popUpProvider util.PopUpProvider
artistPageState
grid *widgets.AlbumGrid
header *ArtistPageHeader
container *fyne.Container
@@ -38,13 +41,13 @@ type ArtistPage struct {
}
func NewArtistPage(artistID string, sm *backend.ServerManager, im *backend.ImageManager, popUp util.PopUpProvider, nav func(Route)) *ArtistPage {
a := &ArtistPage{
a := &ArtistPage{artistPageState: artistPageState{
artistID: artistID,
sm: sm,
im: im,
nav: nav,
popUpProvider: popUp,
}
}}
a.ExtendBaseWidget(a)
a.header = NewArtistPageHeader(a, nav)
a.container = container.NewBorder(
@@ -67,13 +70,8 @@ func (a *ArtistPage) Reload() {
}
func (a *ArtistPage) Save() SavedPage {
return &savedArtistPage{
artistID: a.artistID,
sm: a.sm,
im: a.im,
nav: a.nav,
popUpProvider: a.popUpProvider,
}
s := a.artistPageState
return &s
}
func (a *ArtistPage) onPlayAlbum(albumID string) {
@@ -112,15 +110,7 @@ func (a *ArtistPage) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(a.container)
}
type savedArtistPage struct {
artistID string
sm *backend.ServerManager
im *backend.ImageManager
nav func(Route)
popUpProvider util.PopUpProvider
}
func (s *savedArtistPage) Restore() Page {
func (s *artistPageState) Restore() Page {
return NewArtistPage(s.artistID, s.sm, s.im, s.popUpProvider, s.nav)
}
+14 -22
View File
@@ -19,17 +19,22 @@ import (
type PlaylistPage struct {
widget.BaseWidget
playlistID string
sm *backend.ServerManager
pm *backend.PlaybackManager
im *backend.ImageManager
nav func(Route)
playlistPageState
header *PlaylistPageHeader
tracklist *widgets.Tracklist
nowPlayingID string
container *fyne.Container
}
type playlistPageState struct {
playlistID string
sm *backend.ServerManager
pm *backend.PlaybackManager
im *backend.ImageManager
nav func(Route)
}
func NewPlaylistPage(
playlistID string,
sm *backend.ServerManager,
@@ -37,7 +42,7 @@ func NewPlaylistPage(
im *backend.ImageManager,
nav func(Route),
) *PlaylistPage {
a := &PlaylistPage{playlistID: playlistID, sm: sm, pm: pm, im: im}
a := &PlaylistPage{playlistPageState: playlistPageState{playlistID: playlistID, sm: sm, pm: pm, im: im}}
a.ExtendBaseWidget(a)
a.header = NewPlaylistPageHeader(a)
a.tracklist = widgets.NewTracklist(nil)
@@ -62,13 +67,8 @@ func (a *PlaylistPage) CreateRenderer() fyne.WidgetRenderer {
}
func (a *PlaylistPage) Save() SavedPage {
return &savedPlaylistPage{
playlistID: a.playlistID,
sm: a.sm,
pm: a.pm,
im: a.im,
nav: a.nav,
}
p := a.playlistPageState
return &p
}
func (a *PlaylistPage) Route() Route {
@@ -194,14 +194,6 @@ func (a *PlaylistPageHeader) formatPlaylistTrackTimeStr(p *subsonic.Playlist) st
return fmt.Sprintf("%d tracks, %s", p.SongCount, util.SecondsToTimeString(float64(p.Duration)))
}
type savedPlaylistPage struct {
playlistID string
sm *backend.ServerManager
pm *backend.PlaybackManager
im *backend.ImageManager
nav func(Route)
}
func (s *savedPlaylistPage) Restore() Page {
func (s *playlistPageState) Restore() Page {
return NewPlaylistPage(s.playlistID, s.sm, s.pm, s.im, s.nav)
}