make artist and album hyperlinks in tracklist; refactor navigation to the controller package
This commit is contained in:
+24
-84
@@ -5,77 +5,17 @@ import (
|
||||
"supersonic/ui/controller"
|
||||
)
|
||||
|
||||
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}
|
||||
}
|
||||
|
||||
type NavigationHandler interface {
|
||||
SetPage(Page)
|
||||
}
|
||||
|
||||
type Router struct {
|
||||
App *backend.App
|
||||
Controller controller.Controller
|
||||
Controller *controller.Controller
|
||||
Nav NavigationHandler
|
||||
}
|
||||
|
||||
func NewRouter(app *backend.App, controller controller.Controller, nav NavigationHandler) Router {
|
||||
func NewRouter(app *backend.App, controller *controller.Controller, nav NavigationHandler) Router {
|
||||
r := Router{
|
||||
App: app,
|
||||
Controller: controller,
|
||||
@@ -84,32 +24,32 @@ func NewRouter(app *backend.App, controller controller.Controller, nav Navigatio
|
||||
return r
|
||||
}
|
||||
|
||||
func (r Router) CreatePage(rte Route) Page {
|
||||
func (r Router) CreatePage(rte controller.Route) Page {
|
||||
switch rte.Page {
|
||||
case Album:
|
||||
return NewAlbumPage(rte.Arg, &r.App.Config.AlbumPage, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.Controller, r.OpenRoute)
|
||||
case Albums:
|
||||
return NewAlbumsPage("Albums", rte.Arg, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.OpenRoute)
|
||||
case Artist:
|
||||
return NewArtistPage(rte.Arg, r.App.ServerManager, r.App.ImageManager, r.Controller, r.OpenRoute)
|
||||
case Artists:
|
||||
return NewArtistsGenresPage(false, r.App.ServerManager, r.OpenRoute)
|
||||
case Favorites:
|
||||
return NewFavoritesPage(&r.App.Config.FavoritesPage, r.Controller, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.OpenRoute)
|
||||
case Genre:
|
||||
return NewGenrePage(rte.Arg, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.OpenRoute)
|
||||
case Genres:
|
||||
return NewArtistsGenresPage(true, r.App.ServerManager, r.OpenRoute)
|
||||
case NowPlaying:
|
||||
return NewNowPlayingPage(r.Controller, &r.App.Config.NowPlayingPage, r.App.ServerManager, r.App.PlaybackManager, r.OpenRoute)
|
||||
case Playlist:
|
||||
return NewPlaylistPage(rte.Arg, &r.App.Config.PlaylistPage, r.Controller, r.App.ServerManager, r.App.PlaybackManager, r.App.ImageManager, r.OpenRoute)
|
||||
case Playlists:
|
||||
return NewPlaylistsPage(r.App.ServerManager, r.OpenRoute)
|
||||
case controller.Album:
|
||||
return NewAlbumPage(rte.Arg, &r.App.Config.AlbumPage, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, *r.Controller)
|
||||
case controller.Albums:
|
||||
return NewAlbumsPage("Albums", rte.Arg, *r.Controller, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager)
|
||||
case controller.Artist:
|
||||
return NewArtistPage(rte.Arg, r.App.ServerManager, r.App.ImageManager, *r.Controller)
|
||||
case controller.Artists:
|
||||
return NewArtistsGenresPage(false, *r.Controller, r.App.ServerManager)
|
||||
case controller.Favorites:
|
||||
return NewFavoritesPage(&r.App.Config.FavoritesPage, *r.Controller, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager)
|
||||
case controller.Genre:
|
||||
return NewGenrePage(rte.Arg, *r.Controller, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager)
|
||||
case controller.Genres:
|
||||
return NewArtistsGenresPage(true, *r.Controller, r.App.ServerManager)
|
||||
case controller.NowPlaying:
|
||||
return NewNowPlayingPage(*r.Controller, &r.App.Config.NowPlayingPage, r.App.ServerManager, r.App.PlaybackManager)
|
||||
case controller.Playlist:
|
||||
return NewPlaylistPage(rte.Arg, &r.App.Config.PlaylistPage, *r.Controller, r.App.ServerManager, r.App.PlaybackManager, r.App.ImageManager)
|
||||
case controller.Playlists:
|
||||
return NewPlaylistsPage(*r.Controller, r.App.ServerManager)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r Router) OpenRoute(rte Route) {
|
||||
func (r Router) NavigateTo(rte controller.Route) {
|
||||
r.Nav.SetPage(r.CreatePage(rte))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user