diff --git a/backend/mediaprovider/model.go b/backend/mediaprovider/model.go index 41858ac..91e5837 100644 --- a/backend/mediaprovider/model.go +++ b/backend/mediaprovider/model.go @@ -19,8 +19,8 @@ type AlbumWithTracks struct { } type AlbumInfo struct { - Info string - LastFMUrl string + Notes string + LastFmUrl string MusicBrainzID string } diff --git a/backend/mediaprovider/subsonic/subsonicmediaprovider.go b/backend/mediaprovider/subsonic/subsonicmediaprovider.go index b33d922..26993d4 100644 --- a/backend/mediaprovider/subsonic/subsonicmediaprovider.go +++ b/backend/mediaprovider/subsonic/subsonicmediaprovider.go @@ -65,8 +65,8 @@ func (s *subsonicMediaProvider) GetAlbumInfo(albumID string) (*mediaprovider.Alb return nil, err } album := &mediaprovider.AlbumInfo{ - Info: al.Notes, - LastFMUrl: al.LastFmUrl, + Notes: al.Notes, + LastFmUrl: al.LastFmUrl, MusicBrainzID: al.MusicBrainzID, } return album, nil diff --git a/ui/browsing/albumpage.go b/ui/browsing/albumpage.go index 1cb93e4..a7ffa91 100644 --- a/ui/browsing/albumpage.go +++ b/ui/browsing/albumpage.go @@ -204,7 +204,7 @@ func NewAlbumPageHeader(page *AlbumPage) *AlbumPageHeader { fyne.NewMenuItem("Download...", func() { 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) })) pop = widget.NewPopUpMenu(menu, fyne.CurrentApp().Driver().CanvasForObject(a)) diff --git a/ui/dialogs/albuminfodialog.go b/ui/dialogs/albuminfodialog.go index 12004b8..93fbe1d 100644 --- a/ui/dialogs/albuminfodialog.go +++ b/ui/dialogs/albuminfodialog.go @@ -18,6 +18,8 @@ import ( "fyne.io/fyne/v2/widget" ) +const musicBrainzReleaseUrl = "https://musicbrainz.org/release" + type AlbumInfoDialog struct { widget.BaseWidget @@ -61,11 +63,11 @@ func (a *AlbumInfoDialog) buildMainContainer(albumInfo *mediaprovider.AlbumInfo, infoContent := widget.NewLabel("Album info not available") - if albumInfo.Info != "" { - infoContent = a.infoLabel(albumInfo.Info) + if albumInfo.Notes != "" { + infoContent = a.infoLabel(albumInfo.Notes) } - urlContainer := a.buildUrlContainer(albumInfo.LastFMUrl, albumInfo.MusicBrainzID) + urlContainer := a.buildUrlContainer(albumInfo.LastFmUrl, albumInfo.MusicBrainzID) return container.NewVBox( iconImage, @@ -89,14 +91,19 @@ func (a *AlbumInfoDialog) infoLabel(info string) *widget.Label { 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) - if lastFMUrl, err := url.Parse(lastFM); err == nil { - urls = append(urls, widget.NewHyperlink("Last.fm", lastFMUrl)) + if lastFm != "" { + 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})