remember GroupedReleases section visibility in nav history
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user