make artist image displayable in pop-up

This commit is contained in:
Drew Weymouth
2023-02-07 09:31:49 -08:00
parent 87ae3e940f
commit 9fd6508af0
7 changed files with 113 additions and 75 deletions
+5 -28
View File
@@ -28,22 +28,17 @@ type AlbumPage struct {
tracklist *widgets.Tracklist
nowPlayingID string
container *fyne.Container
popUpProvider PopUpProvider
popUpProvider util.PopUpProvider
OnPlayAlbum func(string, int)
}
type PopUpProvider interface {
CreatePopUp(fyne.CanvasObject) *widget.PopUp
WindowSize() fyne.Size
}
func NewAlbumPage(
albumID string,
sm *backend.ServerManager,
lm *backend.LibraryManager,
im *backend.ImageManager,
popUpProvider PopUpProvider,
popUpProvider util.PopUpProvider,
nav func(Route),
) *AlbumPage {
a := &AlbumPage{albumID: albumID, sm: sm, lm: lm, im: im, nav: nav, popUpProvider: popUpProvider}
@@ -136,9 +131,8 @@ type AlbumPageHeader struct {
func NewAlbumPageHeader(page *AlbumPage) *AlbumPageHeader {
a := &AlbumPageHeader{page: page}
a.ExtendBaseWidget(a)
a.cover = widgets.NewTappableImage()
a.cover = widgets.NewTappableImage(a.showPopUpCover)
a.cover.FillMode = canvas.ImageFillContain
a.cover.OnTapped = a.showPopUpCover
a.cover.SetMinSize(fyne.NewSize(225, 225))
// due to cache warming we can probably immediately set the cover
// and not have to set it asynchronously in the Update function
@@ -223,24 +217,7 @@ func (a *AlbumPageHeader) showPopUpCover() {
log.Printf("error getting full size album cover: %s", err.Error())
return
}
im := canvas.NewImageFromImage(cover)
im.FillMode = canvas.ImageFillContain
pop := a.page.popUpProvider.CreatePopUp(im)
s := a.page.popUpProvider.WindowSize()
var popS fyne.Size
if asp := util.ImageAspect(cover); s.Width/s.Height > asp {
// window height is limiting factor
h := s.Height * 0.8
popS = fyne.NewSize(h*asp, h)
} else {
w := s.Width * 0.8
popS = fyne.NewSize(w, w*(1/asp))
}
pop.Resize(popS)
pop.ShowAtPosition(fyne.NewPos(
(s.Width-popS.Width)/2,
(s.Height-popS.Height)/2,
))
util.ShowPopUpImage(cover, a.page.popUpProvider)
}
func formatMiscLabelStr(a *subsonic.AlbumID3) string {
@@ -252,7 +229,7 @@ type savedAlbumPage struct {
lm *backend.LibraryManager
im *backend.ImageManager
sm *backend.ServerManager
popUpProvider PopUpProvider
popUpProvider util.PopUpProvider
nav func(Route)
}