diff --git a/ui/bottompanel.go b/ui/bottompanel.go index bf4fc2a..107afb0 100644 --- a/ui/bottompanel.go +++ b/ui/bottompanel.go @@ -73,15 +73,15 @@ func NewBottomPanel(p *player.Player, pm *backend.PlaybackManager, contr *contro bp.NowPlaying.OnAddToPlaylist = func() { contr.DoAddTracksToPlaylistWorkflow([]string{bp.playbackManager.NowPlaying().ID}) } - bp.NowPlaying.OnAlbumNameTapped(func() { + bp.NowPlaying.OnAlbumNameTapped = func() { contr.NavigateTo(controller.AlbumRoute(bp.playbackManager.NowPlaying().AlbumID)) - }) - bp.NowPlaying.OnArtistNameTapped(func(artistID string) { + } + bp.NowPlaying.OnArtistNameTapped = func(artistID string) { contr.NavigateTo(controller.ArtistRoute(artistID)) - }) - bp.NowPlaying.OnTrackNameTapped(func() { + } + bp.NowPlaying.OnTrackNameTapped = func() { contr.NavigateTo(controller.NowPlayingRoute(bp.playbackManager.NowPlaying().ID)) - }) + } bp.Controls = widgets.NewPlayerControls() bp.Controls.OnPlayPause(func() { p.PlayPause() diff --git a/ui/widgets/nowplayingcard.go b/ui/widgets/nowplayingcard.go index 0e2a484..0358547 100644 --- a/ui/widgets/nowplayingcard.go +++ b/ui/widgets/nowplayingcard.go @@ -23,10 +23,13 @@ type NowPlayingCard struct { cover *TappableImage menu *widget.PopUpMenu - OnShowCoverImage func() - OnSetRating func(rating int) - OnSetFavorite func(favorite bool) - OnAddToPlaylist func() + OnTrackNameTapped func() + OnArtistNameTapped func(artistID string) + OnAlbumNameTapped func() + OnShowCoverImage func() + OnSetRating func(rating int) + OnSetFavorite func(favorite bool) + OnAddToPlaylist func() } func NewNowPlayingCard() *NowPlayingCard { @@ -46,6 +49,9 @@ func NewNowPlayingCard() *NowPlayingCard { n.cover.SetMinSize(fyne.NewSize(85, 85)) n.cover.FillMode = canvas.ImageFillContain n.cover.Hidden = true + n.albumName.OnTapped = n.onAlbumNameTapped + n.artistName.OnTapped = n.onArtistNameTapped + n.trackName.OnTapped = n.onTrackNameTapped return n } @@ -55,6 +61,24 @@ func (n *NowPlayingCard) MinSize() fyne.Size { return fyne.NewSize(n.BaseWidget.MinSize().Width, 85) } +func (n *NowPlayingCard) onAlbumNameTapped() { + if n.OnAlbumNameTapped != nil { + n.OnAlbumNameTapped() + } +} + +func (n *NowPlayingCard) onArtistNameTapped(artistID string) { + if n.OnArtistNameTapped != nil { + n.OnArtistNameTapped(artistID) + } +} + +func (n *NowPlayingCard) onTrackNameTapped() { + if n.OnTrackNameTapped != nil { + n.OnTrackNameTapped() + } +} + func (n *NowPlayingCard) onShowCoverImage(*fyne.PointEvent) { if n.OnShowCoverImage != nil { n.OnShowCoverImage() @@ -99,18 +123,6 @@ func (n *NowPlayingCard) Update(track string, artists, artistIDs []string, album n.Refresh() } -func (n *NowPlayingCard) OnArtistNameTapped(f func(string)) { - n.artistName.OnTapped = f -} - -func (n *NowPlayingCard) OnAlbumNameTapped(f func()) { - n.albumName.OnTapped = f -} - -func (n *NowPlayingCard) OnTrackNameTapped(f func()) { - n.trackName.OnTapped = f -} - func (n *NowPlayingCard) showMenu(e *fyne.PointEvent) { if n.menu == nil { ratingMenu := util.NewRatingSubmenu(n.onSetRating)