don't crash in fullscreen page when stopping (next track = nil)

This commit is contained in:
Drew Weymouth
2024-03-02 17:10:32 -08:00
parent b8ab480294
commit a458f14327
4 changed files with 32 additions and 14 deletions
+13 -9
View File
@@ -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()
}
+5 -3
View File
@@ -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),