add loading indicator and err/timeout toast to Album and Playlist pages (todo: other pages)

This commit is contained in:
Drew Weymouth
2025-02-14 17:15:03 -03:00
parent e10d167350
commit 3a3774f5b6
5 changed files with 50 additions and 4 deletions
+13 -1
View File
@@ -102,6 +102,7 @@ type Tracklist struct {
shareMenuItem *fyne.MenuItem
songRadioMenuItem *fyne.MenuItem
infoMenuItem *fyne.MenuItem
loadingDots *LoadingDots
container *fyne.Container
}
@@ -199,17 +200,28 @@ func NewTracklist(tracks []*mediaprovider.Track, im *backend.ImageManager, useCo
t.OnReorderTracks(t.SelectedTrackIDs(), insertPos)
}
}
t.container = container.NewBorder(t.hdr, nil, nil, nil, t.list)
t.loadingDots = NewLoadingDots()
t.container = container.NewBorder(t.hdr, nil, nil, nil,
container.NewStack(t.list, container.NewCenter(t.loadingDots)))
return t
}
func (t *Tracklist) Reset() {
t.SetLoading(false)
t.Clear()
t.Options = TracklistOptions{}
t.ctxMenu = nil
t.SetSorting(TracklistSort{})
}
func (t *Tracklist) SetLoading(loading bool) {
if loading {
t.loadingDots.Start()
} else {
t.loadingDots.Stop()
}
}
func (t *Tracklist) Scroll(amount float32) {
t.list.ScrollToOffset(t.list.GetScrollOffset() + amount)
}
+3
View File
@@ -29,12 +29,14 @@ func NewTracklistLoader(tracklist *Tracklist, iter mediaprovider.TrackIterator)
}
t.tracklist.OnTrackShown = t.onTrackShown
t.fetching = true
t.tracklist.SetLoading(true)
go t.loadMoreTracks(25)
return &t
}
// Cancels all asynchronous loads so that they will no longer modify the tracklist.
func (t *TracklistLoader) Dispose() {
t.tracklist.SetLoading(false)
t.disposed.Store(true)
t.tracklist.OnTrackShown = nil
}
@@ -71,6 +73,7 @@ func (t *TracklistLoader) loadMoreTracks(num int) {
return
}
fyne.Do(func() {
t.tracklist.SetLoading(false)
t.tracklist.AppendTracks(t.trackBuffer)
t.len += len(t.trackBuffer)
})