persist tracklist column visibility change immediately
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user