add year column to tracklist
This commit is contained in:
+25
-13
@@ -22,6 +22,7 @@ const (
|
|||||||
ColumnArtist = "Artist"
|
ColumnArtist = "Artist"
|
||||||
ColumnAlbum = "Album"
|
ColumnAlbum = "Album"
|
||||||
ColumnTime = "Time"
|
ColumnTime = "Time"
|
||||||
|
ColumnYear = "Year"
|
||||||
ColumnPlays = "Plays"
|
ColumnPlays = "Plays"
|
||||||
ColumnBitrate = "Bitrate"
|
ColumnBitrate = "Bitrate"
|
||||||
)
|
)
|
||||||
@@ -53,11 +54,11 @@ type Tracklist struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewTracklist(tracks []*subsonic.Child) *Tracklist {
|
func NewTracklist(tracks []*subsonic.Child) *Tracklist {
|
||||||
t := &Tracklist{Tracks: tracks, nowPlayingIdx: -1, visibleColumns: make([]bool, 7)}
|
t := &Tracklist{Tracks: tracks, nowPlayingIdx: -1, visibleColumns: make([]bool, 8)}
|
||||||
|
|
||||||
t.ExtendBaseWidget(t)
|
t.ExtendBaseWidget(t)
|
||||||
t.selectionMgr = util.NewListSelectionManager(func() int { return len(t.Tracks) })
|
t.selectionMgr = util.NewListSelectionManager(func() int { return len(t.Tracks) })
|
||||||
t.colLayout = layouts.NewColumnsLayout([]float32{35, -1, -1, -1, 60, 65, 75})
|
t.colLayout = layouts.NewColumnsLayout([]float32{35, -1, -1, -1, 60, 60, 65, 75})
|
||||||
t.buildHeader()
|
t.buildHeader()
|
||||||
t.hdr.OnColumnVisibilityChanged = t.setColumnVisible
|
t.hdr.OnColumnVisibilityChanged = t.setColumnVisible
|
||||||
playingIcon := container.NewCenter(container.NewHBox(NewHSpace(2), widget.NewIcon(theme.MediaPlayIcon())))
|
playingIcon := container.NewCenter(container.NewHBox(NewHSpace(2), widget.NewIcon(theme.MediaPlayIcon())))
|
||||||
@@ -86,13 +87,14 @@ func NewTracklist(tracks []*subsonic.Child) *Tracklist {
|
|||||||
|
|
||||||
func (t *Tracklist) buildHeader() {
|
func (t *Tracklist) buildHeader() {
|
||||||
t.hdr = NewListHeader([]ListColumn{
|
t.hdr = NewListHeader([]ListColumn{
|
||||||
{"#", true, false},
|
{Text: "#", AlignTrailing: true, CanToggleVisible: false},
|
||||||
{"Title", false, false},
|
{Text: "Title", AlignTrailing: false, CanToggleVisible: false},
|
||||||
{"Artist", false, true},
|
{Text: "Artist", AlignTrailing: false, CanToggleVisible: true},
|
||||||
{"Album", false, true},
|
{Text: "Album", AlignTrailing: false, CanToggleVisible: true},
|
||||||
{"Time", true, true},
|
{Text: "Time", AlignTrailing: true, CanToggleVisible: true},
|
||||||
{"Plays", true, true},
|
{Text: "Year", AlignTrailing: true, CanToggleVisible: true},
|
||||||
{"Bitrate", true, true}},
|
{Text: "Plays", AlignTrailing: true, CanToggleVisible: true},
|
||||||
|
{Text: "Bitrate", AlignTrailing: true, CanToggleVisible: true}},
|
||||||
t.colLayout)
|
t.colLayout)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,10 +266,12 @@ func ColNumber(colName string) int {
|
|||||||
return 3
|
return 3
|
||||||
case ColumnTime:
|
case ColumnTime:
|
||||||
return 4
|
return 4
|
||||||
case ColumnPlays:
|
case ColumnYear:
|
||||||
return 5
|
return 5
|
||||||
case ColumnBitrate:
|
case ColumnPlays:
|
||||||
return 6
|
return 6
|
||||||
|
case ColumnBitrate:
|
||||||
|
return 7
|
||||||
default:
|
default:
|
||||||
log.Printf("error: Tracklist: invalid column name %s", colName)
|
log.Printf("error: Tracklist: invalid column name %s", colName)
|
||||||
return -100
|
return -100
|
||||||
@@ -284,8 +288,10 @@ func colName(i int) string {
|
|||||||
case 4:
|
case 4:
|
||||||
return ColumnTime
|
return ColumnTime
|
||||||
case 5:
|
case 5:
|
||||||
return ColumnPlays
|
return ColumnYear
|
||||||
case 6:
|
case 6:
|
||||||
|
return ColumnPlays
|
||||||
|
case 7:
|
||||||
return ColumnBitrate
|
return ColumnBitrate
|
||||||
default:
|
default:
|
||||||
return ""
|
return ""
|
||||||
@@ -308,6 +314,7 @@ type TrackRow struct {
|
|||||||
artist *widget.RichText
|
artist *widget.RichText
|
||||||
album *widget.RichText
|
album *widget.RichText
|
||||||
dur *widget.RichText
|
dur *widget.RichText
|
||||||
|
year *widget.RichText
|
||||||
bitrate *widget.RichText
|
bitrate *widget.RichText
|
||||||
plays *widget.RichText
|
plays *widget.RichText
|
||||||
|
|
||||||
@@ -333,6 +340,8 @@ func NewTrackRow(tracklist *Tracklist, playingIcon fyne.CanvasObject) *TrackRow
|
|||||||
t.album.Wrapping = fyne.TextTruncate
|
t.album.Wrapping = fyne.TextTruncate
|
||||||
t.dur = widget.NewRichTextWithText("")
|
t.dur = widget.NewRichTextWithText("")
|
||||||
t.dur.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing
|
t.dur.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing
|
||||||
|
t.year = widget.NewRichTextWithText("")
|
||||||
|
t.year.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing
|
||||||
t.plays = widget.NewRichTextWithText("")
|
t.plays = widget.NewRichTextWithText("")
|
||||||
t.plays.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing
|
t.plays.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing
|
||||||
t.bitrate = widget.NewRichTextWithText("")
|
t.bitrate = widget.NewRichTextWithText("")
|
||||||
@@ -342,7 +351,7 @@ func NewTrackRow(tracklist *Tracklist, playingIcon fyne.CanvasObject) *TrackRow
|
|||||||
t.selectionRect.Hidden = true
|
t.selectionRect.Hidden = true
|
||||||
t.container = container.NewMax(t.selectionRect,
|
t.container = container.NewMax(t.selectionRect,
|
||||||
container.New(tracklist.colLayout,
|
container.New(tracklist.colLayout,
|
||||||
t.num, t.name, t.artist, t.album, t.dur, t.plays, t.bitrate))
|
t.num, t.name, t.artist, t.album, t.dur, t.year, t.plays, t.bitrate))
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,6 +369,7 @@ func (t *TrackRow) Update(tr *subsonic.Child, isPlaying bool, rowNum int) {
|
|||||||
t.artist.Segments[0].(*widget.TextSegment).Text = tr.Artist
|
t.artist.Segments[0].(*widget.TextSegment).Text = tr.Artist
|
||||||
t.album.Segments[0].(*widget.TextSegment).Text = tr.Album
|
t.album.Segments[0].(*widget.TextSegment).Text = tr.Album
|
||||||
t.dur.Segments[0].(*widget.TextSegment).Text = util.SecondsToTimeString(float64(tr.Duration))
|
t.dur.Segments[0].(*widget.TextSegment).Text = util.SecondsToTimeString(float64(tr.Duration))
|
||||||
|
t.year.Segments[0].(*widget.TextSegment).Text = strconv.Itoa(tr.Year)
|
||||||
t.plays.Segments[0].(*widget.TextSegment).Text = strconv.Itoa(int(tr.PlayCount))
|
t.plays.Segments[0].(*widget.TextSegment).Text = strconv.Itoa(int(tr.PlayCount))
|
||||||
t.bitrate.Segments[0].(*widget.TextSegment).Text = strconv.Itoa(tr.BitRate)
|
t.bitrate.Segments[0].(*widget.TextSegment).Text = strconv.Itoa(tr.BitRate)
|
||||||
|
|
||||||
@@ -367,6 +377,7 @@ func (t *TrackRow) Update(tr *subsonic.Child, isPlaying bool, rowNum int) {
|
|||||||
t.artist.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
t.artist.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
||||||
t.album.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
t.album.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
||||||
t.dur.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
t.dur.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
||||||
|
t.year.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
||||||
t.plays.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
t.plays.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
||||||
t.bitrate.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
t.bitrate.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying
|
||||||
|
|
||||||
@@ -380,6 +391,7 @@ func (t *TrackRow) Update(tr *subsonic.Child, isPlaying bool, rowNum int) {
|
|||||||
t.artist.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnArtist)]
|
t.artist.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnArtist)]
|
||||||
t.album.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnAlbum)]
|
t.album.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnAlbum)]
|
||||||
t.dur.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnTime)]
|
t.dur.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnTime)]
|
||||||
|
t.year.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnYear)]
|
||||||
t.plays.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnPlays)]
|
t.plays.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnPlays)]
|
||||||
t.bitrate.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnBitrate)]
|
t.bitrate.Hidden = !t.tracklist.visibleColumns[ColNumber(ColumnBitrate)]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user