save last active tab in Now Playing page

This commit is contained in:
Drew Weymouth
2024-03-06 19:48:55 -08:00
parent fcefe118fe
commit 739b5eb64d
4 changed files with 54 additions and 24 deletions
+30 -8
View File
@@ -44,6 +44,7 @@ type NowPlayingPage struct {
}
type nowPlayingPageState struct {
conf *backend.NowPlayingPageConfig
contr *controller.Controller
pool *util.WidgetPool
sm *backend.ServerManager
@@ -54,6 +55,7 @@ type nowPlayingPageState struct {
}
func NewNowPlayingPage(
conf *backend.NowPlayingPageConfig,
contr *controller.Controller,
pool *util.WidgetPool,
sm *backend.ServerManager,
@@ -63,7 +65,7 @@ func NewNowPlayingPage(
canShare bool,
) *NowPlayingPage {
a := &NowPlayingPage{nowPlayingPageState: nowPlayingPageState{
contr: contr, pool: pool, sm: sm, im: im, pm: pm, canRate: canRate, canShare: canShare,
conf: conf, contr: contr, pool: pool, sm: sm, im: im, pm: pm, canRate: canRate, canShare: canShare,
}}
a.ExtendBaseWidget(a)
@@ -129,19 +131,28 @@ func NewNowPlayingPage(
func (a *NowPlayingPage) CreateRenderer() fyne.WidgetRenderer {
if a.container == nil {
initialTab := 0
if a.conf.InitialView == "Lyrics" {
initialTab = 1
}
_ = initialTab
paddedLayout := &layouts.PercentPadLayout{
LeftRightObjectPercent: .8,
TopBottomObjectPercent: .8,
}
tabs := container.NewAppTabs(
container.NewTabItem("Play Queue",
container.NewBorder(layout.NewSpacer(), nil, nil, nil, a.queueList)),
container.NewTabItem("Lyrics", a.lyricsViewer),
)
tabs.SelectIndex(initialTab)
tabs.OnSelected = func(*container.TabItem) {
a.saveSelectedTab(tabs.SelectedIndex())
}
mainContent := container.NewGridWithColumns(2,
container.New(paddedLayout, a.card),
container.New(paddedLayout,
util.AddHeaderBackground(
container.NewAppTabs(
container.NewTabItem("Play Queue",
container.NewBorder(layout.NewSpacer(), nil, nil, nil, a.queueList)),
container.NewTabItem("Lyrics", a.lyricsViewer),
))))
util.AddHeaderBackground(tabs)))
a.container = container.NewStack(
mainContent,
container.NewVBox(
@@ -224,7 +235,7 @@ func (s *nowPlayingPageState) Restore() Page {
page.Reload()
return page
}
return NewNowPlayingPage(s.contr, s.pool, s.sm, s.im, s.pm, s.canRate, s.canShare)
return NewNowPlayingPage(s.conf, s.contr, s.pool, s.sm, s.im, s.pm, s.canRate, s.canShare)
}
var _ CanShowPlayTime = (*NowPlayingPage)(nil)
@@ -256,6 +267,17 @@ func (a *NowPlayingPage) doSetNewTrackOrder(trackIDs []string, op sharedutil.Tra
a.pm.UpdatePlayQueue(newTracks)
}
func (a *NowPlayingPage) saveSelectedTab(tabNum int) {
var tabName string
switch tabNum {
case 0:
tabName = "Play Queue"
case 1:
tabName = "Lyrics"
}
a.conf.InitialView = tabName
}
func (a *NowPlayingPage) formatStatusLine() {
curPlayer := a.pm.CurrentPlayer()
playerStats := curPlayer.GetStatus()
+1 -1
View File
@@ -48,7 +48,7 @@ func (r Router) CreatePage(rte controller.Route) Page {
case controller.Genres:
return NewGenresPage(r.Controller, r.App.ServerManager.Server)
case controller.NowPlaying:
return NewNowPlayingPage(r.Controller, r.widgetPool, r.App.ServerManager, r.App.ImageManager, r.App.PlaybackManager, canRate, canShare)
return NewNowPlayingPage(&r.App.Config.NowPlayingConfig, r.Controller, r.widgetPool, r.App.ServerManager, r.App.ImageManager, r.App.PlaybackManager, canRate, canShare)
case controller.Playlist:
return NewPlaylistPage(rte.Arg, &r.App.Config.PlaylistPage, r.widgetPool, r.Controller, r.App.ServerManager, r.App.PlaybackManager, r.App.ImageManager)
case controller.Playlists: