make artist and album hyperlinks in tracklist; refactor navigation to the controller package
This commit is contained in:
@@ -16,9 +16,16 @@ import (
|
||||
"github.com/dweymouth/go-subsonic/subsonic"
|
||||
)
|
||||
|
||||
type NavigationHandler func(Route)
|
||||
|
||||
type Controller struct {
|
||||
MainWindow fyne.Window
|
||||
App *backend.App
|
||||
NavHandler NavigationHandler
|
||||
}
|
||||
|
||||
func (m Controller) NavigateTo(route Route) {
|
||||
m.NavHandler(route)
|
||||
}
|
||||
|
||||
func (m Controller) ShowPopUpImage(img image.Image) {
|
||||
@@ -66,6 +73,12 @@ func (m Controller) ConnectTracklistActions(tracklist *widgets.Tracklist) {
|
||||
m.App.PlaybackManager.OnTrackFavoriteStatusChanged(id, fav)
|
||||
}
|
||||
}
|
||||
tracklist.OnShowAlbumPage = func(albumID string) {
|
||||
m.NavigateTo(AlbumRoute(albumID))
|
||||
}
|
||||
tracklist.OnShowArtistPage = func(artistID string) {
|
||||
m.NavigateTo(ArtistRoute(artistID))
|
||||
}
|
||||
}
|
||||
|
||||
func (m Controller) PromptForFirstServer() {
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package controller
|
||||
|
||||
import "supersonic/backend"
|
||||
|
||||
type PageName int
|
||||
|
||||
const (
|
||||
Blank PageName = iota
|
||||
Album
|
||||
Albums
|
||||
Artist
|
||||
Artists
|
||||
Genre
|
||||
Genres
|
||||
Favorites
|
||||
NowPlaying
|
||||
Playlist
|
||||
Playlists
|
||||
)
|
||||
|
||||
type Route struct {
|
||||
Page PageName
|
||||
Arg string
|
||||
}
|
||||
|
||||
func AlbumsRoute(sortOrder backend.AlbumSortOrder) Route {
|
||||
return Route{Page: Albums, Arg: string(sortOrder)}
|
||||
}
|
||||
|
||||
func ArtistRoute(artistID string) Route {
|
||||
return Route{Page: Artist, Arg: artistID}
|
||||
}
|
||||
|
||||
func AlbumRoute(albumID string) Route {
|
||||
return Route{Page: Album, Arg: albumID}
|
||||
}
|
||||
|
||||
func FavoritesRoute() Route {
|
||||
return Route{Page: Favorites}
|
||||
}
|
||||
|
||||
func GenreRoute(genre string) Route {
|
||||
return Route{Page: Genre, Arg: genre}
|
||||
}
|
||||
|
||||
func GenresRoute() Route {
|
||||
return Route{Page: Genres}
|
||||
}
|
||||
|
||||
func PlaylistRoute(id string) Route {
|
||||
return Route{Page: Playlist, Arg: id}
|
||||
}
|
||||
func PlaylistsRoute() Route {
|
||||
return Route{Page: Playlists}
|
||||
}
|
||||
|
||||
func ArtistsRoute() Route {
|
||||
return Route{Page: Artists}
|
||||
}
|
||||
|
||||
func NowPlayingRoute() Route {
|
||||
return Route{Page: NowPlaying}
|
||||
}
|
||||
Reference in New Issue
Block a user