attach play action to track results in quick search
This commit is contained in:
@@ -37,6 +37,8 @@ type Favorites struct {
|
|||||||
type MediaProvider interface {
|
type MediaProvider interface {
|
||||||
SetPrefetchCoverCallback(cb func(coverArtID string))
|
SetPrefetchCoverCallback(cb func(coverArtID string))
|
||||||
|
|
||||||
|
GetTrack(trackID string) (*Track, error)
|
||||||
|
|
||||||
GetAlbum(albumID string) (*AlbumWithTracks, error)
|
GetAlbum(albumID string) (*AlbumWithTracks, error)
|
||||||
|
|
||||||
GetAlbumInfo(albumID string) (*AlbumInfo, error)
|
GetAlbumInfo(albumID string) (*AlbumInfo, error)
|
||||||
|
|||||||
@@ -55,6 +55,14 @@ func (s *subsonicMediaProvider) EditPlaylistTracks(id string, trackIDsToAdd []st
|
|||||||
return s.client.UpdatePlaylistTracks(id, trackIDsToAdd, trackIndexesToRemove)
|
return s.client.UpdatePlaylistTracks(id, trackIDsToAdd, trackIndexesToRemove)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *subsonicMediaProvider) GetTrack(trackID string) (*mediaprovider.Track, error) {
|
||||||
|
tr, err := s.client.GetSong(trackID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return toTrack(tr), nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *subsonicMediaProvider) GetAlbum(albumID string) (*mediaprovider.AlbumWithTracks, error) {
|
func (s *subsonicMediaProvider) GetAlbum(albumID string) (*mediaprovider.AlbumWithTracks, error) {
|
||||||
al, err := s.client.GetAlbum(albumID)
|
al, err := s.client.GetAlbum(albumID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -214,6 +214,15 @@ func (p *PlaybackManager) PlayPlaylist(playlistID string, firstTrack int, shuffl
|
|||||||
return p.player.PlayTrackAt(firstTrack)
|
return p.player.PlayTrackAt(firstTrack)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PlaybackManager) PlayTrack(trackID string) error {
|
||||||
|
tr, err := p.sm.Server.GetTrack(trackID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
p.LoadTracks([]*mediaprovider.Track{tr}, false, false)
|
||||||
|
return p.PlayFromBeginning()
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PlaybackManager) PlayFromBeginning() error {
|
func (p *PlaybackManager) PlayFromBeginning() error {
|
||||||
return p.player.PlayFromBeginning()
|
return p.player.PlayFromBeginning()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -503,7 +503,7 @@ func (c *Controller) ShowQuickSearch() {
|
|||||||
case mediaprovider.ContentTypeArtist:
|
case mediaprovider.ContentTypeArtist:
|
||||||
c.NavigateTo(ArtistRoute(id))
|
c.NavigateTo(ArtistRoute(id))
|
||||||
case mediaprovider.ContentTypeTrack:
|
case mediaprovider.ContentTypeTrack:
|
||||||
// TODO
|
go c.App.PlaybackManager.PlayTrack(id)
|
||||||
case mediaprovider.ContentTypePlaylist:
|
case mediaprovider.ContentTypePlaylist:
|
||||||
c.NavigateTo(PlaylistRoute(id))
|
c.NavigateTo(PlaylistRoute(id))
|
||||||
case mediaprovider.ContentTypeGenre:
|
case mediaprovider.ContentTypeGenre:
|
||||||
|
|||||||
Reference in New Issue
Block a user