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 {
Info string
LastFMUrl string
Notes string
LastFmUrl string
MusicBrainzID string
}
@@ -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
+1 -1
View File
@@ -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))
+15 -8
View File
@@ -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})