beginning of work on fullscreen page
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package browsing
|
||||
|
||||
import (
|
||||
"github.com/dweymouth/supersonic/backend"
|
||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||
"github.com/dweymouth/supersonic/sharedutil"
|
||||
"github.com/dweymouth/supersonic/ui/controller"
|
||||
"github.com/dweymouth/supersonic/ui/util"
|
||||
"github.com/dweymouth/supersonic/ui/widgets"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
)
|
||||
|
||||
type FullscreenPage struct {
|
||||
widget.BaseWidget
|
||||
|
||||
fullscreenPageState
|
||||
|
||||
queue []*mediaprovider.Track
|
||||
|
||||
card *widgets.LargeNowPlayingCard
|
||||
nowPlayingID string
|
||||
}
|
||||
|
||||
type fullscreenPageState struct {
|
||||
contr *controller.Controller
|
||||
pool *util.WidgetPool
|
||||
pm *backend.PlaybackManager
|
||||
canRate bool
|
||||
}
|
||||
|
||||
func NewFullscreenPage(
|
||||
contr *controller.Controller,
|
||||
pool *util.WidgetPool,
|
||||
pm *backend.PlaybackManager,
|
||||
canRate bool,
|
||||
) *FullscreenPage {
|
||||
a := &FullscreenPage{fullscreenPageState: fullscreenPageState{
|
||||
contr: contr, pool: pool, pm: pm, canRate: canRate,
|
||||
}}
|
||||
a.ExtendBaseWidget(a)
|
||||
|
||||
a.card = widgets.NewLargeNowPlayingCard()
|
||||
|
||||
a.Reload()
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *FullscreenPage) CreateRenderer() fyne.WidgetRenderer {
|
||||
container := container.NewPadded()
|
||||
return widget.NewSimpleRenderer(container)
|
||||
}
|
||||
|
||||
func (a *FullscreenPage) Save() SavedPage {
|
||||
nps := a.fullscreenPageState
|
||||
return &nps
|
||||
}
|
||||
|
||||
func (a *FullscreenPage) Route() controller.Route {
|
||||
return controller.NowPlayingRoute("")
|
||||
}
|
||||
|
||||
var _ CanShowNowPlaying = (*FullscreenPage)(nil)
|
||||
|
||||
func (a *FullscreenPage) OnSongChange(song, lastScrobbledIfAny *mediaprovider.Track) {
|
||||
a.nowPlayingID = sharedutil.TrackIDOrEmptyStr(song)
|
||||
a.card.Update(song.Name, song.ArtistNames, song.ArtistIDs, song.Album)
|
||||
}
|
||||
|
||||
func (a *FullscreenPage) Reload() {
|
||||
a.queue = a.pm.GetPlayQueue()
|
||||
}
|
||||
|
||||
func (s *fullscreenPageState) Restore() Page {
|
||||
return NewFullscreenPage(s.contr, s.pool, s.pm, s.canRate)
|
||||
}
|
||||
Reference in New Issue
Block a user