ui refactoring (create controller pkg) + beginning of add to playlist
This commit is contained in:
+18
-17
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"supersonic/backend"
|
||||
"supersonic/ui/controller"
|
||||
"supersonic/ui/layouts"
|
||||
"supersonic/ui/util"
|
||||
"supersonic/ui/widgets"
|
||||
@@ -30,13 +31,13 @@ type AlbumPage struct {
|
||||
}
|
||||
|
||||
type albumPageState struct {
|
||||
albumID string
|
||||
lm *backend.LibraryManager
|
||||
pm *backend.PlaybackManager
|
||||
im *backend.ImageManager
|
||||
sm *backend.ServerManager
|
||||
popUpProvider util.PopUpProvider
|
||||
nav func(Route)
|
||||
albumID string
|
||||
lm *backend.LibraryManager
|
||||
pm *backend.PlaybackManager
|
||||
im *backend.ImageManager
|
||||
sm *backend.ServerManager
|
||||
contr *controller.Controller
|
||||
nav func(Route)
|
||||
}
|
||||
|
||||
func NewAlbumPage(
|
||||
@@ -45,18 +46,18 @@ func NewAlbumPage(
|
||||
pm *backend.PlaybackManager,
|
||||
lm *backend.LibraryManager,
|
||||
im *backend.ImageManager,
|
||||
popUpProvider util.PopUpProvider,
|
||||
contr *controller.Controller,
|
||||
nav func(Route),
|
||||
) *AlbumPage {
|
||||
a := &AlbumPage{
|
||||
albumPageState: albumPageState{
|
||||
albumID: albumID,
|
||||
sm: sm,
|
||||
pm: pm,
|
||||
lm: lm,
|
||||
im: im,
|
||||
nav: nav,
|
||||
popUpProvider: popUpProvider,
|
||||
albumID: albumID,
|
||||
sm: sm,
|
||||
pm: pm,
|
||||
lm: lm,
|
||||
im: im,
|
||||
nav: nav,
|
||||
contr: contr,
|
||||
},
|
||||
}
|
||||
a.ExtendBaseWidget(a)
|
||||
@@ -241,7 +242,7 @@ func (a *AlbumPageHeader) showPopUpCover() {
|
||||
log.Printf("error getting full size album cover: %s", err.Error())
|
||||
return
|
||||
}
|
||||
util.ShowPopUpImage(cover, a.page.popUpProvider)
|
||||
a.page.contr.ShowPopUpImage(cover)
|
||||
}
|
||||
|
||||
func formatMiscLabelStr(a *subsonic.AlbumID3) string {
|
||||
@@ -249,5 +250,5 @@ func formatMiscLabelStr(a *subsonic.AlbumID3) string {
|
||||
}
|
||||
|
||||
func (s *albumPageState) Restore() Page {
|
||||
return NewAlbumPage(s.albumID, s.sm, s.pm, s.lm, s.im, s.popUpProvider, s.nav)
|
||||
return NewAlbumPage(s.albumID, s.sm, s.pm, s.lm, s.im, s.contr, s.nav)
|
||||
}
|
||||
|
||||
+14
-13
@@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
"supersonic/backend"
|
||||
"supersonic/res"
|
||||
"supersonic/ui/controller"
|
||||
"supersonic/ui/layouts"
|
||||
"supersonic/ui/util"
|
||||
"supersonic/ui/widgets"
|
||||
@@ -22,11 +23,11 @@ import (
|
||||
var _ fyne.Widget = (*ArtistPage)(nil)
|
||||
|
||||
type artistPageState struct {
|
||||
artistID string
|
||||
sm *backend.ServerManager
|
||||
im *backend.ImageManager
|
||||
nav func(Route)
|
||||
popUpProvider util.PopUpProvider
|
||||
artistID string
|
||||
sm *backend.ServerManager
|
||||
im *backend.ImageManager
|
||||
nav func(Route)
|
||||
contr *controller.Controller
|
||||
}
|
||||
|
||||
type ArtistPage struct {
|
||||
@@ -40,13 +41,13 @@ type ArtistPage struct {
|
||||
OnPlayAlbum func(string, int)
|
||||
}
|
||||
|
||||
func NewArtistPage(artistID string, sm *backend.ServerManager, im *backend.ImageManager, popUp util.PopUpProvider, nav func(Route)) *ArtistPage {
|
||||
func NewArtistPage(artistID string, sm *backend.ServerManager, im *backend.ImageManager, contr *controller.Controller, nav func(Route)) *ArtistPage {
|
||||
a := &ArtistPage{artistPageState: artistPageState{
|
||||
artistID: artistID,
|
||||
sm: sm,
|
||||
im: im,
|
||||
nav: nav,
|
||||
popUpProvider: popUp,
|
||||
artistID: artistID,
|
||||
sm: sm,
|
||||
im: im,
|
||||
nav: nav,
|
||||
contr: contr,
|
||||
}}
|
||||
a.ExtendBaseWidget(a)
|
||||
a.header = NewArtistPageHeader(a, nav)
|
||||
@@ -111,7 +112,7 @@ func (a *ArtistPage) CreateRenderer() fyne.WidgetRenderer {
|
||||
}
|
||||
|
||||
func (s *artistPageState) Restore() Page {
|
||||
return NewArtistPage(s.artistID, s.sm, s.im, s.popUpProvider, s.nav)
|
||||
return NewArtistPage(s.artistID, s.sm, s.im, s.contr, s.nav)
|
||||
}
|
||||
|
||||
type ArtistPageHeader struct {
|
||||
@@ -190,7 +191,7 @@ func (a *ArtistPageHeader) UpdateInfo(info *subsonic.ArtistInfo2) {
|
||||
return
|
||||
}
|
||||
a.artistImage.OnTapped = func() {
|
||||
util.ShowPopUpImage(im, a.artistPage.popUpProvider)
|
||||
a.artistPage.contr.ShowPopUpImage(im)
|
||||
}
|
||||
a.artistImage.SetImage(im, true /*tappable*/)
|
||||
}
|
||||
|
||||
+6
-21
@@ -2,10 +2,8 @@ package browsing
|
||||
|
||||
import (
|
||||
"supersonic/backend"
|
||||
"supersonic/ui/controller"
|
||||
"supersonic/ui/util"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
)
|
||||
|
||||
type PageName int
|
||||
@@ -69,42 +67,29 @@ type NavigationHandler interface {
|
||||
|
||||
type Router struct {
|
||||
App *backend.App
|
||||
MainWindow fyne.Window
|
||||
Controller *controller.Controller
|
||||
Nav NavigationHandler
|
||||
|
||||
pop util.PopUpProvider
|
||||
}
|
||||
|
||||
func NewRouter(app *backend.App, mainWindow fyne.Window, nav NavigationHandler) Router {
|
||||
func NewRouter(app *backend.App, controller *controller.Controller, nav NavigationHandler) Router {
|
||||
r := Router{
|
||||
App: app,
|
||||
MainWindow: mainWindow,
|
||||
Controller: controller,
|
||||
Nav: nav,
|
||||
}
|
||||
r.pop = &popUpProvider{window: r.MainWindow}
|
||||
return r
|
||||
}
|
||||
|
||||
type popUpProvider struct {
|
||||
window fyne.Window
|
||||
}
|
||||
|
||||
func (p *popUpProvider) CreatePopUp(obj fyne.CanvasObject) *widget.PopUp {
|
||||
return widget.NewPopUp(obj, p.window.Canvas())
|
||||
}
|
||||
|
||||
func (p *popUpProvider) WindowSize() fyne.Size {
|
||||
return p.window.Canvas().Size()
|
||||
}
|
||||
|
||||
func (r Router) CreatePage(rte Route) Page {
|
||||
switch rte.Page {
|
||||
case Album:
|
||||
return NewAlbumPage(rte.Arg, r.App.ServerManager, r.App.PlaybackManager, r.App.LibraryManager, r.App.ImageManager, r.pop, r.OpenRoute)
|
||||
return NewAlbumPage(rte.Arg, 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.LibraryManager, r.App.ImageManager, r.OpenRoute)
|
||||
case Artist:
|
||||
return NewArtistPage(rte.Arg, r.App.ServerManager, r.App.ImageManager, r.pop, r.OpenRoute)
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user