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