save artist page view settings in config
This commit is contained in:
@@ -29,6 +29,11 @@ type AlbumsPageConfig struct {
|
|||||||
SortOrder string
|
SortOrder string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ArtistPageConfig struct {
|
||||||
|
InitialView string
|
||||||
|
TracklistColumns []string
|
||||||
|
}
|
||||||
|
|
||||||
type FavoritesPageConfig struct {
|
type FavoritesPageConfig struct {
|
||||||
InitialView string
|
InitialView string
|
||||||
TracklistColumns []string
|
TracklistColumns []string
|
||||||
@@ -51,6 +56,7 @@ type Config struct {
|
|||||||
Servers []*ServerConfig
|
Servers []*ServerConfig
|
||||||
AlbumPage AlbumPageConfig
|
AlbumPage AlbumPageConfig
|
||||||
AlbumsPage AlbumsPageConfig
|
AlbumsPage AlbumsPageConfig
|
||||||
|
ArtistPage ArtistPageConfig
|
||||||
FavoritesPage FavoritesPageConfig
|
FavoritesPage FavoritesPageConfig
|
||||||
NowPlayingPage NowPlayingPageConfig
|
NowPlayingPage NowPlayingPageConfig
|
||||||
PlaylistPage PlaylistPageConfig
|
PlaylistPage PlaylistPageConfig
|
||||||
@@ -69,6 +75,10 @@ func DefaultConfig() *Config {
|
|||||||
AlbumsPage: AlbumsPageConfig{
|
AlbumsPage: AlbumsPageConfig{
|
||||||
SortOrder: string(AlbumSortRecentlyAdded),
|
SortOrder: string(AlbumSortRecentlyAdded),
|
||||||
},
|
},
|
||||||
|
ArtistPage: ArtistPageConfig{
|
||||||
|
InitialView: "Discography",
|
||||||
|
TracklistColumns: []string{"Album", "Time", "Plays", "Favorite"},
|
||||||
|
},
|
||||||
FavoritesPage: FavoritesPageConfig{
|
FavoritesPage: FavoritesPageConfig{
|
||||||
TracklistColumns: []string{"Artist", "Album", "Time", "Plays"},
|
TracklistColumns: []string{"Artist", "Album", "Time", "Plays"},
|
||||||
InitialView: "Albums",
|
InitialView: "Albums",
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ type artistPageState struct {
|
|||||||
artistID string
|
artistID string
|
||||||
activeView int
|
activeView int
|
||||||
|
|
||||||
|
cfg *backend.ArtistPageConfig
|
||||||
pm *backend.PlaybackManager
|
pm *backend.PlaybackManager
|
||||||
sm *backend.ServerManager
|
sm *backend.ServerManager
|
||||||
im *backend.ImageManager
|
im *backend.ImageManager
|
||||||
@@ -47,13 +48,18 @@ type ArtistPage struct {
|
|||||||
container *fyne.Container
|
container *fyne.Container
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewArtistPage(artistID string, pm *backend.PlaybackManager, sm *backend.ServerManager, im *backend.ImageManager, contr *controller.Controller) *ArtistPage {
|
func NewArtistPage(artistID string, cfg *backend.ArtistPageConfig, pm *backend.PlaybackManager, sm *backend.ServerManager, im *backend.ImageManager, contr *controller.Controller) *ArtistPage {
|
||||||
return newArtistPage(artistID, pm, sm, im, contr, 0)
|
activeView := 0
|
||||||
|
if cfg.InitialView == "Top Tracks" {
|
||||||
|
activeView = 1
|
||||||
|
}
|
||||||
|
return newArtistPage(artistID, cfg, pm, sm, im, contr, activeView)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newArtistPage(artistID string, pm *backend.PlaybackManager, sm *backend.ServerManager, im *backend.ImageManager, contr *controller.Controller, activeView int) *ArtistPage {
|
func newArtistPage(artistID string, cfg *backend.ArtistPageConfig, pm *backend.PlaybackManager, sm *backend.ServerManager, im *backend.ImageManager, contr *controller.Controller, activeView int) *ArtistPage {
|
||||||
a := &ArtistPage{artistPageState: artistPageState{
|
a := &ArtistPage{artistPageState: artistPageState{
|
||||||
artistID: artistID,
|
artistID: artistID,
|
||||||
|
cfg: cfg,
|
||||||
pm: pm,
|
pm: pm,
|
||||||
sm: sm,
|
sm: sm,
|
||||||
im: im,
|
im: im,
|
||||||
@@ -87,6 +93,13 @@ func (a *ArtistPage) Reload() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *ArtistPage) Save() SavedPage {
|
func (a *ArtistPage) 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
|
||||||
|
if a.tracklistCtr != nil {
|
||||||
|
tl := a.tracklistCtr.Objects[0].(*widgets.Tracklist)
|
||||||
|
a.cfg.TracklistColumns = tl.VisibleColumns()
|
||||||
|
}
|
||||||
s := a.artistPageState
|
s := a.artistPageState
|
||||||
return &s
|
return &s
|
||||||
}
|
}
|
||||||
@@ -159,7 +172,7 @@ func (a *ArtistPage) showTopTracks() {
|
|||||||
}
|
}
|
||||||
tl := widgets.NewTracklist(ts)
|
tl := widgets.NewTracklist(ts)
|
||||||
tl.AutoNumber = true
|
tl.AutoNumber = true
|
||||||
tl.SetVisibleColumns([]string{"Album", "Time", "Year", "Plays"})
|
tl.SetVisibleColumns(a.cfg.TracklistColumns)
|
||||||
tl.SetNowPlaying(a.nowPlayingID)
|
tl.SetNowPlaying(a.nowPlayingID)
|
||||||
a.contr.ConnectTracklistActions(tl)
|
a.contr.ConnectTracklistActions(tl)
|
||||||
a.tracklistCtr = container.New(
|
a.tracklistCtr = container.New(
|
||||||
@@ -179,6 +192,11 @@ func (a *ArtistPage) onViewChange(num int) {
|
|||||||
go a.showTopTracks()
|
go a.showTopTracks()
|
||||||
}
|
}
|
||||||
a.activeView = num
|
a.activeView = num
|
||||||
|
if num == 1 {
|
||||||
|
a.cfg.InitialView = "Top Tracks"
|
||||||
|
} else {
|
||||||
|
a.cfg.InitialView = "Discography"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *ArtistPage) CreateRenderer() fyne.WidgetRenderer {
|
func (a *ArtistPage) CreateRenderer() fyne.WidgetRenderer {
|
||||||
@@ -187,7 +205,7 @@ func (a *ArtistPage) CreateRenderer() fyne.WidgetRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *artistPageState) Restore() Page {
|
func (s *artistPageState) Restore() Page {
|
||||||
return newArtistPage(s.artistID, s.pm, s.sm, s.im, s.contr, s.activeView)
|
return newArtistPage(s.artistID, s.cfg, s.pm, s.sm, s.im, s.contr, s.activeView)
|
||||||
}
|
}
|
||||||
|
|
||||||
type ArtistPageHeader struct {
|
type ArtistPageHeader struct {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func (r Router) CreatePage(rte controller.Route) Page {
|
|||||||
case controller.Albums:
|
case controller.Albums:
|
||||||
return NewAlbumsPage(&r.App.Config.AlbumsPage, r.Controller, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager)
|
return NewAlbumsPage(&r.App.Config.AlbumsPage, r.Controller, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager)
|
||||||
case controller.Artist:
|
case controller.Artist:
|
||||||
return NewArtistPage(rte.Arg, r.App.PlaybackManager, r.App.ServerManager, r.App.ImageManager, r.Controller)
|
return NewArtistPage(rte.Arg, &r.App.Config.ArtistPage, r.App.PlaybackManager, r.App.ServerManager, r.App.ImageManager, r.Controller)
|
||||||
case controller.Artists:
|
case controller.Artists:
|
||||||
return NewArtistsGenresPage(false, r.Controller, r.App.ServerManager)
|
return NewArtistsGenresPage(false, r.Controller, r.App.ServerManager)
|
||||||
case controller.Favorites:
|
case controller.Favorites:
|
||||||
|
|||||||
Reference in New Issue
Block a user