Files
supersonic/ui/nowplayingcard.go
T

55 lines
1.3 KiB
Go

package ui
import (
"image"
"gomuse/ui/layout"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
type NowPlayingCard struct {
widget.BaseWidget
trackName *widget.Label
artistName *widget.Label
albumName *widget.Label
cover *canvas.Image
c fyne.CanvasObject
}
func NewNowPlayingCard() *NowPlayingCard {
n := &NowPlayingCard{
trackName: widget.NewLabel(""),
artistName: widget.NewLabel(""),
albumName: widget.NewLabel(""),
cover: &canvas.Image{},
}
n.ExtendBaseWidget(n)
n.trackName.Wrapping = fyne.TextTruncate
n.trackName.TextStyle = fyne.TextStyle{Bold: true}
n.artistName.Wrapping = fyne.TextTruncate
n.albumName.Wrapping = fyne.TextTruncate
n.cover.SetMinSize(fyne.NewSize(100, 100))
n.cover.FillMode = canvas.ImageFillContain
n.c = container.NewBorder(nil, nil, n.cover, nil, container.New(&layout.VboxCustomPadding{ExtraPad: -10}, n.trackName, n.artistName, n.albumName))
return n
}
func (n *NowPlayingCard) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(n.c)
}
func (n *NowPlayingCard) Update(track, artist, album string, cover image.Image) {
n.trackName.Text = track
n.artistName.Text = artist
n.albumName.Text = album
n.cover.Image = cover
n.c.Refresh()
}