change styling of currently playing tracklist row
This commit is contained in:
+13
-6
@@ -34,12 +34,13 @@ type TrackRow struct {
|
|||||||
OnDoubleTapped func()
|
OnDoubleTapped func()
|
||||||
OnTappedSecondary func(e *fyne.PointEvent, trackIdx int)
|
OnTappedSecondary func(e *fyne.PointEvent, trackIdx int)
|
||||||
|
|
||||||
|
playingIcon fyne.CanvasObject
|
||||||
selectionRect *canvas.Rectangle
|
selectionRect *canvas.Rectangle
|
||||||
container *fyne.Container
|
container *fyne.Container
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTrackRow(layout *layouts.ColumnsLayout) *TrackRow {
|
func NewTrackRow(layout *layouts.ColumnsLayout, playingIcon fyne.CanvasObject) *TrackRow {
|
||||||
t := &TrackRow{}
|
t := &TrackRow{playingIcon: playingIcon}
|
||||||
t.ExtendBaseWidget(t)
|
t.ExtendBaseWidget(t)
|
||||||
t.num = widget.NewRichTextWithText("")
|
t.num = widget.NewRichTextWithText("")
|
||||||
t.num.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing
|
t.num.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing
|
||||||
@@ -73,11 +74,16 @@ 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.dur.Segments[0].(*widget.TextSegment).Text = util.SecondsToTimeString(float64(tr.Duration))
|
t.dur.Segments[0].(*widget.TextSegment).Text = util.SecondsToTimeString(float64(tr.Duration))
|
||||||
|
|
||||||
t.num.Segments[0].(*widget.TextSegment).Style.TextStyle = fyne.TextStyle{Bold: isPlaying}
|
t.name.Segments[0].(*widget.TextSegment).Style.TextStyle = fyne.TextStyle{Bold: isPlaying}
|
||||||
t.name.Segments[0].(*widget.TextSegment).Style.TextStyle = fyne.TextStyle{Bold: isPlaying, Italic: isPlaying}
|
t.artist.Segments[0].(*widget.TextSegment).Style.TextStyle = fyne.TextStyle{Bold: isPlaying}
|
||||||
t.artist.Segments[0].(*widget.TextSegment).Style.TextStyle = fyne.TextStyle{Bold: isPlaying, Italic: isPlaying}
|
|
||||||
t.dur.Segments[0].(*widget.TextSegment).Style.TextStyle = fyne.TextStyle{Bold: isPlaying}
|
t.dur.Segments[0].(*widget.TextSegment).Style.TextStyle = fyne.TextStyle{Bold: isPlaying}
|
||||||
|
|
||||||
|
if isPlaying {
|
||||||
|
t.container.Objects[1].(*fyne.Container).Objects[0] = container.NewCenter(t.playingIcon)
|
||||||
|
} else {
|
||||||
|
t.container.Objects[1].(*fyne.Container).Objects[0] = t.num
|
||||||
|
}
|
||||||
|
|
||||||
t.Refresh()
|
t.Refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,10 +142,11 @@ func NewTracklist(tracks []*subsonic.Child) *Tracklist {
|
|||||||
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, 60})
|
t.colLayout = layouts.NewColumnsLayout([]float32{35, -1, -1, 60})
|
||||||
t.hdr = NewListHeader([]ListColumn{{"#", true}, {"Title", false}, {"Artist", false}, {"Time", true}}, t.colLayout)
|
t.hdr = NewListHeader([]ListColumn{{"#", true}, {"Title", false}, {"Artist", false}, {"Time", true}}, t.colLayout)
|
||||||
|
playingIcon := container.NewCenter(container.NewHBox(NewHSpace(2), widget.NewIcon(theme.MediaPlayIcon())))
|
||||||
t.list = widget.NewList(
|
t.list = widget.NewList(
|
||||||
func() int { return len(t.Tracks) },
|
func() int { return len(t.Tracks) },
|
||||||
func() fyne.CanvasObject {
|
func() fyne.CanvasObject {
|
||||||
tr := NewTrackRow(t.colLayout)
|
tr := NewTrackRow(t.colLayout, playingIcon)
|
||||||
tr.OnTapped = func() { t.onSelectTrack(tr.trackIdx) }
|
tr.OnTapped = func() { t.onSelectTrack(tr.trackIdx) }
|
||||||
tr.OnTappedSecondary = t.onShowContextMenu
|
tr.OnTappedSecondary = t.onShowContextMenu
|
||||||
tr.OnDoubleTapped = func() { t.onPlayTrackAt(tr.trackIdx) }
|
tr.OnDoubleTapped = func() { t.onPlayTrackAt(tr.trackIdx) }
|
||||||
|
|||||||
Reference in New Issue
Block a user