package widgets import ( "supersonic/ui/layouts" "fyne.io/fyne/v2" "fyne.io/fyne/v2/canvas" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" ) type ListHeader struct { widget.BaseWidget columns []string columnsLayout *layouts.ColumnsLayout columnsContainer *fyne.Container container *fyne.Container } func NewListHeader(cols []string, layout *layouts.ColumnsLayout) *ListHeader { l := &ListHeader{ columns: cols, columnsLayout: layout, columnsContainer: container.New(layout), } l.container = container.NewMax(canvas.NewRectangle(theme.BackgroundColor()), l.columnsContainer) l.ExtendBaseWidget(l) l.buildColumns() return l } func (l *ListHeader) SetColumnVisible(colNum int, visible bool) { if visible { l.columnsContainer.Objects[colNum].Show() } else { l.columnsContainer.Objects[colNum].Hide() } } func (l *ListHeader) buildColumns() { for _, c := range l.columns { t := widget.NewRichTextWithText(c) t.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = true l.columnsContainer.Add(t) } } func (l *ListHeader) CreateRenderer() fyne.WidgetRenderer { return widget.NewSimpleRenderer(l.container) }