From 681fa0625582c24d93903bb8e5700697f6eea0c0 Mon Sep 17 00:00:00 2001 From: natilou <30585029+natilou@users.noreply.github.com> Date: Mon, 26 Jun 2023 09:54:27 -0300 Subject: [PATCH] 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. --- backend/mediaprovider/model.go | 4 ++-- .../subsonic/subsonicmediaprovider.go | 4 ++-- ui/browsing/albumpage.go | 2 +- ui/dialogs/albuminfodialog.go | 23 ++++++++++++------- 4 files changed, 20 insertions(+), 13 deletions(-) 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})