begin expandedtracklistrow

This commit is contained in:
Drew Weymouth
2024-05-29 18:57:36 -07:00
parent 9928861db9
commit a9b6d0cc2a
2 changed files with 45 additions and 5 deletions
+1 -3
View File
@@ -21,8 +21,6 @@ import (
"github.com/dweymouth/supersonic/ui/util"
)
const thumbnailSize = 52
type PlayQueueList struct {
widget.BaseWidget
@@ -298,7 +296,7 @@ func NewPlayQueueListRow(playQueueList *PlayQueueList, im *backend.ImageManager,
playingIcon: playingIcon,
playQueueList: playQueueList,
num: widget.NewLabel(""),
cover: NewImagePlaceholder(myTheme.TracksIcon, thumbnailSize),
cover: NewImagePlaceholder(myTheme.TracksIcon, tracklistThumbnailSize),
title: util.NewTruncatingLabel(),
artist: NewMultiHyperlink(),
time: util.NewTrailingAlignLabel(),
+44 -2
View File
@@ -2,14 +2,21 @@ package widgets
import (
"fmt"
"image"
"strconv"
"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/backend"
myTheme "github.com/dweymouth/supersonic/ui/theme"
"github.com/dweymouth/supersonic/ui/util"
)
const tracklistThumbnailSize = 52
type tracklistRowBase struct {
FocusListRowBase
@@ -50,6 +57,9 @@ type TracklistRow interface {
type ExpandedTracklistRow struct {
tracklistRowBase
img *ImagePlaceholder
imageLoader util.ThumbnailLoader
}
type CompactTracklistRow struct {
@@ -61,8 +71,36 @@ var (
_ TracklistRow = (*ExpandedTracklistRow)(nil)
)
func NewTracklistRow(tracklist *Tracklist, playingIcon fyne.CanvasObject) *ExpandedTracklistRow {
return nil
func NewExpandedTracklistRow(tracklist *Tracklist, im *backend.ImageManager, playingIcon fyne.CanvasObject) *ExpandedTracklistRow {
t := &ExpandedTracklistRow{}
t.ExtendBaseWidget(t)
t.tracklistRowBase.create(tracklist)
t.playingIcon = playingIcon
t.img = NewImagePlaceholder(myTheme.TracksIcon, tracklistThumbnailSize)
t.imageLoader = util.NewThumbnailLoader(im, func(i image.Image) {
t.img.SetImage(i, false)
})
t.imageLoader.OnBeforeLoad = func() {
t.img.SetImage(nil, false)
}
titleArtistImg := container.NewBorder(nil, nil,
container.NewPadded(t.img) /*left*/, nil,
container.New(layout.NewCustomPaddedVBoxLayout(theme.Padding()-15),
t.name, t.artist))
v := makeVerticallyCentered // func alias
t.Content = container.New(tracklist.colLayout,
v(t.num), titleArtistImg, v(t.album), v(t.dur), v(t.year), v(t.favorite), v(t.rating), v(t.plays), v(t.comment), v(t.bitrate), v(t.size), v(t.path))
return t
}
func (t *ExpandedTracklistRow) Update(tm *util.TrackListModel, rowNum int) {
if t.trackID != tm.Track.ID {
t.imageLoader.Load(tm.Track.CoverArtID)
}
t.tracklistRowBase.Update(tm, rowNum)
}
func NewCompactTracklistRow(tracklist *Tracklist, playingIcon fyne.CanvasObject) *CompactTracklistRow {
@@ -231,3 +269,7 @@ func (t *tracklistRowBase) TappedSecondary(e *fyne.PointEvent) {
t.OnTappedSecondary(e, t.ListItemID)
}
}
func makeVerticallyCentered(obj fyne.CanvasObject) fyne.CanvasObject {
return container.NewVBox(layout.NewSpacer(), obj, layout.NewSpacer())
}