reuse album grid on favorites page for searching

This commit is contained in:
Drew Weymouth
2023-07-11 16:50:16 -07:00
parent 2df0514468
commit 8ac7b1935c
+40 -47
View File
@@ -36,15 +36,16 @@ type FavoritesPage struct {
nowPlayingID string nowPlayingID string
pendingViewSwitch bool pendingViewSwitch bool
grid *widgets.GridView grid *widgets.GridView
searchGrid *widgets.GridView gridState *widgets.GridViewState
artistGrid *widgets.GridView searchGridState *widgets.GridViewState
tracklistCtr *fyne.Container artistGrid *widgets.GridView
searcher *widgets.SearchEntry tracklistCtr *fyne.Container
filterBtn *widgets.AlbumFilterButton searcher *widgets.SearchEntry
titleDisp *widget.RichText filterBtn *widgets.AlbumFilterButton
toggleBtns *widgets.ToggleButtonGroup titleDisp *widget.RichText
container *fyne.Container toggleBtns *widgets.ToggleButtonGroup
container *fyne.Container
} }
func NewFavoritesPage(cfg *backend.FavoritesPageConfig, pool *util.WidgetPool, contr *controller.Controller, mp mediaprovider.MediaProvider, pm *backend.PlaybackManager, im *backend.ImageManager) *FavoritesPage { func NewFavoritesPage(cfg *backend.FavoritesPageConfig, pool *util.WidgetPool, contr *controller.Controller, mp mediaprovider.MediaProvider, pm *backend.PlaybackManager, im *backend.ImageManager) *FavoritesPage {
@@ -100,31 +101,31 @@ func (a *FavoritesPage) createContainer(initialView fyne.CanvasObject) {
func restoreFavoritesPage(saved *savedFavoritesPage) *FavoritesPage { func restoreFavoritesPage(saved *savedFavoritesPage) *FavoritesPage {
a := &FavoritesPage{ a := &FavoritesPage{
cfg: saved.cfg, cfg: saved.cfg,
contr: saved.contr, contr: saved.contr,
pool: saved.pool, pool: saved.pool,
pm: saved.pm, pm: saved.pm,
mp: saved.mp, mp: saved.mp,
im: saved.im, im: saved.im,
searchText: saved.searchText, gridState: saved.gridState,
filter: saved.filter, searchGridState: saved.searchGridState,
trackSort: saved.trackSort, searchText: saved.searchText,
filter: saved.filter,
trackSort: saved.trackSort,
} }
a.ExtendBaseWidget(a) a.ExtendBaseWidget(a)
a.createHeader(saved.activeToggleBtn) a.createHeader(saved.activeToggleBtn)
a.grid = widgets.NewGridViewFromState(saved.gridState) state := saved.gridState
if saved.searchText != "" { if saved.searchText != "" {
a.searchGrid = widgets.NewGridViewFromState(saved.searchGridState) state = saved.searchGridState
} }
a.grid = widgets.NewGridViewFromState(state)
a.toggleBtns.SetActivatedButton(saved.activeToggleBtn) a.toggleBtns.SetActivatedButton(saved.activeToggleBtn)
if saved.activeToggleBtn == 1 { if saved.activeToggleBtn == 1 {
a.onShowFavoriteArtists() a.onShowFavoriteArtists()
} else if saved.activeToggleBtn == 2 { } else if saved.activeToggleBtn == 2 {
a.onShowFavoriteSongs() a.onShowFavoriteSongs()
} else if saved.searchText != "" {
a.createContainer(a.searchGrid)
} else { } else {
a.createContainer(a.grid) a.createContainer(a.grid)
} }
@@ -193,11 +194,14 @@ func (a *FavoritesPage) Save() SavedPage {
im: a.im, im: a.im,
filter: a.filter, filter: a.filter,
searchText: a.searchText, searchText: a.searchText,
gridState: a.grid.SaveToState(), gridState: a.gridState,
searchGridState: a.searchGridState,
activeToggleBtn: a.toggleBtns.ActivatedButtonIndex(), activeToggleBtn: a.toggleBtns.ActivatedButtonIndex(),
} }
if a.searchGrid != nil { if a.searchText != "" {
sf.searchGridState = a.searchGrid.SaveToState() sf.searchGridState = a.grid.SaveToState()
} else {
sf.gridState = a.grid.SaveToState()
} }
if a.tracklistCtr != nil { if a.tracklistCtr != nil {
tl := a.tracklistCtr.Objects[0].(*widgets.Tracklist) tl := a.tracklistCtr.Objects[0].(*widgets.Tracklist)
@@ -215,16 +219,13 @@ func (a *FavoritesPage) SearchWidget() fyne.Focusable {
} }
func (a *FavoritesPage) OnSearched(query string) { func (a *FavoritesPage) OnSearched(query string) {
a.searchText = query
if query == "" { if query == "" {
a.container.Objects[0] = a.grid a.grid.ResetFromState(a.gridState)
if a.searchGrid != nil { a.searchGridState = nil
a.searchGrid.Clear() } else {
} a.doSearchAlbums(query)
a.Refresh()
return
} }
a.doSearchAlbums(query) a.searchText = query
} }
var _ CanShowNowPlaying = (*FavoritesPage)(nil) var _ CanShowNowPlaying = (*FavoritesPage)(nil)
@@ -248,26 +249,18 @@ func (a *FavoritesPage) SelectAll() {
} }
func (a *FavoritesPage) doSearchAlbums(query string) { func (a *FavoritesPage) doSearchAlbums(query string) {
iter := a.mp.SearchAlbums(query, a.filter) if a.searchText == "" {
if a.searchGrid == nil { a.gridState = a.grid.SaveToState()
a.searchGrid = widgets.NewGridView(widgets.NewGridViewAlbumIterator(iter), a.im, myTheme.AlbumIcon)
a.contr.ConnectAlbumGridActions(a.searchGrid)
} else {
a.searchGrid.Reset(widgets.NewGridViewAlbumIterator(iter))
} }
a.container.Objects[0] = a.searchGrid iter := widgets.NewGridViewAlbumIterator(a.mp.SearchAlbums(query, a.filter))
a.Refresh() a.grid.Reset(iter)
} }
func (a *FavoritesPage) onShowFavoriteAlbums() { func (a *FavoritesPage) onShowFavoriteAlbums() {
a.cfg.InitialView = "Albums" // save setting a.cfg.InitialView = "Albums" // save setting
a.searcher.Entry.Show() a.searcher.Entry.Show()
a.filterBtn.Show() a.filterBtn.Show()
if a.searchText == "" { a.container.Objects[0] = a.grid
a.container.Objects[0] = a.grid
} else {
a.container.Objects[0] = a.searchGrid
}
a.Refresh() a.Refresh()
} }