more work on fullscreen page

This commit is contained in:
Drew Weymouth
2024-03-01 16:59:04 -08:00
parent 9ed2d8502b
commit f1e5c55461
2 changed files with 58 additions and 24 deletions
+21 -14
View File
@@ -5,9 +5,11 @@ import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/dweymouth/supersonic/ui/layouts"
"github.com/dweymouth/supersonic/ui/theme"
myTheme "github.com/dweymouth/supersonic/ui/theme"
)
// Shows the current album art, track name, artist name, and album name
@@ -17,12 +19,13 @@ type LargeNowPlayingCard struct {
DisableRating bool
trackName *widget.Hyperlink
trackName *widget.RichText
artistName *MultiHyperlink
albumName *widget.Hyperlink
rating *StarRating
favorite *widget.Icon
cover *ImagePlaceholder
OnTrackNameTapped func()
OnArtistNameTapped func(artistID string)
OnAlbumNameTapped func()
OnShowCoverImage func()
@@ -33,28 +36,38 @@ type LargeNowPlayingCard struct {
func NewLargeNowPlayingCard() *LargeNowPlayingCard {
n := &LargeNowPlayingCard{
trackName: widget.NewHyperlink("", nil),
trackName: widget.NewRichTextWithText(""),
artistName: NewMultiHyperlink(),
albumName: widget.NewHyperlink("", nil),
cover: NewImagePlaceholder(theme.TracksIcon, 300),
rating: NewStarRating(),
favorite: widget.NewIcon(myTheme.NotFavoriteIcon),
cover: NewImagePlaceholder(myTheme.TracksIcon, 300),
}
n.ExtendBaseWidget(n)
n.rating.StarSize = theme.IconInlineSize() + theme.InnerPadding()/2
// set up the layout
n.Content = n.cover
n.Caption = container.New(&layouts.VboxCustomPadding{ExtraPad: -13},
n.trackName,
n.albumName,
n.artistName,
container.NewHBox(
layout.NewSpacer(),
n.favorite,
widget.NewLabel("·"),
n.rating,
layout.NewSpacer(),
),
)
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.trackName.TextStyle.Bold = true
n.albumName.OnTapped = n.onAlbumNameTapped
n.artistName.OnTapped = n.onArtistNameTapped
n.trackName.OnTapped = n.onTrackNameTapped
return n
}
@@ -71,12 +84,6 @@ func (n *LargeNowPlayingCard) onArtistNameTapped(artistID string) {
}
}
func (n *LargeNowPlayingCard) onTrackNameTapped() {
if n.OnTrackNameTapped != nil {
n.OnTrackNameTapped()
}
}
func (n *LargeNowPlayingCard) onShowCoverImage(*fyne.PointEvent) {
if n.OnShowCoverImage != nil {
n.OnShowCoverImage()
@@ -96,7 +103,7 @@ func (n *LargeNowPlayingCard) onSetRating(rating int) {
}
func (n *LargeNowPlayingCard) Update(track string, artists, artistIDs []string, album string) {
n.trackName.SetText(track)
n.trackName.Segments[0].(*widget.TextSegment).Text = track
n.trackName.Hidden = track == ""
n.artistName.BuildSegments(artists, artistIDs)
n.albumName.SetText(album)