get column hiding working properly with expanded track rows

This commit is contained in:
Drew Weymouth
2024-05-30 08:32:50 -07:00
parent 680cfb42d2
commit 4e531e5b4b
+46 -13
View File
@@ -46,6 +46,8 @@ type tracklistRowBase struct {
comment *widget.Label comment *widget.Label
size *widget.Label size *widget.Label
path *widget.Label path *widget.Label
colHiddenPtrMap map[string]*bool
} }
type TracklistRow interface { type TracklistRow interface {
@@ -94,8 +96,23 @@ func NewExpandedTracklistRow(tracklist *Tracklist, im *backend.ImageManager, pla
t.name, t.artist)) t.name, t.artist))
v := makeVerticallyCentered // func alias v := makeVerticallyCentered // func alias
t.Content = container.New(tracklist.colLayout, container := container.New(tracklist.colLayout,
v(t.num), titleArtistImg, v(t.album), v(t.dur), v(t.year), v(t.favorite), v(t.rating), v(t.plays), v(t.comment), v(t.bitrate), v(t.size), v(t.path)) v(t.num), titleArtistImg, v(t.album), v(t.dur), v(t.year), v(t.favorite), v(t.rating), v(t.plays), v(t.comment), v(t.bitrate), v(t.size), v(t.path))
t.Content = container
var dummy bool
t.colHiddenPtrMap = map[string]*bool{
ColumnArtist: &dummy, // artist column is never hidden
ColumnAlbum: &container.Objects[2].(*fyne.Container).Hidden,
ColumnTime: &container.Objects[3].(*fyne.Container).Hidden,
ColumnYear: &container.Objects[4].(*fyne.Container).Hidden,
ColumnFavorite: &container.Objects[5].(*fyne.Container).Hidden,
ColumnRating: &container.Objects[6].(*fyne.Container).Hidden,
ColumnPlays: &container.Objects[7].(*fyne.Container).Hidden,
ColumnComment: &container.Objects[8].(*fyne.Container).Hidden,
ColumnBitrate: &container.Objects[9].(*fyne.Container).Hidden,
ColumnSize: &container.Objects[10].(*fyne.Container).Hidden,
ColumnPath: &container.Objects[11].(*fyne.Container).Hidden,
}
return t return t
} }
@@ -109,11 +126,26 @@ func (t *ExpandedTracklistRow) Update(tm *util.TrackListModel, rowNum int) {
func NewCompactTracklistRow(tracklist *Tracklist, playingIcon fyne.CanvasObject) *CompactTracklistRow { func NewCompactTracklistRow(tracklist *Tracklist, playingIcon fyne.CanvasObject) *CompactTracklistRow {
t := &CompactTracklistRow{} t := &CompactTracklistRow{}
t.ExtendBaseWidget(t) t.ExtendBaseWidget(t)
t.tracklistRowBase.create(tracklist) t.tracklistRowBase.create(tracklist)
t.playingIcon = playingIcon t.playingIcon = playingIcon
t.Content = container.New(tracklist.colLayout, t.Content = container.New(tracklist.colLayout,
t.num, t.name, t.artist, t.album, t.dur, t.year, t.favorite, t.rating, t.plays, t.comment, t.bitrate, t.size, t.path) t.num, t.name, t.artist, t.album, t.dur, t.year, t.favorite, t.rating, t.plays, t.comment, t.bitrate, t.size, t.path)
t.colHiddenPtrMap = map[string]*bool{
ColumnArtist: &t.artist.Hidden,
ColumnAlbum: &t.album.Hidden,
ColumnTime: &t.dur.Hidden,
ColumnYear: &t.year.Hidden,
ColumnFavorite: &t.favorite.Hidden,
ColumnRating: &t.rating.Hidden,
ColumnPlays: &t.plays.Hidden,
ColumnComment: &t.comment.Hidden,
ColumnBitrate: &t.bitrate.Hidden,
ColumnSize: &t.size.Hidden,
ColumnPath: &t.path.Hidden,
}
return t return t
} }
@@ -234,24 +266,25 @@ func (t *tracklistRowBase) Update(tm *util.TrackListModel, rowNum int) {
} }
// Show only columns configured to be visible // Show only columns configured to be visible
updateHidden := func(hiddenPtr *bool, colName string) { updateHidden := func(colName string) {
colHidden := !t.tracklist.visibleColumns[ColNumber(colName)] colHidden := !t.tracklist.visibleColumns[ColNumber(colName)]
hiddenPtr := t.colHiddenPtrMap[colName]
if colHidden != *hiddenPtr { if colHidden != *hiddenPtr {
*hiddenPtr = colHidden *hiddenPtr = colHidden
changed = true changed = true
} }
} }
updateHidden(&t.artist.Hidden, ColumnArtist) updateHidden(ColumnArtist)
updateHidden(&t.album.Hidden, ColumnAlbum) updateHidden(ColumnAlbum)
updateHidden(&t.dur.Hidden, ColumnTime) updateHidden(ColumnTime)
updateHidden(&t.year.Hidden, ColumnYear) updateHidden(ColumnYear)
updateHidden(&t.favorite.Hidden, ColumnFavorite) updateHidden(ColumnFavorite)
updateHidden(&t.rating.Hidden, ColumnRating) updateHidden(ColumnRating)
updateHidden(&t.plays.Hidden, ColumnPlays) updateHidden(ColumnPlays)
updateHidden(&t.comment.Hidden, ColumnComment) updateHidden(ColumnComment)
updateHidden(&t.bitrate.Hidden, ColumnBitrate) updateHidden(ColumnBitrate)
updateHidden(&t.size.Hidden, ColumnSize) updateHidden(ColumnSize)
updateHidden(&t.path.Hidden, ColumnPath) updateHidden(ColumnPath)
if changed { if changed {
t.Refresh() t.Refresh()