show home page url, hide rating/favorite widgets for radio
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
"image"
|
"image"
|
||||||
"image/color"
|
"image/color"
|
||||||
"log"
|
"log"
|
||||||
|
"net/url"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -113,6 +114,11 @@ func NewNowPlayingPage(
|
|||||||
a.card.OnArtistNameTapped = func(artistID string) {
|
a.card.OnArtistNameTapped = func(artistID string) {
|
||||||
contr.NavigateTo(controller.ArtistRoute(artistID))
|
contr.NavigateTo(controller.ArtistRoute(artistID))
|
||||||
}
|
}
|
||||||
|
a.card.OnRadioURLTapped = func(urlText string) {
|
||||||
|
if u, err := url.Parse(urlText); err == nil {
|
||||||
|
fyne.CurrentApp().OpenURL(u)
|
||||||
|
}
|
||||||
|
}
|
||||||
a.card.OnSetFavorite = func(fav bool) {
|
a.card.OnSetFavorite = func(fav bool) {
|
||||||
a.contr.SetTrackFavorites([]string{a.nowPlayingID}, fav)
|
a.contr.SetTrackFavorites([]string{a.nowPlayingID}, fav)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ type LargeNowPlayingCard struct {
|
|||||||
|
|
||||||
DisableRating bool
|
DisableRating bool
|
||||||
|
|
||||||
|
isRadio bool
|
||||||
trackName *widget.RichText
|
trackName *widget.RichText
|
||||||
artistName *MultiHyperlink
|
artistName *MultiHyperlink
|
||||||
albumName *widget.Hyperlink
|
albumName *widget.Hyperlink
|
||||||
@@ -29,6 +30,7 @@ type LargeNowPlayingCard struct {
|
|||||||
|
|
||||||
OnArtistNameTapped func(artistID string)
|
OnArtistNameTapped func(artistID string)
|
||||||
OnAlbumNameTapped func()
|
OnAlbumNameTapped func()
|
||||||
|
OnRadioURLTapped func(url string)
|
||||||
OnSetRating func(rating int)
|
OnSetRating func(rating int)
|
||||||
OnSetFavorite func(favorite bool)
|
OnSetFavorite func(favorite bool)
|
||||||
}
|
}
|
||||||
@@ -79,6 +81,12 @@ func (n *LargeNowPlayingCard) onAlbumNameTapped() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (n *LargeNowPlayingCard) onArtistNameTapped(artistID string) {
|
func (n *LargeNowPlayingCard) onArtistNameTapped(artistID string) {
|
||||||
|
if n.isRadio {
|
||||||
|
if n.OnRadioURLTapped != nil {
|
||||||
|
n.OnRadioURLTapped(artistID)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
if n.OnArtistNameTapped != nil {
|
if n.OnArtistNameTapped != nil {
|
||||||
n.OnArtistNameTapped(artistID)
|
n.OnArtistNameTapped(artistID)
|
||||||
}
|
}
|
||||||
@@ -119,17 +127,23 @@ func (n *LargeNowPlayingCard) Update(item mediaprovider.MediaItem) {
|
|||||||
}
|
}
|
||||||
meta := item.Metadata()
|
meta := item.Metadata()
|
||||||
n.trackName.Segments[0].(*widget.TextSegment).Text = meta.Name
|
n.trackName.Segments[0].(*widget.TextSegment).Text = meta.Name
|
||||||
n.artistName.BuildSegments(meta.Artists, meta.ArtistIDs)
|
|
||||||
n.albumName.Text = meta.Album
|
n.albumName.Text = meta.Album
|
||||||
|
n.albumName.Hidden = meta.AlbumID == ""
|
||||||
|
|
||||||
if tr, ok := item.(*mediaprovider.Track); ok {
|
if tr, ok := item.(*mediaprovider.Track); ok {
|
||||||
|
n.artistName.BuildSegments(meta.Artists, meta.ArtistIDs)
|
||||||
n.rating.Rating = tr.Rating
|
n.rating.Rating = tr.Rating
|
||||||
n.favorite.Favorite = tr.Favorite
|
n.favorite.Favorite = tr.Favorite
|
||||||
n.cover.PlaceholderIcon = myTheme.TracksIcon
|
n.cover.PlaceholderIcon = myTheme.TracksIcon
|
||||||
} else {
|
n.favorite.Hidden = false
|
||||||
n.rating.Rating = 0
|
n.rating.Hidden = false
|
||||||
n.favorite.Favorite = false
|
n.isRadio = false
|
||||||
|
} else if rd, ok := item.(*mediaprovider.RadioStation); ok {
|
||||||
|
n.artistName.BuildSegments([]string{rd.HomePageURL}, []string{rd.HomePageURL})
|
||||||
|
n.rating.Hidden = true
|
||||||
|
n.favorite.Hidden = true
|
||||||
n.cover.PlaceholderIcon = myTheme.RadioIcon
|
n.cover.PlaceholderIcon = myTheme.RadioIcon
|
||||||
|
n.isRadio = true
|
||||||
}
|
}
|
||||||
|
|
||||||
n.Refresh()
|
n.Refresh()
|
||||||
|
|||||||
Reference in New Issue
Block a user