show album year on artist page instead of artist name

This commit is contained in:
Drew Weymouth
2023-01-01 10:12:58 -08:00
parent 12d66680cf
commit 97458fa743
4 changed files with 30 additions and 12 deletions
+8 -3
View File
@@ -3,6 +3,7 @@ package ui
import (
"context"
"image"
"log"
"supersonic/backend"
"supersonic/ui/widgets"
@@ -21,6 +22,7 @@ type AlbumGrid struct {
iter backend.AlbumIterator
fetching bool
done bool
showYear bool
imageFetcher ImageFetcher
OnPlayAlbum func(string)
@@ -29,18 +31,19 @@ type AlbumGrid struct {
var _ fyne.Widget = (*AlbumGrid)(nil)
func NewFixedAlbumGrid(albums []*subsonic.AlbumID3, fetch ImageFetcher) *AlbumGrid {
func NewFixedAlbumGrid(albums []*subsonic.AlbumID3, fetch ImageFetcher, showYear bool) *AlbumGrid {
ag := &AlbumGrid{
albums: albums,
done: true,
imageFetcher: fetch,
showYear: showYear,
}
ag.ExtendBaseWidget(ag)
ag.createGridWrapList()
return ag
}
func NewAlbumGrid(iter backend.AlbumIterator, fetch ImageFetcher) *AlbumGrid {
func NewAlbumGrid(iter backend.AlbumIterator, fetch ImageFetcher, showYear bool) *AlbumGrid {
ag := &AlbumGrid{
iter: iter,
imageFetcher: fetch,
@@ -74,7 +77,7 @@ func (ag *AlbumGrid) createGridWrapList() {
},
// create func
func() fyne.CanvasObject {
ac := widgets.NewAlbumCard()
ac := widgets.NewAlbumCard(ag.showYear)
ac.OnPlay = func() {
if ag.OnPlayAlbum != nil {
ag.OnPlayAlbum(ac.AlbumID())
@@ -120,6 +123,8 @@ func (ag *AlbumGrid) doUpdateAlbumCard(albumIdx int, ac *widgets.AlbumCard) {
if err == nil {
ac.Cover.SetImage(i)
ac.Cover.Refresh()
} else {
log.Printf("error fetching image: %s", err.Error())
}
}
}(ctx)
+4 -2
View File
@@ -65,7 +65,8 @@ func NewAlbumsPage(title string, sortOrder string, lm *backend.LibraryManager, i
a.sortOrder.Selected = sortOrder
a.sortOrder.OnChanged = a.onSortOrderChanged
sortVbox := container.NewVBox(layout.NewSpacer(), a.sortOrder, layout.NewSpacer())
a.grid = NewAlbumGrid(lm.AlbumsIter(backend.AlbumSortOrder(a.sortOrder.Selected)), im.GetAlbumThumbnail)
iter := lm.AlbumsIter(backend.AlbumSortOrder(a.sortOrder.Selected))
a.grid = NewAlbumGrid(iter, im.GetAlbumThumbnail, false /*showYear*/)
a.grid.OnPlayAlbum = a.onPlayAlbum
a.grid.OnShowArtistPage = a.onShowArtistPage
a.container = container.NewBorder(
@@ -89,8 +90,9 @@ func (a *AlbumsPage) OnSearched(query string) {
return
}
if a.searchGrid == nil {
a.searchGrid = NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail)
a.searchGrid = NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail, false /*showYear*/)
a.searchGrid.OnPlayAlbum = a.onPlayAlbum
a.searchGrid.OnShowArtistPage = a.onShowArtistPage
} else {
a.searchGrid.Reset(a.lm.SearchIter(query))
}
+1 -1
View File
@@ -60,7 +60,7 @@ func (a *ArtistPage) loadAsync() {
}
a.titleDisp.Segments[0].(*widget.TextSegment).Text = artist.Name
a.titleDisp.Refresh()
ag := NewFixedAlbumGrid(artist.Album, a.im.GetAlbumThumbnail)
ag := NewFixedAlbumGrid(artist.Album, a.im.GetAlbumThumbnail, true /*showYear*/)
ag.OnPlayAlbum = a.onPlayAlbum
a.container.Objects[0] = ag
a.container.Refresh()
+17 -6
View File
@@ -3,6 +3,7 @@ package widgets
import (
"context"
"image"
"strconv"
"supersonic/ui/layout"
@@ -65,8 +66,11 @@ type AlbumCard struct {
artistID string
title *widget.Label
artist *CustomHyperlink
year *widget.Label
container *fyne.Container
showYear bool
// updated by AlbumGrid
Cover *albumCover
@@ -85,11 +89,13 @@ func (a *AlbumCard) MouseOut() {}
func (a *AlbumCard) MouseMoved(*desktop.MouseEvent) {}
func NewAlbumCard() *AlbumCard {
func NewAlbumCard(showYear bool) *AlbumCard {
a := &AlbumCard{
title: widget.NewLabel(""),
artist: NewCustomHyperlink(),
Cover: newAlbumCover(),
title: widget.NewLabel(""),
artist: NewCustomHyperlink(),
year: widget.NewLabel(""),
Cover: newAlbumCover(),
showYear: showYear,
}
a.ExtendBaseWidget(a)
a.Cover.OnDoubleTapped = func() {
@@ -110,8 +116,12 @@ func NewAlbumCard() *AlbumCard {
}
func (a *AlbumCard) createContainer() {
titleArtist := container.New(&layout.VboxCustomPadding{ExtraPad: -16}, a.title, a.artist)
c := container.New(&layout.VboxCustomPadding{ExtraPad: -5}, a.Cover, titleArtist)
var secondLabel fyne.Widget = a.artist
if a.showYear {
secondLabel = a.year
}
info := container.New(&layout.VboxCustomPadding{ExtraPad: -16}, a.title, secondLabel)
c := container.New(&layout.VboxCustomPadding{ExtraPad: -5}, a.Cover, info)
pad := &layout.CenterPadLayout{PadLeftRight: 20, PadTopBottom: 10}
a.container = container.New(pad, c)
}
@@ -119,6 +129,7 @@ func (a *AlbumCard) createContainer() {
func (a *AlbumCard) Update(al *subsonic.AlbumID3) {
a.title.SetText(al.Name)
a.artist.SetText(al.Artist)
a.year.SetText(strconv.Itoa(al.Year))
a.albumID = al.ID
a.artistID = al.ArtistID
}