diff --git a/ui/browsing/playlistspage.go b/ui/browsing/playlistspage.go index 8c6fd67..581bf82 100644 --- a/ui/browsing/playlistspage.go +++ b/ui/browsing/playlistspage.go @@ -99,7 +99,8 @@ func NewPlaylistList() *PlaylistList { a := &PlaylistList{ columnsLayout: layouts.NewColumnsLayout([]float32{-1, -1, 200, 125}), } - a.header = widgets.NewListHeader([]string{"Name", "Description", "Owner", "Track Count"}, a.columnsLayout) + a.header = widgets.NewListHeader( + []widgets.ListColumn{{"Name", false}, {"Description", false}, {"Owner", false}, {"Track Count", true}}, a.columnsLayout) a.list = widget.NewList( func() int { return len(a.Playlists) @@ -155,6 +156,7 @@ func NewPlaylistListRow(layout *layouts.ColumnsLayout) *PlaylistListRow { ownerLabel: widget.NewLabel(""), trackCountLabel: widget.NewLabel(""), } + a.trackCountLabel.Alignment = fyne.TextAlignTrailing a.ownerLabel.Wrapping = fyne.TextTruncate a.container = container.New(layout, a.nameLabel, a.descrptionLabel, a.ownerLabel, a.trackCountLabel) a.ExtendBaseWidget(a) diff --git a/ui/widgets/artistgenreplaylist.go b/ui/widgets/artistgenreplaylist.go index 20f4b1b..c827841 100644 --- a/ui/widgets/artistgenreplaylist.go +++ b/ui/widgets/artistgenreplaylist.go @@ -47,10 +47,12 @@ type ArtistGenrePlaylistRow struct { func NewArtistGenrePlaylistRow(layout *layouts.ColumnsLayout) *ArtistGenrePlaylistRow { a := &ArtistGenrePlaylistRow{ nameLabel: widget.NewLabel(""), - albumCountLabel: widget.NewLabel("alCount"), + albumCountLabel: widget.NewLabel(""), trackCountLabel: widget.NewLabel(""), } a.ExtendBaseWidget(a) + a.albumCountLabel.Alignment = fyne.TextAlignTrailing + a.trackCountLabel.Alignment = fyne.TextAlignTrailing a.container = container.New(layout, a.nameLabel, a.albumCountLabel, a.trackCountLabel) return a } @@ -61,7 +63,7 @@ func NewArtistGenrePlaylist(items []ArtistGenrePlaylistItemModel) *ArtistGenrePl columnsLayout: layouts.NewColumnsLayout([]float32{-1, 125, 125}), } a.ExtendBaseWidget(a) - a.hdr = NewListHeader([]string{"Name", "Album Count", "Track Count"}, a.columnsLayout) + a.hdr = NewListHeader([]ListColumn{{"Name", false}, {"Album Count", true}, {"Track Count", true}}, a.columnsLayout) a.list = widget.NewList( func() int { return len(a.Items) }, func() fyne.CanvasObject { diff --git a/ui/widgets/listheader.go b/ui/widgets/listheader.go index 578600b..18bcf0a 100644 --- a/ui/widgets/listheader.go +++ b/ui/widgets/listheader.go @@ -10,17 +10,22 @@ import ( "fyne.io/fyne/v2/widget" ) +type ListColumn struct { + Text string + AlignTrailing bool +} + type ListHeader struct { widget.BaseWidget - columns []string + columns []ListColumn columnsLayout *layouts.ColumnsLayout columnsContainer *fyne.Container container *fyne.Container } -func NewListHeader(cols []string, layout *layouts.ColumnsLayout) *ListHeader { +func NewListHeader(cols []ListColumn, layout *layouts.ColumnsLayout) *ListHeader { l := &ListHeader{ columns: cols, columnsLayout: layout, @@ -42,8 +47,13 @@ func (l *ListHeader) SetColumnVisible(colNum int, visible bool) { func (l *ListHeader) buildColumns() { for _, c := range l.columns { - t := widget.NewRichTextWithText(c) + t := widget.NewRichTextWithText(c.Text) t.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = true + al := fyne.TextAlignLeading + if c.AlignTrailing { + al = fyne.TextAlignTrailing + } + t.Segments[0].(*widget.TextSegment).Style.Alignment = al l.columnsContainer.Add(t) } } diff --git a/ui/widgets/tracklist.go b/ui/widgets/tracklist.go index 63aabc5..d95011b 100644 --- a/ui/widgets/tracklist.go +++ b/ui/widgets/tracklist.go @@ -34,11 +34,13 @@ func NewTrackRow(layout *layouts.ColumnsLayout) *TrackRow { t := &TrackRow{} t.ExtendBaseWidget(t) t.num = widget.NewRichTextWithText("") + t.num.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing t.name = widget.NewRichTextWithText("") t.name.Wrapping = fyne.TextTruncate t.artist = widget.NewRichTextWithText("") t.artist.Wrapping = fyne.TextTruncate t.dur = widget.NewRichTextWithText("") + t.dur.Segments[0].(*widget.TextSegment).Style.Alignment = fyne.TextAlignTrailing t.container = container.New(layout, t.num, t.name, t.artist, t.dur) @@ -96,8 +98,8 @@ type Tracklist struct { func NewTracklist(tracks []*subsonic.Child) *Tracklist { t := &Tracklist{Tracks: tracks, nowPlayingIdx: -1} t.ExtendBaseWidget(t) - t.colLayout = layouts.NewColumnsLayout([]float32{35, -1, -1, 55}) - t.hdr = NewListHeader([]string{"#", "Title", "Artist", "Time"}, t.colLayout) + t.colLayout = layouts.NewColumnsLayout([]float32{35, -1, -1, 60}) + t.hdr = NewListHeader([]ListColumn{{"#", true}, {"Title", false}, {"Artist", false}, {"Time", true}}, t.colLayout) t.list = widget.NewList( func() int { return len(t.Tracks) }, func() fyne.CanvasObject { return NewTrackRow(t.colLayout) },