beginning work toward adding artists and genres pages

This commit is contained in:
Drew Weymouth
2023-01-14 15:26:07 -08:00
parent ece26efafb
commit ab72d0dbdd
2 changed files with 135 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
package widgets
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget"
)
type ArtistGenrePlaylistItemModel struct {
ID string
Name string
AlbumCount int
TrackCount int
Favorite bool
}
type ArtistGenrePlaylist struct {
widget.BaseWidget
Items []ArtistGenrePlaylistItemModel
ShowAlbumCount bool
ShowTrackCount bool
list *widget.List
}
type ArtistGenrePlaylistRow struct {
widget.BaseWidget
Item ArtistGenrePlaylistItemModel
container *fyne.Container
}
func NewArtistGenrePlaylistRow() *ArtistGenrePlaylistRow {
a := &ArtistGenrePlaylistRow{}
a.ExtendBaseWidget(a)
return a
}
func NewArtistGenrePlaylist(items []ArtistGenrePlaylistItemModel) *ArtistGenrePlaylist {
a := &ArtistGenrePlaylist{
Items: items,
}
a.ExtendBaseWidget(a)
a.list = widget.NewList(
func() int { return len(a.Items) },
func() fyne.CanvasObject { return NewArtistGenrePlaylistRow() },
func(id widget.ListItemID, item fyne.CanvasObject) {
row := item.(*ArtistGenrePlaylistRow)
row.Item = a.Items[id]
},
)
return a
}
func (a *ArtistGenrePlaylist) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(a.list)
}
func (a *ArtistGenrePlaylistRow) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(a.container)
}