minor refactor: use Refresh and widget property to toggle showing year
This commit is contained in:
@@ -10,7 +10,6 @@ import (
|
||||
"fyne.io/fyne/v2/layout"
|
||||
"fyne.io/fyne/v2/theme"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"github.com/dweymouth/supersonic/backend"
|
||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
||||
"github.com/dweymouth/supersonic/ui/util"
|
||||
@@ -22,6 +21,7 @@ type LargeNowPlayingCard struct {
|
||||
CaptionedImage
|
||||
|
||||
DisableRating bool
|
||||
ShowAlbumYear bool
|
||||
|
||||
isRadio bool
|
||||
trackName *widget.RichText
|
||||
@@ -31,7 +31,8 @@ type LargeNowPlayingCard struct {
|
||||
favorite *FavoriteIcon
|
||||
ratingFavoriteContainer *fyne.Container
|
||||
cover *ImagePlaceholder
|
||||
cfg *backend.Config
|
||||
|
||||
albumYear string
|
||||
|
||||
OnArtistNameTapped func(artistID string)
|
||||
OnAlbumNameTapped func()
|
||||
@@ -40,7 +41,7 @@ type LargeNowPlayingCard struct {
|
||||
OnSetFavorite func(favorite bool)
|
||||
}
|
||||
|
||||
func NewLargeNowPlayingCard(cfg *backend.Config) *LargeNowPlayingCard {
|
||||
func NewLargeNowPlayingCard() *LargeNowPlayingCard {
|
||||
n := &LargeNowPlayingCard{
|
||||
trackName: widget.NewRichTextWithText(""),
|
||||
artistName: NewMultiHyperlink(),
|
||||
@@ -48,7 +49,6 @@ func NewLargeNowPlayingCard(cfg *backend.Config) *LargeNowPlayingCard {
|
||||
rating: NewStarRating(),
|
||||
favorite: NewFavoriteIcon(),
|
||||
cover: NewImagePlaceholder(myTheme.TracksIcon, 300),
|
||||
cfg: cfg,
|
||||
}
|
||||
n.ExtendBaseWidget(n)
|
||||
n.rating.StarSize = theme.IconInlineSize() + theme.InnerPadding()/2
|
||||
@@ -149,17 +149,13 @@ func (n *LargeNowPlayingCard) Update(item mediaprovider.MediaItem) {
|
||||
n.cover.PlaceholderIcon = myTheme.TracksIcon
|
||||
n.ratingFavoriteContainer.Hidden = false
|
||||
n.isRadio = false
|
||||
if y := tr.Year; y != 0 && n.cfg.AlbumsPage.ShowYears {
|
||||
n.albumName.Suffix = strconv.Itoa(tr.Year)
|
||||
} else {
|
||||
n.albumName.Suffix = ""
|
||||
}
|
||||
n.albumYear = strconv.Itoa(tr.Year)
|
||||
} else if rd, ok := item.(*mediaprovider.RadioStation); ok {
|
||||
n.artistName.BuildSegments([]string{rd.HomePageURL}, []string{rd.HomePageURL})
|
||||
n.ratingFavoriteContainer.Hidden = true
|
||||
n.cover.PlaceholderIcon = myTheme.RadioIcon
|
||||
n.isRadio = true
|
||||
n.albumName.Suffix = ""
|
||||
n.albumYear = ""
|
||||
}
|
||||
|
||||
n.Refresh()
|
||||
@@ -175,5 +171,10 @@ func (n *LargeNowPlayingCard) Refresh() {
|
||||
} else {
|
||||
n.rating.Enable()
|
||||
}
|
||||
if n.ShowAlbumYear {
|
||||
n.albumName.Suffix = n.albumYear
|
||||
} else {
|
||||
n.albumName.Suffix = ""
|
||||
}
|
||||
n.BaseWidget.Refresh()
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
|
||||
"fyne.io/fyne/v2/lang"
|
||||
|
||||
"github.com/dweymouth/supersonic/backend"
|
||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
||||
"github.com/dweymouth/supersonic/ui/util"
|
||||
@@ -25,6 +24,7 @@ type NowPlayingCard struct {
|
||||
widget.BaseWidget
|
||||
|
||||
DisableRating bool
|
||||
ShowAlbumYear bool
|
||||
|
||||
trackName *OptionHyperlink
|
||||
artistName *MultiHyperlink
|
||||
@@ -32,7 +32,8 @@ type NowPlayingCard struct {
|
||||
cover *ImagePlaceholder
|
||||
menu *widget.PopUpMenu
|
||||
ratingMenu *fyne.MenuItem
|
||||
cfg *backend.Config
|
||||
|
||||
albumYear string
|
||||
|
||||
OnTrackNameTapped func()
|
||||
OnArtistNameTapped func(artistID string)
|
||||
@@ -45,12 +46,11 @@ type NowPlayingCard struct {
|
||||
OnShare func()
|
||||
}
|
||||
|
||||
func NewNowPlayingCard(cfg *backend.Config) *NowPlayingCard {
|
||||
func NewNowPlayingCard() *NowPlayingCard {
|
||||
n := &NowPlayingCard{
|
||||
trackName: NewOptionHyperlink(),
|
||||
artistName: NewMultiHyperlink(),
|
||||
albumName: NewMultiHyperlink(),
|
||||
cfg: cfg,
|
||||
}
|
||||
n.ExtendBaseWidget(n)
|
||||
n.cover = NewImagePlaceholder(myTheme.TracksIcon, 85)
|
||||
@@ -143,7 +143,7 @@ func (n *NowPlayingCard) Update(track mediaprovider.MediaItem) {
|
||||
n.trackName.SetTextAndToolTip("")
|
||||
n.artistName.BuildSegments([]string{}, []string{})
|
||||
n.albumName.BuildSegments([]string{}, []string{})
|
||||
n.albumName.Suffix = ""
|
||||
n.albumYear = ""
|
||||
n.cover.Hidden = true
|
||||
} else {
|
||||
n.cover.Hidden = false
|
||||
@@ -151,11 +151,7 @@ func (n *NowPlayingCard) Update(track mediaprovider.MediaItem) {
|
||||
if tr, ok := track.(*mediaprovider.Track); ok {
|
||||
n.artistName.BuildSegments(tr.ArtistNames, tr.ArtistIDs)
|
||||
n.albumName.BuildSegments([]string{tr.Album}, []string{tr.AlbumID})
|
||||
if y := tr.Year; y != 0 && n.cfg.AlbumsPage.ShowYears {
|
||||
n.albumName.Suffix = strconv.Itoa(tr.Year)
|
||||
} else {
|
||||
n.albumName.Suffix = ""
|
||||
}
|
||||
n.albumYear = strconv.Itoa(tr.Year)
|
||||
n.cover.PlaceholderIcon = myTheme.TracksIcon
|
||||
} else {
|
||||
n.artistName.BuildSegments([]string{}, []string{})
|
||||
@@ -175,6 +171,15 @@ func (n *NowPlayingCard) SetImage(cover image.Image) {
|
||||
n.cover.SetImage(cover, true)
|
||||
}
|
||||
|
||||
func (n *NowPlayingCard) Refresh() {
|
||||
if n.ShowAlbumYear {
|
||||
n.albumName.Suffix = n.albumYear
|
||||
} else {
|
||||
n.albumName.Suffix = ""
|
||||
}
|
||||
n.BaseWidget.Refresh()
|
||||
}
|
||||
|
||||
func (n *NowPlayingCard) showMenu(btnPos fyne.Position) {
|
||||
if n.menu == nil {
|
||||
n.ratingMenu = util.NewRatingSubmenu(n.onSetRating)
|
||||
|
||||
Reference in New Issue
Block a user