don't crash in fullscreen page when stopping (next track = nil)
This commit is contained in:
@@ -102,6 +102,13 @@ func TrackIDOrEmptyStr(track *mediaprovider.Track) string {
|
||||
return track.ID
|
||||
}
|
||||
|
||||
func AlbumIDOrEmptyStr(track *mediaprovider.Track) string {
|
||||
if track == nil {
|
||||
return ""
|
||||
}
|
||||
return track.ID
|
||||
}
|
||||
|
||||
func TracksToIDs(tracks []*mediaprovider.Track) []string {
|
||||
return MapSlice(tracks, func(tr *mediaprovider.Track) string {
|
||||
return tr.ID
|
||||
|
||||
@@ -110,9 +110,15 @@ func (a *FullscreenPage) OnSongChange(song, lastScrobbledIfAny *mediaprovider.Tr
|
||||
if a.imageLoadCancel != nil {
|
||||
a.imageLoadCancel()
|
||||
}
|
||||
a.albumID = song.AlbumID
|
||||
a.nowPlayingID = sharedutil.TrackIDOrEmptyStr(song)
|
||||
a.queueList.SetNowPlaying(a.nowPlayingID)
|
||||
|
||||
a.albumID = sharedutil.AlbumIDOrEmptyStr(song)
|
||||
a.card.Update(song)
|
||||
if song == nil {
|
||||
a.card.SetCoverImage(nil)
|
||||
return
|
||||
}
|
||||
a.imageLoadCancel = a.im.GetFullSizeCoverArtAsync(song.CoverArtID, func(img image.Image, err error) {
|
||||
if err != nil {
|
||||
log.Printf("error loading cover art: %v\n", err)
|
||||
@@ -120,7 +126,6 @@ func (a *FullscreenPage) OnSongChange(song, lastScrobbledIfAny *mediaprovider.Tr
|
||||
a.card.SetCoverImage(img)
|
||||
}
|
||||
})
|
||||
a.queueList.SetNowPlaying(song.ID)
|
||||
}
|
||||
|
||||
func (a *FullscreenPage) Reload() {
|
||||
|
||||
@@ -63,8 +63,6 @@ func NewLargeNowPlayingCard() *LargeNowPlayingCard {
|
||||
|
||||
n.trackName.Segments[0].(*widget.TextSegment).Style.SizeName = theme.SizeNameSubHeadingText
|
||||
n.trackName.Truncation = fyne.TextTruncateEllipsis
|
||||
n.trackName.Hidden = true
|
||||
n.albumName.Hidden = true
|
||||
n.albumName.Truncation = fyne.TextTruncateEllipsis
|
||||
n.trackName.Truncation = fyne.TextTruncateEllipsis
|
||||
n.albumName.OnTapped = n.onAlbumNameTapped
|
||||
@@ -100,13 +98,19 @@ func (n *LargeNowPlayingCard) onSetRating(rating int) {
|
||||
}
|
||||
|
||||
func (n *LargeNowPlayingCard) Update(track *mediaprovider.Track) {
|
||||
n.trackName.Segments[0].(*widget.TextSegment).Text = track.Name
|
||||
n.trackName.Hidden = track.Name == ""
|
||||
n.artistName.BuildSegments(track.ArtistNames, track.ArtistIDs)
|
||||
n.albumName.Text = track.Album
|
||||
n.albumName.Hidden = track.Album == ""
|
||||
n.rating.Rating = track.Rating
|
||||
n.favorite.Favorite = track.Favorite
|
||||
if track != nil {
|
||||
n.trackName.Segments[0].(*widget.TextSegment).Text = track.Name
|
||||
n.artistName.BuildSegments(track.ArtistNames, track.ArtistIDs)
|
||||
n.albumName.Text = track.Album
|
||||
n.rating.Rating = track.Rating
|
||||
n.favorite.Favorite = track.Favorite
|
||||
} else {
|
||||
n.trackName.Segments[0].(*widget.TextSegment).Text = ""
|
||||
n.artistName.BuildSegments([]string{}, []string{})
|
||||
n.albumName.Text = ""
|
||||
n.rating.Rating = 0
|
||||
n.favorite.Favorite = false
|
||||
}
|
||||
|
||||
n.Refresh()
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"fyne.io/fyne/v2/canvas"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/driver/desktop"
|
||||
"fyne.io/fyne/v2/layout"
|
||||
"fyne.io/fyne/v2/theme"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"github.com/dweymouth/supersonic/backend"
|
||||
@@ -19,7 +20,7 @@ import (
|
||||
"github.com/dweymouth/supersonic/ui/util"
|
||||
)
|
||||
|
||||
const thumbnailSize = 60
|
||||
const thumbnailSize = 52
|
||||
|
||||
type PlayQueueList struct {
|
||||
widget.BaseWidget
|
||||
@@ -41,7 +42,8 @@ func NewPlayQueueList(im *backend.ImageManager) *PlayQueueList {
|
||||
p.ExtendBaseWidget(p)
|
||||
|
||||
// #, Cover, Title/Artist, Time
|
||||
p.colLayout = layouts.NewColumnsLayout([]float32{40, thumbnailSize, -1, 60})
|
||||
coverWidth := NewPlayQueueListRow(p, im, layout.NewSpacer()).cover.MinSize().Width
|
||||
p.colLayout = layouts.NewColumnsLayout([]float32{40, coverWidth, -1, 60})
|
||||
|
||||
playIconResource := theme.NewThemedResource(theme.MediaPlayIcon())
|
||||
playIconResource.ColorName = theme.ColorNamePrimary
|
||||
@@ -215,7 +217,7 @@ func NewPlayQueueListRow(playQueueList *PlayQueueList, im *backend.ImageManager,
|
||||
|
||||
p.Content = container.New(playQueueList.colLayout,
|
||||
container.NewCenter(p.num),
|
||||
p.cover,
|
||||
container.NewPadded(p.cover),
|
||||
container.New(&layouts.VboxCustomPadding{ExtraPad: -15},
|
||||
p.title, p.artist),
|
||||
container.NewCenter(p.time),
|
||||
|
||||
Reference in New Issue
Block a user