add reload to browsing pane + pages

This commit is contained in:
Drew Weymouth
2023-01-06 09:28:50 -08:00
parent 7b3aca6027
commit 805087cc3d
4 changed files with 38 additions and 9 deletions
+4
View File
@@ -65,6 +65,10 @@ func (a *AlbumPage) OnSongChange(song *subsonic.Child) {
a.tracklist.SetNowPlaying(a.nowPlayingID) a.tracklist.SetNowPlaying(a.nowPlayingID)
} }
func (a *AlbumPage) Reload() {
a.loadAsync()
}
func (a *AlbumPage) onPlayTrackAt(tracknum int) { func (a *AlbumPage) onPlayTrackAt(tracknum int) {
if a.OnPlayAlbum != nil { if a.OnPlayAlbum != nil {
a.OnPlayAlbum(a.albumID, tracknum) a.OnPlayAlbum(a.albumID, tracknum)
+20 -8
View File
@@ -90,6 +90,26 @@ func (a *AlbumsPage) OnSearched(query string) {
a.Refresh() a.Refresh()
return 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 { if a.searchGrid == nil {
a.searchGrid = widgets.NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail, false /*showYear*/) a.searchGrid = widgets.NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail, false /*showYear*/)
a.searchGrid.OnPlayAlbum = a.onPlayAlbum a.searchGrid.OnPlayAlbum = a.onPlayAlbum
@@ -102,14 +122,6 @@ func (a *AlbumsPage) OnSearched(query string) {
a.Refresh() 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) { func (a *AlbumsPage) onPlayAlbum(albumID string) {
if a.OnPlayAlbum != nil { if a.OnPlayAlbum != nil {
a.OnPlayAlbum(albumID, 0) a.OnPlayAlbum(albumID, 0)
+4
View File
@@ -53,6 +53,10 @@ func (a *ArtistPage) SetPlayAlbumCallback(cb func(string, int)) {
a.OnPlayAlbum = cb a.OnPlayAlbum = cb
} }
func (a *ArtistPage) Reload() {
a.loadAsync()
}
func (a *ArtistPage) onPlayAlbum(albumID string) { func (a *ArtistPage) onPlayAlbum(albumID string) {
if a.OnPlayAlbum != nil { if a.OnPlayAlbum != nil {
a.OnPlayAlbum(albumID, 0) a.OnPlayAlbum(albumID, 0)
+10 -1
View File
@@ -19,6 +19,7 @@ import (
type Page interface { type Page interface {
fyne.CanvasObject fyne.CanvasObject
Reload()
Route() Route Route() Route
} }
@@ -43,6 +44,7 @@ type BrowsingPane struct {
forward *widget.Button forward *widget.Button
back *widget.Button back *widget.Button
reload *widget.Button
history []Page history []Page
historyIdx int historyIdx int
@@ -62,12 +64,13 @@ func NewBrowsingPane(app *backend.App) *BrowsingPane {
b.searchBar.OnTextChanged = b.onSearchTextChanged b.searchBar.OnTextChanged = b.onSearchTextChanged
b.back = widget.NewButtonWithIcon("", theme.NavigateBackIcon(), b.GoBack) b.back = widget.NewButtonWithIcon("", theme.NavigateBackIcon(), b.GoBack)
b.forward = widget.NewButtonWithIcon("", theme.NavigateNextIcon(), b.GoForward) b.forward = widget.NewButtonWithIcon("", theme.NavigateNextIcon(), b.GoForward)
b.reload = widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), b.Reload)
b.app.PlaybackManager.OnSongChange(b.onSongChange) b.app.PlaybackManager.OnSongChange(b.onSongChange)
b.pageContainer = container.NewMax( b.pageContainer = container.NewMax(
canvas.NewRectangle(color.RGBA{R: 24, G: 24, B: 24, A: 255}), canvas.NewRectangle(color.RGBA{R: 24, G: 24, B: 24, A: 255}),
layout.NewSpacer()) layout.NewSpacer())
b.container = container.NewBorder( 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) nil, nil, nil, b.pageContainer)
return b 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) { func (b *BrowsingPane) onSearchTextChanged(text string) {
if text == "" { if text == "" {
b.sendSearch("") b.sendSearch("")