diff --git a/backend/mediaprovider/mediaprovider.go b/backend/mediaprovider/mediaprovider.go index b476e0c..f4bc92e 100644 --- a/backend/mediaprovider/mediaprovider.go +++ b/backend/mediaprovider/mediaprovider.go @@ -189,6 +189,8 @@ type MediaProvider interface { GetSimilarTracks(artistID string, count int) ([]*Track, error) + GetSongRadio(trackID string, count int) ([]*Track, error) + ArtistSortOrders() []string IterateArtists(sortOrder string, filter ArtistFilter) ArtistIterator @@ -244,10 +246,6 @@ type SupportsSharing interface { CanShareArtists() bool } -type SupportsSongRadio interface { - GetSongRadio(trackID string, count int) ([]*Track, error) -} - type LyricsProvider interface { GetLyrics(track *Track) (*Lyrics, error) } diff --git a/ui/browsing/albumpage.go b/ui/browsing/albumpage.go index ad61970..ec61989 100644 --- a/ui/browsing/albumpage.go +++ b/ui/browsing/albumpage.go @@ -96,10 +96,8 @@ func newAlbumPage( a.tracklist.SetSorting(sort) _, canRate := a.mp.(mediaprovider.SupportsRating) _, canShare := a.mp.(mediaprovider.SupportsSharing) - _, canSongRadio := a.mp.(mediaprovider.SupportsSongRadio) a.tracklist.Options.DisableRating = !canRate a.tracklist.Options.DisableSharing = !canShare - a.tracklist.Options.DisableSongRadio = !canSongRadio a.tracklist.OnVisibleColumnsChanged = func(cols []string) { a.cfg.TracklistColumns = cols } diff --git a/ui/browsing/artistpage.go b/ui/browsing/artistpage.go index cec5037..e942a7f 100644 --- a/ui/browsing/artistpage.go +++ b/ui/browsing/artistpage.go @@ -238,10 +238,8 @@ func (a *ArtistPage) showTopTracks() { tl.Options = widgets.TracklistOptions{AutoNumber: true} _, canRate := a.mp.(mediaprovider.SupportsRating) _, canShare := a.mp.(mediaprovider.SupportsSharing) - _, canSongRadio := a.mp.(mediaprovider.SupportsSongRadio) tl.Options.DisableRating = !canRate tl.Options.DisableSharing = !canShare - tl.Options.DisableSongRadio = !canSongRadio tl.SetVisibleColumns(a.cfg.TracklistColumns) tl.SetSorting(a.trackSort) tl.OnVisibleColumnsChanged = func(cols []string) { diff --git a/ui/browsing/favoritespage.go b/ui/browsing/favoritespage.go index b60ee87..9e78fae 100644 --- a/ui/browsing/favoritespage.go +++ b/ui/browsing/favoritespage.go @@ -403,10 +403,8 @@ func (a *FavoritesPage) onShowFavoriteSongs() { tracklist.Options = widgets.TracklistOptions{AutoNumber: true} _, canRate := a.mp.(mediaprovider.SupportsRating) _, canShare := a.mp.(mediaprovider.SupportsSharing) - _, canSongRadio := a.mp.(mediaprovider.SupportsSongRadio) tracklist.Options.DisableRating = !canRate tracklist.Options.DisableSharing = !canShare - tracklist.Options.DisableSongRadio = !canSongRadio tracklist.SetVisibleColumns(a.cfg.TracklistColumns) tracklist.SetSorting(a.trackSort) tracklist.OnVisibleColumnsChanged = func(cols []string) { diff --git a/ui/browsing/playlistpage.go b/ui/browsing/playlistpage.go index 4d340ad..a4d6adc 100644 --- a/ui/browsing/playlistpage.go +++ b/ui/browsing/playlistpage.go @@ -88,13 +88,11 @@ func newPlaylistPage( } _, canRate := a.sm.Server.(mediaprovider.SupportsRating) _, canShare := a.sm.Server.(mediaprovider.SupportsSharing) - _, canSongRadio := a.sm.Server.(mediaprovider.SupportsSongRadio) remove := fyne.NewMenuItem("Remove from playlist", a.onRemoveSelectedFromPlaylist) remove.Icon = theme.ContentClearIcon() a.tracklist.Options = widgets.TracklistOptions{ - DisableRating: !canRate, - DisableSharing: !canShare, - DisableSongRadio: !canSongRadio, + DisableRating: !canRate, + DisableSharing: !canShare, AuxiliaryMenuItems: []*fyne.MenuItem{ util.NewReorderTracksSubmenu(a.doSetNewTrackOrder), remove, diff --git a/ui/browsing/trackspage.go b/ui/browsing/trackspage.go index becad43..4b6884a 100644 --- a/ui/browsing/trackspage.go +++ b/ui/browsing/trackspage.go @@ -34,14 +34,13 @@ type TracksPage struct { } type tracksPageState struct { - searchText string - widgetPool *util.WidgetPool - contr *controller.Controller - conf *backend.TracksPageConfig - mp mediaprovider.MediaProvider - canRate bool - canShare bool - canSongRadio bool + searchText string + widgetPool *util.WidgetPool + contr *controller.Controller + conf *backend.TracksPageConfig + mp mediaprovider.MediaProvider + canRate bool + canShare bool } func NewTracksPage(contr *controller.Controller, conf *backend.TracksPageConfig, pool *util.WidgetPool, mp mediaprovider.MediaProvider) *TracksPage { @@ -51,13 +50,11 @@ func NewTracksPage(contr *controller.Controller, conf *backend.TracksPageConfig, t.tracklist = t.obtainTracklist() _, t.canRate = mp.(mediaprovider.SupportsRating) _, t.canShare = mp.(mediaprovider.SupportsSharing) - _, t.canSongRadio = mp.(mediaprovider.SupportsSongRadio) t.tracklist.Options = widgets.TracklistOptions{ - DisableSorting: true, - DisableRating: !t.canRate, - DisableSharing: !t.canShare, - DisableSongRadio: !t.canSongRadio, - AutoNumber: true, + DisableSorting: true, + DisableRating: !t.canRate, + DisableSharing: !t.canShare, + AutoNumber: true, } t.tracklist.SetVisibleColumns(conf.TracklistColumns) t.tracklist.OnVisibleColumnsChanged = func(cols []string) { @@ -140,11 +137,10 @@ func (t *TracksPage) doSearch(query string) { if t.searchTracklist == nil { t.searchTracklist = t.obtainTracklist() t.searchTracklist.Options = widgets.TracklistOptions{ - AutoNumber: true, - DisableSorting: true, - DisableRating: !t.canRate, - DisableSharing: !t.canShare, - DisableSongRadio: !t.canSongRadio, + AutoNumber: true, + DisableSorting: true, + DisableRating: !t.canRate, + DisableSharing: !t.canShare, } t.searchTracklist.SetVisibleColumns(t.conf.TracklistColumns) t.searchTracklist.SetNowPlaying(t.nowPlayingID) diff --git a/ui/controller/controller.go b/ui/controller/controller.go index d2debc8..44ad556 100644 --- a/ui/controller/controller.go +++ b/ui/controller/controller.go @@ -887,12 +887,7 @@ func (c *Controller) ShowAlbumInfoDialog(albumID, albumName string, albumCover i } func (c *Controller) GetSongRadioTracks(sourceTrack *mediaprovider.Track) ([]*mediaprovider.Track, error) { - r, ok := c.App.ServerManager.Server.(mediaprovider.SupportsSongRadio) - if !ok { - return nil, fmt.Errorf("server does not support song radio") - } - - radioTracks, err := r.GetSongRadio(sourceTrack.ID, 100) + radioTracks, err := c.App.ServerManager.Server.GetSongRadio(sourceTrack.ID, 100) if err != nil { return nil, fmt.Errorf("error getting song radio: %s", err.Error()) } diff --git a/ui/widgets/tracklist.go b/ui/widgets/tracklist.go index a025be2..4f0dbf6 100644 --- a/ui/widgets/tracklist.go +++ b/ui/widgets/tracklist.go @@ -76,9 +76,6 @@ type TracklistOptions struct { // Disables the sharing option. DisableSharing bool - - // Disables the song radio option. - DisableSongRadio bool } type Tracklist struct { @@ -588,7 +585,6 @@ func (t *Tracklist) onShowContextMenu(e *fyne.PointEvent, trackIdx int) { } t.ratingSubmenu.Disabled = t.Options.DisableRating t.shareMenuItem.Disabled = t.Options.DisableSharing || len(t.selectedTracks()) != 1 - t.songRadioMenuItem.Disabled = t.Options.DisableSongRadio || len(t.selectedTracks()) != 1 widget.ShowPopUpMenuAtPosition(t.ctxMenu, fyne.CurrentApp().Driver().CanvasForObject(t), e.AbsolutePosition) }