minor refactor: use Refresh and widget property to toggle showing year
This commit is contained in:
+10
-2
@@ -24,12 +24,14 @@ type BottomPanel struct {
|
|||||||
AuxControls *widgets.AuxControls
|
AuxControls *widgets.AuxControls
|
||||||
|
|
||||||
container *fyne.Container
|
container *fyne.Container
|
||||||
|
|
||||||
|
cfg *backend.Config
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ fyne.Widget = (*BottomPanel)(nil)
|
var _ fyne.Widget = (*BottomPanel)(nil)
|
||||||
|
|
||||||
func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr *controller.Controller, cfg *backend.Config) *BottomPanel {
|
func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr *controller.Controller, cfg *backend.Config) *BottomPanel {
|
||||||
bp := &BottomPanel{}
|
bp := &BottomPanel{cfg: cfg}
|
||||||
bp.ExtendBaseWidget(bp)
|
bp.ExtendBaseWidget(bp)
|
||||||
|
|
||||||
pm.OnSongChange(bp.onSongChange)
|
pm.OnSongChange(bp.onSongChange)
|
||||||
@@ -46,7 +48,8 @@ func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr
|
|||||||
pm.OnPlaying(util.FyneDoFunc(func() { bp.Controls.SetPlaying(true) }))
|
pm.OnPlaying(util.FyneDoFunc(func() { bp.Controls.SetPlaying(true) }))
|
||||||
pm.OnStopped(util.FyneDoFunc(func() { bp.Controls.SetPlaying(false) }))
|
pm.OnStopped(util.FyneDoFunc(func() { bp.Controls.SetPlaying(false) }))
|
||||||
|
|
||||||
bp.NowPlaying = widgets.NewNowPlayingCard(cfg)
|
bp.NowPlaying = widgets.NewNowPlayingCard()
|
||||||
|
bp.NowPlaying.ShowAlbumYear = cfg.AlbumsPage.ShowYears
|
||||||
bp.NowPlaying.OnCoverTapped = func() {
|
bp.NowPlaying.OnCoverTapped = func() {
|
||||||
contr.NavigateTo(controller.NowPlayingRoute())
|
contr.NavigateTo(controller.NowPlayingRoute())
|
||||||
}
|
}
|
||||||
@@ -146,6 +149,11 @@ func (bp *BottomPanel) updateWaveformImg(img *backend.WaveformImage) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (bp *BottomPanel) Refresh() {
|
||||||
|
bp.NowPlaying.ShowAlbumYear = bp.cfg.AlbumsPage.ShowYears
|
||||||
|
bp.BaseWidget.Refresh()
|
||||||
|
}
|
||||||
|
|
||||||
func (bp *BottomPanel) CreateRenderer() fyne.WidgetRenderer {
|
func (bp *BottomPanel) CreateRenderer() fyne.WidgetRenderer {
|
||||||
bp.ExtendBaseWidget(bp)
|
bp.ExtendBaseWidget(bp)
|
||||||
return widget.NewSimpleRenderer(bp.container)
|
return widget.NewSimpleRenderer(bp.container)
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ func NewNowPlayingPage(
|
|||||||
pm.OnPlaying(doFmtStatus)
|
pm.OnPlaying(doFmtStatus)
|
||||||
pm.OnStopped(doFmtStatus)
|
pm.OnStopped(doFmtStatus)
|
||||||
|
|
||||||
a.card = widgets.NewLargeNowPlayingCard(cfg)
|
a.card = widgets.NewLargeNowPlayingCard()
|
||||||
a.card.OnAlbumNameTapped = func() {
|
a.card.OnAlbumNameTapped = func() {
|
||||||
contr.NavigateTo(controller.AlbumRoute(a.nowPlaying.Metadata().AlbumID))
|
contr.NavigateTo(controller.AlbumRoute(a.nowPlaying.Metadata().AlbumID))
|
||||||
}
|
}
|
||||||
@@ -129,6 +129,7 @@ func NewNowPlayingPage(
|
|||||||
a.card.OnSetRating = func(rating int) {
|
a.card.OnSetRating = func(rating int) {
|
||||||
a.contr.SetTrackRatings([]string{a.nowPlayingID}, rating)
|
a.contr.SetTrackRatings([]string{a.nowPlayingID}, rating)
|
||||||
}
|
}
|
||||||
|
a.card.ShowAlbumYear = cfg.AlbumsPage.ShowYears
|
||||||
|
|
||||||
a.queueList = widgets.NewPlayQueueList(a.im, false)
|
a.queueList = widgets.NewPlayQueueList(a.im, false)
|
||||||
a.relatedList = widgets.NewPlayQueueList(a.im, true)
|
a.relatedList = widgets.NewPlayQueueList(a.im, true)
|
||||||
@@ -530,6 +531,7 @@ func (a *NowPlayingPage) Refresh() {
|
|||||||
}
|
}
|
||||||
a.BaseWidget.Refresh()
|
a.BaseWidget.Refresh()
|
||||||
|
|
||||||
|
a.card.ShowAlbumYear = a.cfg.AlbumsPage.ShowYears
|
||||||
a.card.Update(a.nowPlaying)
|
a.card.Update(a.nowPlaying)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -87,8 +87,7 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string,
|
|||||||
m.Controller.CurPageFunc = m.BrowsingPane.CurrentPage
|
m.Controller.CurPageFunc = m.BrowsingPane.CurrentPage
|
||||||
m.Controller.RefreshPageFunc = func() {
|
m.Controller.RefreshPageFunc = func() {
|
||||||
m.BrowsingPane.RefreshPage()
|
m.BrowsingPane.RefreshPage()
|
||||||
|
m.BottomPanel.Refresh()
|
||||||
m.BottomPanel.onSongChange(app.PlaybackManager.NowPlaying(), nil)
|
|
||||||
}
|
}
|
||||||
m.Controller.SelectAllPageFunc = m.BrowsingPane.SelectAll
|
m.Controller.SelectAllPageFunc = m.BrowsingPane.SelectAll
|
||||||
m.Controller.UnselectAllPageFunc = m.BrowsingPane.UnselectAll
|
m.Controller.UnselectAllPageFunc = m.BrowsingPane.UnselectAll
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
"fyne.io/fyne/v2/layout"
|
"fyne.io/fyne/v2/layout"
|
||||||
"fyne.io/fyne/v2/theme"
|
"fyne.io/fyne/v2/theme"
|
||||||
"fyne.io/fyne/v2/widget"
|
"fyne.io/fyne/v2/widget"
|
||||||
"github.com/dweymouth/supersonic/backend"
|
|
||||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||||
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
||||||
"github.com/dweymouth/supersonic/ui/util"
|
"github.com/dweymouth/supersonic/ui/util"
|
||||||
@@ -22,6 +21,7 @@ type LargeNowPlayingCard struct {
|
|||||||
CaptionedImage
|
CaptionedImage
|
||||||
|
|
||||||
DisableRating bool
|
DisableRating bool
|
||||||
|
ShowAlbumYear bool
|
||||||
|
|
||||||
isRadio bool
|
isRadio bool
|
||||||
trackName *widget.RichText
|
trackName *widget.RichText
|
||||||
@@ -31,7 +31,8 @@ type LargeNowPlayingCard struct {
|
|||||||
favorite *FavoriteIcon
|
favorite *FavoriteIcon
|
||||||
ratingFavoriteContainer *fyne.Container
|
ratingFavoriteContainer *fyne.Container
|
||||||
cover *ImagePlaceholder
|
cover *ImagePlaceholder
|
||||||
cfg *backend.Config
|
|
||||||
|
albumYear string
|
||||||
|
|
||||||
OnArtistNameTapped func(artistID string)
|
OnArtistNameTapped func(artistID string)
|
||||||
OnAlbumNameTapped func()
|
OnAlbumNameTapped func()
|
||||||
@@ -40,7 +41,7 @@ type LargeNowPlayingCard struct {
|
|||||||
OnSetFavorite func(favorite bool)
|
OnSetFavorite func(favorite bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLargeNowPlayingCard(cfg *backend.Config) *LargeNowPlayingCard {
|
func NewLargeNowPlayingCard() *LargeNowPlayingCard {
|
||||||
n := &LargeNowPlayingCard{
|
n := &LargeNowPlayingCard{
|
||||||
trackName: widget.NewRichTextWithText(""),
|
trackName: widget.NewRichTextWithText(""),
|
||||||
artistName: NewMultiHyperlink(),
|
artistName: NewMultiHyperlink(),
|
||||||
@@ -48,7 +49,6 @@ func NewLargeNowPlayingCard(cfg *backend.Config) *LargeNowPlayingCard {
|
|||||||
rating: NewStarRating(),
|
rating: NewStarRating(),
|
||||||
favorite: NewFavoriteIcon(),
|
favorite: NewFavoriteIcon(),
|
||||||
cover: NewImagePlaceholder(myTheme.TracksIcon, 300),
|
cover: NewImagePlaceholder(myTheme.TracksIcon, 300),
|
||||||
cfg: cfg,
|
|
||||||
}
|
}
|
||||||
n.ExtendBaseWidget(n)
|
n.ExtendBaseWidget(n)
|
||||||
n.rating.StarSize = theme.IconInlineSize() + theme.InnerPadding()/2
|
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.cover.PlaceholderIcon = myTheme.TracksIcon
|
||||||
n.ratingFavoriteContainer.Hidden = false
|
n.ratingFavoriteContainer.Hidden = false
|
||||||
n.isRadio = false
|
n.isRadio = false
|
||||||
if y := tr.Year; y != 0 && n.cfg.AlbumsPage.ShowYears {
|
n.albumYear = strconv.Itoa(tr.Year)
|
||||||
n.albumName.Suffix = strconv.Itoa(tr.Year)
|
|
||||||
} else {
|
|
||||||
n.albumName.Suffix = ""
|
|
||||||
}
|
|
||||||
} else if rd, ok := item.(*mediaprovider.RadioStation); ok {
|
} else if rd, ok := item.(*mediaprovider.RadioStation); ok {
|
||||||
n.artistName.BuildSegments([]string{rd.HomePageURL}, []string{rd.HomePageURL})
|
n.artistName.BuildSegments([]string{rd.HomePageURL}, []string{rd.HomePageURL})
|
||||||
n.ratingFavoriteContainer.Hidden = true
|
n.ratingFavoriteContainer.Hidden = true
|
||||||
n.cover.PlaceholderIcon = myTheme.RadioIcon
|
n.cover.PlaceholderIcon = myTheme.RadioIcon
|
||||||
n.isRadio = true
|
n.isRadio = true
|
||||||
n.albumName.Suffix = ""
|
n.albumYear = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
n.Refresh()
|
n.Refresh()
|
||||||
@@ -175,5 +171,10 @@ func (n *LargeNowPlayingCard) Refresh() {
|
|||||||
} else {
|
} else {
|
||||||
n.rating.Enable()
|
n.rating.Enable()
|
||||||
}
|
}
|
||||||
|
if n.ShowAlbumYear {
|
||||||
|
n.albumName.Suffix = n.albumYear
|
||||||
|
} else {
|
||||||
|
n.albumName.Suffix = ""
|
||||||
|
}
|
||||||
n.BaseWidget.Refresh()
|
n.BaseWidget.Refresh()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
|
|
||||||
"fyne.io/fyne/v2/lang"
|
"fyne.io/fyne/v2/lang"
|
||||||
|
|
||||||
"github.com/dweymouth/supersonic/backend"
|
|
||||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||||
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
||||||
"github.com/dweymouth/supersonic/ui/util"
|
"github.com/dweymouth/supersonic/ui/util"
|
||||||
@@ -25,6 +24,7 @@ type NowPlayingCard struct {
|
|||||||
widget.BaseWidget
|
widget.BaseWidget
|
||||||
|
|
||||||
DisableRating bool
|
DisableRating bool
|
||||||
|
ShowAlbumYear bool
|
||||||
|
|
||||||
trackName *OptionHyperlink
|
trackName *OptionHyperlink
|
||||||
artistName *MultiHyperlink
|
artistName *MultiHyperlink
|
||||||
@@ -32,7 +32,8 @@ type NowPlayingCard struct {
|
|||||||
cover *ImagePlaceholder
|
cover *ImagePlaceholder
|
||||||
menu *widget.PopUpMenu
|
menu *widget.PopUpMenu
|
||||||
ratingMenu *fyne.MenuItem
|
ratingMenu *fyne.MenuItem
|
||||||
cfg *backend.Config
|
|
||||||
|
albumYear string
|
||||||
|
|
||||||
OnTrackNameTapped func()
|
OnTrackNameTapped func()
|
||||||
OnArtistNameTapped func(artistID string)
|
OnArtistNameTapped func(artistID string)
|
||||||
@@ -45,12 +46,11 @@ type NowPlayingCard struct {
|
|||||||
OnShare func()
|
OnShare func()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNowPlayingCard(cfg *backend.Config) *NowPlayingCard {
|
func NewNowPlayingCard() *NowPlayingCard {
|
||||||
n := &NowPlayingCard{
|
n := &NowPlayingCard{
|
||||||
trackName: NewOptionHyperlink(),
|
trackName: NewOptionHyperlink(),
|
||||||
artistName: NewMultiHyperlink(),
|
artistName: NewMultiHyperlink(),
|
||||||
albumName: NewMultiHyperlink(),
|
albumName: NewMultiHyperlink(),
|
||||||
cfg: cfg,
|
|
||||||
}
|
}
|
||||||
n.ExtendBaseWidget(n)
|
n.ExtendBaseWidget(n)
|
||||||
n.cover = NewImagePlaceholder(myTheme.TracksIcon, 85)
|
n.cover = NewImagePlaceholder(myTheme.TracksIcon, 85)
|
||||||
@@ -143,7 +143,7 @@ func (n *NowPlayingCard) Update(track mediaprovider.MediaItem) {
|
|||||||
n.trackName.SetTextAndToolTip("")
|
n.trackName.SetTextAndToolTip("")
|
||||||
n.artistName.BuildSegments([]string{}, []string{})
|
n.artistName.BuildSegments([]string{}, []string{})
|
||||||
n.albumName.BuildSegments([]string{}, []string{})
|
n.albumName.BuildSegments([]string{}, []string{})
|
||||||
n.albumName.Suffix = ""
|
n.albumYear = ""
|
||||||
n.cover.Hidden = true
|
n.cover.Hidden = true
|
||||||
} else {
|
} else {
|
||||||
n.cover.Hidden = false
|
n.cover.Hidden = false
|
||||||
@@ -151,11 +151,7 @@ func (n *NowPlayingCard) Update(track mediaprovider.MediaItem) {
|
|||||||
if tr, ok := track.(*mediaprovider.Track); ok {
|
if tr, ok := track.(*mediaprovider.Track); ok {
|
||||||
n.artistName.BuildSegments(tr.ArtistNames, tr.ArtistIDs)
|
n.artistName.BuildSegments(tr.ArtistNames, tr.ArtistIDs)
|
||||||
n.albumName.BuildSegments([]string{tr.Album}, []string{tr.AlbumID})
|
n.albumName.BuildSegments([]string{tr.Album}, []string{tr.AlbumID})
|
||||||
if y := tr.Year; y != 0 && n.cfg.AlbumsPage.ShowYears {
|
n.albumYear = strconv.Itoa(tr.Year)
|
||||||
n.albumName.Suffix = strconv.Itoa(tr.Year)
|
|
||||||
} else {
|
|
||||||
n.albumName.Suffix = ""
|
|
||||||
}
|
|
||||||
n.cover.PlaceholderIcon = myTheme.TracksIcon
|
n.cover.PlaceholderIcon = myTheme.TracksIcon
|
||||||
} else {
|
} else {
|
||||||
n.artistName.BuildSegments([]string{}, []string{})
|
n.artistName.BuildSegments([]string{}, []string{})
|
||||||
@@ -175,6 +171,15 @@ func (n *NowPlayingCard) SetImage(cover image.Image) {
|
|||||||
n.cover.SetImage(cover, true)
|
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) {
|
func (n *NowPlayingCard) showMenu(btnPos fyne.Position) {
|
||||||
if n.menu == nil {
|
if n.menu == nil {
|
||||||
n.ratingMenu = util.NewRatingSubmenu(n.onSetRating)
|
n.ratingMenu = util.NewRatingSubmenu(n.onSetRating)
|
||||||
|
|||||||
Reference in New Issue
Block a user