From a4ce33af35af24016a5f2c2c0742e845020c298a Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Wed, 8 Feb 2023 16:58:01 -0800 Subject: [PATCH] some refactoring around saved pages --- ui/browsing/albumpage.go | 61 ++++++++++++++++++------------------- ui/browsing/artistpage.go | 38 +++++++++-------------- ui/browsing/playlistpage.go | 36 +++++++++------------- 3 files changed, 58 insertions(+), 77 deletions(-) diff --git a/ui/browsing/albumpage.go b/ui/browsing/albumpage.go index e29ff8e..82bb207 100644 --- a/ui/browsing/albumpage.go +++ b/ui/browsing/albumpage.go @@ -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) } diff --git a/ui/browsing/artistpage.go b/ui/browsing/artistpage.go index 765e3b2..b83d9a8 100644 --- a/ui/browsing/artistpage.go +++ b/ui/browsing/artistpage.go @@ -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) } diff --git a/ui/browsing/playlistpage.go b/ui/browsing/playlistpage.go index 178ad4a..523b358 100644 --- a/ui/browsing/playlistpage.go +++ b/ui/browsing/playlistpage.go @@ -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) }