remember GroupedReleases section visibility in nav history

This commit is contained in:
Drew Weymouth
2025-07-06 16:26:23 -07:00
parent 2acd99b841
commit e6f921630c
2 changed files with 50 additions and 5 deletions
+9
View File
@@ -43,6 +43,9 @@ type artistPageState struct {
gridScrollPos float32 // for album grid (or grouped releases) gridScrollPos float32 // for album grid (or grouped releases)
listScrollPos float32 // for Top Tracks list listScrollPos float32 // for Top Tracks list
sectionVis widgets.GroupedReleasesSectionVisibility
sectionVisNeedApply bool
} }
type ArtistPage struct { type ArtistPage struct {
@@ -164,6 +167,8 @@ func (a *ArtistPage) Save() SavedPage {
} }
if a.groupedReleases != nil { if a.groupedReleases != nil {
s.gridScrollPos = a.groupedReleases.GetScrollOffset() s.gridScrollPos = a.groupedReleases.GetScrollOffset()
s.sectionVis = a.groupedReleases.GetSectionVisibility()
s.sectionVisNeedApply = true
a.groupedReleases.Model = widgets.GroupedReleasesModel{} a.groupedReleases.Model = widgets.GroupedReleasesModel{}
a.pool.Release(util.WidgetTypeGroupedReleases, a.groupedReleases) a.pool.Release(util.WidgetTypeGroupedReleases, a.groupedReleases)
} }
@@ -336,6 +341,10 @@ func (a *ArtistPage) showAlbumGrid(reSort bool) {
a.groupedReleases = widgets.NewGroupedReleases(model, a.im) a.groupedReleases = widgets.NewGroupedReleases(model, a.im)
} }
a.contr.ConnectGroupedReleasesActions(a.groupedReleases) a.contr.ConnectGroupedReleasesActions(a.groupedReleases)
if a.sectionVisNeedApply {
a.groupedReleases.SetSectionVisibility(a.sectionVis, true)
a.sectionVisNeedApply = false
}
if a.gridScrollPos != 0 { if a.gridScrollPos != 0 {
a.groupedReleases.ScrollToOffset(a.gridScrollPos) a.groupedReleases.ScrollToOffset(a.gridScrollPos)
a.gridScrollPos = 0 a.gridScrollPos = 0
+41 -5
View File
@@ -22,6 +22,13 @@ type GroupedReleasesModel struct {
Singles []GridViewItemModel Singles []GridViewItemModel
} }
type GroupedReleasesSectionVisibility struct {
Albums bool
Compilations bool
EPs bool
Singles bool
}
type GroupedReleases struct { type GroupedReleases struct {
widget.BaseWidget widget.BaseWidget
@@ -88,6 +95,33 @@ func NewGroupedReleases(model GroupedReleasesModel, fetch util.ImageFetcher) *Gr
return g return g
} }
func (g *GroupedReleases) GetSectionVisibility() GroupedReleasesSectionVisibility {
v := GroupedReleasesSectionVisibility{true, true, true, true}
if g.sections[0].titleRow.Collapsed {
v.Albums = false
}
if g.sections[1].titleRow.Collapsed {
v.Compilations = false
}
if g.sections[2].titleRow.Collapsed {
v.EPs = false
}
if g.sections[3].titleRow.Collapsed {
v.Singles = false
}
return v
}
func (g *GroupedReleases) SetSectionVisibility(v GroupedReleasesSectionVisibility, refresh bool) {
for i, b := range []bool{v.Albums, v.Compilations, v.EPs, v.Singles} {
g.sections[i].titleRow.Collapsed = !b
g.sections[i].container.Hidden = !b
}
if refresh {
g.Refresh()
}
}
func (g *GroupedReleases) CreateRenderer() fyne.WidgetRenderer { func (g *GroupedReleases) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(g.container) return widget.NewSimpleRenderer(g.container)
} }
@@ -146,7 +180,9 @@ func (g *GroupedReleases) Refresh() {
g.sections[i].container.Hide() g.sections[i].container.Hide()
} else { } else {
g.sections[i].titleRow.Show() g.sections[i].titleRow.Show()
g.sections[i].container.Show() if !g.sections[i].titleRow.Collapsed {
g.sections[i].container.Show()
}
} }
} }
g.BaseWidget.Refresh() g.BaseWidget.Refresh()
@@ -245,7 +281,7 @@ type groupedReleasesHeader struct {
onToggle func(bool) onToggle func(bool)
icon *widget.Icon icon *widget.Icon
collapsed bool Collapsed bool
} }
func newGroupedReleasesHeader(title string, onToggleVisibility func(bool)) *groupedReleasesHeader { func newGroupedReleasesHeader(title string, onToggleVisibility func(bool)) *groupedReleasesHeader {
@@ -267,7 +303,7 @@ func (g *groupedReleasesHeader) CreateRenderer() fyne.WidgetRenderer {
} }
func (g *groupedReleasesHeader) Refresh() { func (g *groupedReleasesHeader) Refresh() {
if g.collapsed { if g.Collapsed {
g.icon.Resource = theme.MenuExpandIcon() g.icon.Resource = theme.MenuExpandIcon()
} else { } else {
g.icon.Resource = theme.MenuDropDownIcon() g.icon.Resource = theme.MenuDropDownIcon()
@@ -278,7 +314,7 @@ func (g *groupedReleasesHeader) Refresh() {
var _ fyne.Tappable = (*groupedReleasesHeader)(nil) var _ fyne.Tappable = (*groupedReleasesHeader)(nil)
func (g *groupedReleasesHeader) Tapped(*fyne.PointEvent) { func (g *groupedReleasesHeader) Tapped(*fyne.PointEvent) {
g.collapsed = !g.collapsed g.Collapsed = !g.Collapsed
g.onToggle(g.collapsed) g.onToggle(g.Collapsed)
g.Refresh() g.Refresh()
} }