diff --git a/ui/browsing/albumpage.go b/ui/browsing/albumpage.go index 8707ce3..4782af3 100644 --- a/ui/browsing/albumpage.go +++ b/ui/browsing/albumpage.go @@ -65,6 +65,10 @@ func (a *AlbumPage) OnSongChange(song *subsonic.Child) { a.tracklist.SetNowPlaying(a.nowPlayingID) } +func (a *AlbumPage) Reload() { + a.loadAsync() +} + func (a *AlbumPage) onPlayTrackAt(tracknum int) { if a.OnPlayAlbum != nil { a.OnPlayAlbum(a.albumID, tracknum) diff --git a/ui/browsing/albumspage.go b/ui/browsing/albumspage.go index 0923a20..dda1716 100644 --- a/ui/browsing/albumspage.go +++ b/ui/browsing/albumspage.go @@ -90,6 +90,26 @@ func (a *AlbumsPage) OnSearched(query string) { a.Refresh() return } + a.doSearch(query) +} + +func (a *AlbumsPage) Route() Route { + return AlbumsRoute(backend.AlbumSortOrder(a.sortOrder.Selected)) +} + +func (a *AlbumsPage) SetPlayAlbumCallback(cb func(string, int)) { + a.OnPlayAlbum = cb +} + +func (a *AlbumsPage) Reload() { + if a.searchText != "" { + a.doSearch(a.searchText) + } else { + a.grid.Reset(a.lm.AlbumsIter(backend.AlbumSortOrder(a.sortOrder.Selected))) + } +} + +func (a *AlbumsPage) doSearch(query string) { if a.searchGrid == nil { a.searchGrid = widgets.NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail, false /*showYear*/) a.searchGrid.OnPlayAlbum = a.onPlayAlbum @@ -102,14 +122,6 @@ func (a *AlbumsPage) OnSearched(query string) { a.Refresh() } -func (a *AlbumsPage) Route() Route { - return AlbumsRoute(backend.AlbumSortOrder(a.sortOrder.Selected)) -} - -func (a *AlbumsPage) SetPlayAlbumCallback(cb func(string, int)) { - a.OnPlayAlbum = cb -} - func (a *AlbumsPage) onPlayAlbum(albumID string) { if a.OnPlayAlbum != nil { a.OnPlayAlbum(albumID, 0) diff --git a/ui/browsing/artistpage.go b/ui/browsing/artistpage.go index f79f2f1..d89b4e0 100644 --- a/ui/browsing/artistpage.go +++ b/ui/browsing/artistpage.go @@ -53,6 +53,10 @@ func (a *ArtistPage) SetPlayAlbumCallback(cb func(string, int)) { a.OnPlayAlbum = cb } +func (a *ArtistPage) Reload() { + a.loadAsync() +} + func (a *ArtistPage) onPlayAlbum(albumID string) { if a.OnPlayAlbum != nil { a.OnPlayAlbum(albumID, 0) diff --git a/ui/browsing/browsingpane.go b/ui/browsing/browsingpane.go index 046d3ad..308ca44 100644 --- a/ui/browsing/browsingpane.go +++ b/ui/browsing/browsingpane.go @@ -19,6 +19,7 @@ import ( type Page interface { fyne.CanvasObject + Reload() Route() Route } @@ -43,6 +44,7 @@ type BrowsingPane struct { forward *widget.Button back *widget.Button + reload *widget.Button history []Page historyIdx int @@ -62,12 +64,13 @@ func NewBrowsingPane(app *backend.App) *BrowsingPane { b.searchBar.OnTextChanged = b.onSearchTextChanged b.back = widget.NewButtonWithIcon("", theme.NavigateBackIcon(), b.GoBack) b.forward = widget.NewButtonWithIcon("", theme.NavigateNextIcon(), b.GoForward) + b.reload = widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), b.Reload) b.app.PlaybackManager.OnSongChange(b.onSongChange) b.pageContainer = container.NewMax( canvas.NewRectangle(color.RGBA{R: 24, G: 24, B: 24, A: 255}), layout.NewSpacer()) b.container = container.NewBorder( - container.NewHBox(b.back, b.forward, b.searchBar), + container.NewHBox(b.back, b.forward, b.reload, b.searchBar), nil, nil, nil, b.pageContainer) return b } @@ -127,6 +130,12 @@ func (b *BrowsingPane) GoForward() { } } +func (b *BrowsingPane) Reload() { + if b.curPage != nil { + b.curPage.Reload() + } +} + func (b *BrowsingPane) onSearchTextChanged(text string) { if text == "" { b.sendSearch("")