persist album page tracklist column visibility preference

This commit is contained in:
Drew Weymouth
2023-02-18 21:04:56 -08:00
parent afe37609ea
commit 85e79921da
6 changed files with 64 additions and 23 deletions
+9 -3
View File
@@ -31,6 +31,7 @@ type AlbumPage struct {
type albumPageState struct {
albumID string
cfg *backend.AlbumPageConfig
lm *backend.LibraryManager
pm *backend.PlaybackManager
im *backend.ImageManager
@@ -41,6 +42,7 @@ type albumPageState struct {
func NewAlbumPage(
albumID string,
cfg *backend.AlbumPageConfig,
sm *backend.ServerManager,
pm *backend.PlaybackManager,
lm *backend.LibraryManager,
@@ -51,6 +53,7 @@ func NewAlbumPage(
a := &AlbumPage{
albumPageState: albumPageState{
albumID: albumID,
cfg: cfg,
sm: sm,
pm: pm,
lm: lm,
@@ -62,8 +65,7 @@ func NewAlbumPage(
a.ExtendBaseWidget(a)
a.header = NewAlbumPageHeader(a)
a.tracklist = widgets.NewTracklist(nil)
a.tracklist.SetVisibleColumns([]widgets.TracklistColumn{
widgets.ColumnArtist, widgets.ColumnTime, widgets.ColumnPlays})
a.tracklist.SetVisibleColumns(a.cfg.TracklistColumns)
// connect tracklist actions
a.tracklist.OnPlayTrackAt = a.onPlayTrackAt
a.tracklist.OnAddToQueue = func(tracks []*subsonic.Child) { a.pm.LoadTracks(tracks, true, false) }
@@ -86,6 +88,10 @@ func (a *AlbumPage) CreateRenderer() fyne.WidgetRenderer {
}
func (a *AlbumPage) Save() SavedPage {
// TODO: find a better place to update the tracklist columns preference
// If user changes columns but doesn't navigate to another page,
// we won't be persisting the change
a.cfg.TracklistColumns = a.tracklist.VisibleColumns()
s := a.albumPageState
return &s
}
@@ -254,5 +260,5 @@ func formatMiscLabelStr(a *subsonic.AlbumID3) string {
}
func (s *albumPageState) Restore() Page {
return NewAlbumPage(s.albumID, s.sm, s.pm, s.lm, s.im, s.contr, s.nav)
return NewAlbumPage(s.albumID, s.cfg, s.sm, s.pm, s.lm, s.im, s.contr, s.nav)
}
+1 -1
View File
@@ -39,7 +39,7 @@ func NewNowPlayingPage(
a := &NowPlayingPage{nowPlayingPageState: nowPlayingPageState{contr: contr, sm: sm, pm: pm, nav: nav}}
a.ExtendBaseWidget(a)
a.tracklist = widgets.NewTracklist(nil)
a.tracklist.SetVisibleColumns([]widgets.TracklistColumn{
a.tracklist.SetVisibleColumns([]string{
widgets.ColumnArtist, widgets.ColumnAlbum, widgets.ColumnTime})
a.tracklist.AutoNumber = true
a.tracklist.DisablePlaybackMenu = true
+1 -1
View File
@@ -49,7 +49,7 @@ func NewPlaylistPage(
a.ExtendBaseWidget(a)
a.header = NewPlaylistPageHeader(a)
a.tracklist = widgets.NewTracklist(nil)
a.tracklist.SetVisibleColumns([]widgets.TracklistColumn{
a.tracklist.SetVisibleColumns([]string{
widgets.ColumnArtist, widgets.ColumnAlbum, widgets.ColumnTime, widgets.ColumnPlays})
a.tracklist.AutoNumber = true
a.tracklist.AuxiliaryMenuItems = []*fyne.MenuItem{
+1 -1
View File
@@ -87,7 +87,7 @@ func NewRouter(app *backend.App, controller controller.Controller, nav Navigatio
func (r Router) CreatePage(rte Route) Page {
switch rte.Page {
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.Config.AlbumPage, 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.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.OpenRoute)
case Artist: