add option to show album years in grid views
This commit is contained in:
@@ -72,6 +72,12 @@ func (a *albumsPageAdapter) SearchIter(query string, filter mediaprovider.AlbumF
|
||||
return widgets.NewGridViewAlbumIterator(a.mp.SearchAlbums(query, filter))
|
||||
}
|
||||
|
||||
func (a *albumsPageAdapter) ConnectGridActions(gv *widgets.GridView) {
|
||||
func (a *albumsPageAdapter) InitGrid(gv *widgets.GridView) {
|
||||
a.contr.ConnectAlbumGridActions(gv)
|
||||
gv.ShowSuffix = a.cfg.ShowYears
|
||||
}
|
||||
|
||||
func (a *albumsPageAdapter) RefreshGrid(gv *widgets.GridView) {
|
||||
gv.ShowSuffix = a.cfg.ShowYears
|
||||
gv.Refresh()
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ func (a *artistsPageAdapter) SearchIter(query string, filter mediaprovider.Artis
|
||||
return widgets.NewGridViewArtistIterator(a.mp.SearchArtists(query, filter))
|
||||
}
|
||||
|
||||
func (a *artistsPageAdapter) ConnectGridActions(gv *widgets.GridView) {
|
||||
func (a *artistsPageAdapter) InitGrid(gv *widgets.GridView) {
|
||||
canShareArtists := false
|
||||
if r, canShare := a.mp.(mediaprovider.SupportsSharing); canShare {
|
||||
canShareArtists = r.CanShareArtists()
|
||||
@@ -76,3 +76,7 @@ func (a *artistsPageAdapter) ConnectGridActions(gv *widgets.GridView) {
|
||||
gv.DisableSharing = !canShareArtists
|
||||
a.contr.ConnectArtistGridActions(gv)
|
||||
}
|
||||
|
||||
func (a *artistsPageAdapter) RefreshGrid(gv *widgets.GridView) {
|
||||
gv.Refresh()
|
||||
}
|
||||
|
||||
@@ -195,6 +195,12 @@ func (b *BrowsingPane) ScrollDown() {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *BrowsingPane) RefreshPage() {
|
||||
if b.curPage != nil {
|
||||
b.curPage.Refresh()
|
||||
}
|
||||
}
|
||||
|
||||
func (b *BrowsingPane) doSetPage(p Page) bool {
|
||||
if b.curPage != nil && b.curPage.Route() == p.Route() {
|
||||
return false
|
||||
|
||||
@@ -70,6 +70,7 @@ func NewFavoritesPage(cfg *backend.FavoritesPageConfig, pool *util.WidgetPool, c
|
||||
} else {
|
||||
a.albumGrid = widgets.NewGridView(iter, a.im, myTheme.AlbumIcon)
|
||||
}
|
||||
a.albumGrid.ShowSuffix = cfg.ShowAlbumYears
|
||||
a.contr.ConnectAlbumGridActions(a.albumGrid)
|
||||
if cfg.InitialView == "Artists" {
|
||||
a.toggleBtns.SetActivatedButton(1)
|
||||
@@ -285,6 +286,13 @@ func (a *FavoritesPage) SelectAll() {
|
||||
}
|
||||
}
|
||||
|
||||
func (a *FavoritesPage) Refresh() {
|
||||
if a.albumGrid != nil {
|
||||
a.albumGrid.ShowSuffix = a.cfg.ShowAlbumYears
|
||||
}
|
||||
a.BaseWidget.Refresh()
|
||||
}
|
||||
|
||||
func (a *FavoritesPage) tracklistOrNil() *widgets.Tracklist {
|
||||
if a.tracklistCtr != nil {
|
||||
return a.tracklistCtr.Objects[0].(*widgets.Tracklist)
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
|
||||
type genrePageAdapter struct {
|
||||
genre string
|
||||
cfg *backend.AlbumsPageConfig
|
||||
contr *controller.Controller
|
||||
mp mediaprovider.MediaProvider
|
||||
pm *backend.PlaybackManager
|
||||
@@ -21,8 +22,8 @@ type genrePageAdapter struct {
|
||||
filterBtn *widgets.AlbumFilterButton
|
||||
}
|
||||
|
||||
func NewGenrePage(genre string, pool *util.WidgetPool, contr *controller.Controller, pm *backend.PlaybackManager, mp mediaprovider.MediaProvider, im *backend.ImageManager) Page {
|
||||
adapter := &genrePageAdapter{genre: genre, contr: contr, mp: mp, pm: pm}
|
||||
func NewGenrePage(genre string, cfg *backend.AlbumsPageConfig, pool *util.WidgetPool, contr *controller.Controller, pm *backend.PlaybackManager, mp mediaprovider.MediaProvider, im *backend.ImageManager) Page {
|
||||
adapter := &genrePageAdapter{genre: genre, cfg: cfg, contr: contr, mp: mp, pm: pm}
|
||||
return NewGridViewPage(adapter, pool, mp, im)
|
||||
}
|
||||
|
||||
@@ -68,6 +69,12 @@ func (a *genrePageAdapter) SearchIter(query string, filter mediaprovider.AlbumFi
|
||||
return widgets.NewGridViewAlbumIterator(a.mp.SearchAlbums(query, filter))
|
||||
}
|
||||
|
||||
func (g *genrePageAdapter) ConnectGridActions(gv *widgets.GridView) {
|
||||
func (g *genrePageAdapter) InitGrid(gv *widgets.GridView) {
|
||||
g.contr.ConnectAlbumGridActions(gv)
|
||||
gv.ShowSuffix = g.cfg.ShowYears
|
||||
}
|
||||
|
||||
func (g *genrePageAdapter) RefreshGrid(gv *widgets.GridView) {
|
||||
gv.ShowSuffix = g.cfg.ShowYears
|
||||
gv.Refresh()
|
||||
}
|
||||
|
||||
@@ -66,8 +66,13 @@ type GridViewPageAdapter[M, F any] interface {
|
||||
// Returns the iterator for the given search query and filter.
|
||||
SearchIter(query string, filter mediaprovider.MediaFilter[M, F]) widgets.GridViewIterator
|
||||
|
||||
// Function that connects the GridView callbacks to the appropriate action handlers.
|
||||
ConnectGridActions(*widgets.GridView)
|
||||
// Function that initialized the GridView with page-specific settings
|
||||
// and connects the GridView callbacks to the appropriate action handlers.
|
||||
InitGrid(*widgets.GridView)
|
||||
|
||||
// Function called when settings may have changed and the grid needs
|
||||
// reconfiguring with possible settings changes.
|
||||
RefreshGrid(*widgets.GridView)
|
||||
}
|
||||
|
||||
type SortableGridViewPageAdapter interface {
|
||||
@@ -124,7 +129,7 @@ func NewGridViewPage[M, F any](
|
||||
gp.grid = widgets.NewGridView(iter, im, adapter.PlaceholderResource())
|
||||
}
|
||||
gp.grid.DisableSharing = !canShare
|
||||
adapter.ConnectGridActions(gp.grid)
|
||||
adapter.InitGrid(gp.grid)
|
||||
gp.createSearchAndFilter()
|
||||
gp.createContainer()
|
||||
return gp
|
||||
@@ -206,6 +211,10 @@ func (g *GridViewPage[M, F]) OnSearched(query string) {
|
||||
g.searchText = query
|
||||
}
|
||||
|
||||
func (g *GridViewPage[M, F]) Refresh() {
|
||||
g.adapter.RefreshGrid(g.grid)
|
||||
}
|
||||
|
||||
func (g *GridViewPage[M, F]) doSearch(query string) {
|
||||
if g.searchText == "" {
|
||||
g.gridState = g.grid.SaveToState()
|
||||
@@ -294,7 +303,7 @@ func (s *savedGridViewPage[M, F]) Restore() Page {
|
||||
} else {
|
||||
gp.grid = widgets.NewGridViewFromState(state)
|
||||
}
|
||||
gp.adapter.ConnectGridActions(gp.grid)
|
||||
gp.adapter.InitGrid(gp.grid)
|
||||
gp.createSearchAndFilter()
|
||||
gp.createContainer()
|
||||
return gp
|
||||
|
||||
@@ -44,7 +44,7 @@ func (r Router) CreatePage(rte controller.Route) Page {
|
||||
case controller.Favorites:
|
||||
return NewFavoritesPage(&r.App.Config.FavoritesPage, r.widgetPool, r.Controller, r.App.ServerManager.Server, r.App.PlaybackManager, r.App.ImageManager)
|
||||
case controller.Genre:
|
||||
return NewGenrePage(rte.Arg, r.widgetPool, r.Controller, r.App.PlaybackManager, r.App.ServerManager.Server, r.App.ImageManager)
|
||||
return NewGenrePage(rte.Arg, &r.App.Config.AlbumsPage, r.widgetPool, r.Controller, r.App.PlaybackManager, r.App.ServerManager.Server, r.App.ImageManager)
|
||||
case controller.Genres:
|
||||
return NewGenresPage(r.Controller, r.App.ServerManager.Server)
|
||||
case controller.NowPlaying:
|
||||
|
||||
Reference in New Issue
Block a user