persist tracklist column visibility change immediately

This commit is contained in:
Drew Weymouth
2023-04-21 19:13:48 -07:00
parent 2f14a09cd8
commit 1171916449
7 changed files with 31 additions and 17 deletions
+3 -4
View File
@@ -64,6 +64,9 @@ func NewAlbumPage(
a.header = NewAlbumPageHeader(a)
a.tracklist = widgets.NewTracklist(nil)
a.tracklist.SetVisibleColumns(a.cfg.TracklistColumns)
a.tracklist.OnVisibleColumnsChanged = func(cols []string) {
a.cfg.TracklistColumns = cols
}
a.contr.ConnectTracklistActions(a.tracklist)
a.container = container.NewBorder(
@@ -79,10 +82,6 @@ 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
}
+3 -7
View File
@@ -108,13 +108,6 @@ func (a *ArtistPage) Reload() {
}
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
return &s
}
@@ -192,6 +185,9 @@ func (a *ArtistPage) showTopTracks() {
tl := widgets.NewTracklist(ts)
tl.AutoNumber = true
tl.SetVisibleColumns(a.cfg.TracklistColumns)
tl.OnVisibleColumnsChanged = func(cols []string) {
a.cfg.TracklistColumns = cols
}
tl.SetNowPlaying(a.nowPlayingID)
a.contr.ConnectTracklistActions(tl)
a.tracklistCtr = container.New(
+3 -4
View File
@@ -167,10 +167,6 @@ func (a *FavoritesPage) Reload() {
}
func (a *FavoritesPage) Save() SavedPage {
if a.tracklistCtr != nil {
tl := a.tracklistCtr.Objects[0].(*widgets.Tracklist)
a.cfg.TracklistColumns = tl.VisibleColumns()
}
sf := &savedFavoritesPage{
cfg: a.cfg,
contr: a.contr,
@@ -314,6 +310,9 @@ func (a *FavoritesPage) onShowFavoriteSongs() {
tracklist := widgets.NewTracklist(s.Song)
tracklist.AutoNumber = true
tracklist.SetVisibleColumns(a.cfg.TracklistColumns)
tracklist.OnVisibleColumnsChanged = func(cols []string) {
a.cfg.TracklistColumns = cols
}
tracklist.SetNowPlaying(a.nowPlayingID)
a.contr.ConnectTracklistActions(tracklist)
a.tracklistCtr = container.New(
+3 -1
View File
@@ -41,6 +41,9 @@ func NewNowPlayingPage(
a.ExtendBaseWidget(a)
a.tracklist = widgets.NewTracklist(nil)
a.tracklist.SetVisibleColumns(conf.TracklistColumns)
a.tracklist.OnVisibleColumnsChanged = func(cols []string) {
a.conf.TracklistColumns = cols
}
a.tracklist.AutoNumber = true
a.tracklist.DisablePlaybackMenu = true
contr.ConnectTracklistActions(a.tracklist)
@@ -62,7 +65,6 @@ func (a *NowPlayingPage) CreateRenderer() fyne.WidgetRenderer {
}
func (a *NowPlayingPage) Save() SavedPage {
a.conf.TracklistColumns = a.tracklist.VisibleColumns()
nps := a.nowPlayingPageState
return &nps
}
+3 -1
View File
@@ -51,6 +51,9 @@ func NewPlaylistPage(
a.header = NewPlaylistPageHeader(a)
a.tracklist = widgets.NewTracklist(nil)
a.tracklist.SetVisibleColumns(conf.TracklistColumns)
a.tracklist.OnVisibleColumnsChanged = func(cols []string) {
conf.TracklistColumns = cols
}
a.tracklist.AutoNumber = true
a.tracklist.AuxiliaryMenuItems = []*fyne.MenuItem{
fyne.NewMenuItem("Move to top", a.onMoveSelectedToTop),
@@ -74,7 +77,6 @@ func (a *PlaylistPage) CreateRenderer() fyne.WidgetRenderer {
}
func (a *PlaylistPage) Save() SavedPage {
a.conf.TracklistColumns = a.tracklist.VisibleColumns()
p := a.playlistPageState
return &p
}
+12
View File
@@ -42,10 +42,18 @@ type tracksPageState struct {
func NewTracksPage(contr *controller.Controller, conf *backend.TracksPageConfig, lm *backend.LibraryManager) *TracksPage {
t := &TracksPage{tracksPageState: tracksPageState{contr: contr, conf: conf, lm: lm}}
t.ExtendBaseWidget(t)
t.tracklist = widgets.NewTracklist(nil)
t.tracklist.AutoNumber = true
t.tracklist.SetVisibleColumns(conf.TracklistColumns)
t.tracklist.OnVisibleColumnsChanged = func(cols []string) {
t.conf.TracklistColumns = cols
if t.searchTracklist != nil {
t.searchTracklist.SetVisibleColumns(cols)
}
}
contr.ConnectTracklistActions(t.tracklist)
t.title = widget.NewRichTextWithText("All Tracks")
t.title.Segments[0].(*widget.TextSegment).Style.SizeName = widget.RichTextStyleHeading.SizeName
t.playRandom = widget.NewButtonWithIcon("Play random", res.ResShuffleInvertSvg, t.playRandomSongs)
@@ -113,6 +121,10 @@ func (t *TracksPage) doSearch(query string) {
t.searchTracklist.AutoNumber = true
t.searchTracklist.SetVisibleColumns(t.conf.TracklistColumns)
t.searchTracklist.SetNowPlaying(t.nowPlayingID)
t.searchTracklist.OnVisibleColumnsChanged = func(cols []string) {
t.conf.TracklistColumns = cols
t.tracklist.SetVisibleColumns(cols)
}
t.contr.ConnectTracklistActions(t.searchTracklist)
} else {
t.searchTracklist.Clear()
+4
View File
@@ -67,6 +67,7 @@ type Tracklist struct {
OnShowAlbumPage func(albumID string)
OnColumnVisibilityMenuShown func(*widget.PopUp)
OnVisibleColumnsChanged func([]string)
OnTrackShown func(tracknum int)
visibleColumns []bool
@@ -182,6 +183,9 @@ func (t *Tracklist) setColumnVisible(colNum int, vis bool) {
}
t.visibleColumns[colNum] = vis
t.list.Refresh()
if t.OnVisibleColumnsChanged != nil {
t.OnVisibleColumnsChanged(t.VisibleColumns())
}
}
func (t *Tracklist) SetNowPlaying(trackID string) {