add disabling of sorting where appropriate

This commit is contained in:
Drew Weymouth
2023-05-23 11:10:43 -07:00
parent 1f3559de43
commit 137e0334e0
5 changed files with 23 additions and 6 deletions
+1
View File
@@ -290,6 +290,7 @@ func (p *PlaylistList) buildHeader() {
{"Description", false, false},
{"Owner", false, false},
{"Track Count", true, false}}, p.columnsLayout)
p.header.DisableSorting = true
}
+1
View File
@@ -44,6 +44,7 @@ func NewTracksPage(contr *controller.Controller, conf *backend.TracksPageConfig,
t.ExtendBaseWidget(t)
t.tracklist = widgets.NewTracklist(nil)
t.tracklist.DisableSorting = true
t.tracklist.AutoNumber = true
t.tracklist.SetVisibleColumns(conf.TracklistColumns)
t.tracklist.OnVisibleColumnsChanged = func(cols []string) {
+1
View File
@@ -66,6 +66,7 @@ func NewArtistGenreList(items []ArtistGenreListItemModel) *ArtistGenreList {
a.ExtendBaseWidget(a)
a.hdr = NewListHeader([]ListColumn{
{"Name", false, false}, {"Album Count", true, false}, {"Track Count", true, false}}, a.columnsLayout)
a.hdr.DisableSorting = true
a.list = widget.NewList(
func() int { return len(a.Items) },
func() fyne.CanvasObject {
+10 -4
View File
@@ -32,6 +32,8 @@ type ListColumn struct {
type ListHeader struct {
widget.BaseWidget
DisableSorting bool
OnColumnSortChanged func(int, ColumnSort)
OnColumnVisibilityChanged func(int, bool)
OnColumnVisibilityMenuShown func(*widget.PopUp)
@@ -77,7 +79,7 @@ func (l *ListHeader) SetColumnVisible(colNum int, visible bool) {
func (l *ListHeader) buildColumns() {
for i, c := range l.columns {
hdr := newColHeader(c)
hdr := newColHeader(c, &l.DisableSorting)
hdr.OnSortChanged = func(i int) func(ColumnSort) {
return func(sort ColumnSort) { l.onSortChanged(i, sort) }
}(i)
@@ -158,6 +160,7 @@ type colHeader struct {
OnSortChanged func(ColumnSort)
OnTappedSecondary func(*fyne.PointEvent)
sortDisabled *bool
columnCfg ListColumn
label *widget.RichText
@@ -166,8 +169,8 @@ type colHeader struct {
container *fyne.Container
}
func newColHeader(columnCfg ListColumn) *colHeader {
c := &colHeader{columnCfg: columnCfg}
func newColHeader(columnCfg ListColumn, sortDisabled *bool) *colHeader {
c := &colHeader{columnCfg: columnCfg, sortDisabled: sortDisabled}
c.ExtendBaseWidget(c)
c.label = widget.NewRichTextWithText(columnCfg.Text)
@@ -186,6 +189,9 @@ func newColHeader(columnCfg ListColumn) *colHeader {
}
func (c *colHeader) Tapped(*fyne.PointEvent) {
if *c.sortDisabled {
return
}
switch c.Sort {
case SortNone:
c.Sort = SortAscending
@@ -218,7 +224,7 @@ func (c *colHeader) Refresh() {
if c.Sort > 0 && c.sortIcon.Hidden {
c.sortIcon.Show()
c.container.Add(c.sortIconNegSpacer)
} else if c.Sort == SortNone && !c.sortIcon.Hidden {
} else if (c.Sort == SortNone || *c.sortDisabled) && !c.sortIcon.Hidden {
c.sortIcon.Hide()
c.container.Remove(c.sortIconNegSpacer)
}
+9 -1
View File
@@ -61,6 +61,9 @@ type Tracklist struct {
// the tracklist context menu.
DisablePlaybackMenu bool
// Disables sorting the tracklist by clicking individual columns.
DisableSorting bool
// user action callbacks
OnPlayTrackAt func(int)
OnPlaySelection func(tracks []*mediaprovider.Track, shuffle bool)
@@ -92,7 +95,7 @@ type Tracklist struct {
}
func NewTracklist(tracks []*mediaprovider.Track) *Tracklist {
t := &Tracklist{tracks: tracks, visibleColumns: make([]bool, 12)}
t := &Tracklist{tracks: tracks, tracksOrigOrder: tracks, visibleColumns: make([]bool, 12)}
t.ExtendBaseWidget(t)
t.selectionMgr = util.NewListSelectionManager(t.lenTracks)
@@ -348,6 +351,11 @@ func (t *Tracklist) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(t.container)
}
func (t *Tracklist) Refresh() {
t.hdr.DisableSorting = t.DisableSorting
t.BaseWidget.Refresh()
}
func (t *Tracklist) onPlayTrackAt(idx int) {
if t.OnPlayTrackAt != nil {
t.OnPlayTrackAt(idx)