hook up favorite status with GridView items

This commit is contained in:
Drew Weymouth
2024-12-28 16:37:59 -08:00
parent ee9fd597f9
commit f702ef5c31
4 changed files with 36 additions and 15 deletions
+8 -4
View File
@@ -60,6 +60,8 @@ func (g gridViewAlbumIterator) NextN(n int) []GridViewItemModel {
CoverArtID: al.CoverArtID,
Secondary: al.ArtistNames,
SecondaryIDs: al.ArtistIDs,
CanFavorite: true,
IsFavorite: al.Favorite,
}
if y := al.Date.Year; y != nil {
model.Suffix = strconv.Itoa(*al.Date.Year)
@@ -84,10 +86,12 @@ func (g gridViewArtistIterator) NextN(n int) []GridViewItemModel {
albumsLabel = lang.L("album")
}
return GridViewItemModel{
Name: ar.Name,
ID: ar.ID,
CoverArtID: ar.CoverArtID,
Secondary: []string{fmt.Sprintf("%d %s", ar.AlbumCount, albumsLabel)},
Name: ar.Name,
ID: ar.ID,
CoverArtID: ar.CoverArtID,
Secondary: []string{fmt.Sprintf("%d %s", ar.AlbumCount, albumsLabel)},
CanFavorite: true,
IsFavorite: ar.Favorite,
}
})
}
+14 -1
View File
@@ -27,6 +27,9 @@ var _ fyne.Widget = (*coverImage)(nil)
type coverImage struct {
widget.BaseWidget
EnableFavorite bool
IsFavorite bool
Im *ImagePlaceholder
playbtn *canvas.Image
favoriteButton *canvas.Image
@@ -118,11 +121,11 @@ func (c *coverImage) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(
container.NewStack(
c.Im,
container.NewCenter(c.playbtn),
container.NewGridWithRows(2,
layout.NewSpacer(),
c.bottomPanel,
),
container.NewCenter(c.playbtn),
),
)
}
@@ -151,6 +154,12 @@ func (c *coverImage) TappedSecondary(e *fyne.PointEvent) {
func (a *coverImage) MouseIn(*desktop.MouseEvent) {
a.playbtn.Hidden = false
if a.IsFavorite {
a.favoriteButton.Resource = heartFilledResource
} else {
a.favoriteButton.Resource = heartUnfilledResource
}
a.favoriteButton.Hidden = !a.EnableFavorite
a.bottomPanel.Hidden = false
a.Refresh()
}
@@ -204,6 +213,8 @@ type GridViewItemModel struct {
Secondary []string
SecondaryIDs []string
Suffix string
CanFavorite bool
IsFavorite bool
}
type GridViewItem struct {
@@ -282,6 +293,8 @@ func (g *GridViewItem) NeedsUpdate(model GridViewItemModel) bool {
}
func (g *GridViewItem) Update(model GridViewItemModel) {
g.Cover.IsFavorite = model.IsFavorite
g.Cover.EnableFavorite = model.CanFavorite
g.itemID = model.ID
g.secondaryIDs = model.SecondaryIDs
g.primaryText.SetText(model.Name)