changing AlbumInfo attributes name, using the same names as subsonic API. Checking if lastFm and musicBrainzID are not empty strings. Saving the musicbrainz release url in constant. Using 'Show Info...' in meatball menu.

This commit is contained in:
natilou
2023-06-27 09:48:36 -03:00
parent f26e9dbcbf
commit 681fa06255
4 changed files with 20 additions and 13 deletions
+2 -2
View File
@@ -19,8 +19,8 @@ type AlbumWithTracks struct {
} }
type AlbumInfo struct { type AlbumInfo struct {
Info string Notes string
LastFMUrl string LastFmUrl string
MusicBrainzID string MusicBrainzID string
} }
@@ -65,8 +65,8 @@ func (s *subsonicMediaProvider) GetAlbumInfo(albumID string) (*mediaprovider.Alb
return nil, err return nil, err
} }
album := &mediaprovider.AlbumInfo{ album := &mediaprovider.AlbumInfo{
Info: al.Notes, Notes: al.Notes,
LastFMUrl: al.LastFmUrl, LastFmUrl: al.LastFmUrl,
MusicBrainzID: al.MusicBrainzID, MusicBrainzID: al.MusicBrainzID,
} }
return album, nil return album, nil
+1 -1
View File
@@ -204,7 +204,7 @@ func NewAlbumPageHeader(page *AlbumPage) *AlbumPageHeader {
fyne.NewMenuItem("Download...", func() { fyne.NewMenuItem("Download...", func() {
a.page.contr.ShowDownloadDialog(a.page.tracks, a.titleLabel.String()) a.page.contr.ShowDownloadDialog(a.page.tracks, a.titleLabel.String())
}), }),
fyne.NewMenuItem("Get Info...", func() { fyne.NewMenuItem("Show Info...", func() {
a.page.contr.ShowAlbumInfoDialog(a.albumID, a.titleLabel.String(), a.cover.Image.Image) a.page.contr.ShowAlbumInfoDialog(a.albumID, a.titleLabel.String(), a.cover.Image.Image)
})) }))
pop = widget.NewPopUpMenu(menu, fyne.CurrentApp().Driver().CanvasForObject(a)) pop = widget.NewPopUpMenu(menu, fyne.CurrentApp().Driver().CanvasForObject(a))
+15 -8
View File
@@ -18,6 +18,8 @@ import (
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
) )
const musicBrainzReleaseUrl = "https://musicbrainz.org/release"
type AlbumInfoDialog struct { type AlbumInfoDialog struct {
widget.BaseWidget widget.BaseWidget
@@ -61,11 +63,11 @@ func (a *AlbumInfoDialog) buildMainContainer(albumInfo *mediaprovider.AlbumInfo,
infoContent := widget.NewLabel("Album info not available") infoContent := widget.NewLabel("Album info not available")
if albumInfo.Info != "" { if albumInfo.Notes != "" {
infoContent = a.infoLabel(albumInfo.Info) infoContent = a.infoLabel(albumInfo.Notes)
} }
urlContainer := a.buildUrlContainer(albumInfo.LastFMUrl, albumInfo.MusicBrainzID) urlContainer := a.buildUrlContainer(albumInfo.LastFmUrl, albumInfo.MusicBrainzID)
return container.NewVBox( return container.NewVBox(
iconImage, iconImage,
@@ -89,14 +91,19 @@ func (a *AlbumInfoDialog) infoLabel(info string) *widget.Label {
return lbl return lbl
} }
func (a *AlbumInfoDialog) buildUrlContainer(lastFM, musicBrainzID string) *fyne.Container { func (a *AlbumInfoDialog) buildUrlContainer(lastFm, musicBrainzID string) *fyne.Container {
urls := make([]*widget.Hyperlink, 0) urls := make([]*widget.Hyperlink, 0)
if lastFMUrl, err := url.Parse(lastFM); err == nil { if lastFm != "" {
urls = append(urls, widget.NewHyperlink("Last.fm", lastFMUrl)) if lastFmUrl, err := url.Parse(lastFm); err == nil {
urls = append(urls, widget.NewHyperlink("Last.fm", lastFmUrl))
}
} }
if musicBrainzUrl, err := url.Parse(fmt.Sprintf("https://musicbrainz.org/release/%s", musicBrainzID)); err == nil {
urls = append(urls, widget.NewHyperlink("MusicBrainz", musicBrainzUrl)) if musicBrainzID != "" {
if musicBrainzUrl, err := url.Parse(fmt.Sprintf("%s/%s", musicBrainzReleaseUrl, musicBrainzID)); err == nil {
urls = append(urls, widget.NewHyperlink("MusicBrainz", musicBrainzUrl))
}
} }
urlContainer := container.New(&layouts.HboxCustomPadding{DisableThemePad: true, ExtraPad: -10}) urlContainer := container.New(&layouts.HboxCustomPadding{DisableThemePad: true, ExtraPad: -10})