subsonic-tui/internal/tui/views/playlists.go
Sagi Dayan 92e3c4ea7d
All checks were successful
ci / check for spelling errors (pull_request) Successful in 21s
ci / code quality (lint/tests) (pull_request) Successful in 2m29s
ci / Make sure build does not fail (pull_request) Successful in 2m25s
ci / notify-fail (pull_request) Has been skipped
ci / check for spelling errors (push) Successful in 22s
ci / code quality (lint/tests) (push) Successful in 1m53s
ci / Make sure build does not fail (push) Successful in 2m55s
ci / notify-fail (push) Has been skipped
Added ci workflow + fixed linting issues
Signed-off-by: Sagi Dayan <sagidayan@gmail.com>
2024-12-18 18:02:01 +02:00

61 lines
1.2 KiB
Go

package views
import (
"git.dayanhub.com/sagi/subsonic-tui/internal/client"
"git.dayanhub.com/sagi/subsonic-tui/internal/config"
"github.com/delucks/go-subsonic"
"github.com/rivo/tview"
)
var _ View = &playlists{}
type playlists struct {
view *tview.Table
client *client.Client
callback func(playlist *subsonic.Playlist)
}
func NewPlaylists(client *client.Client) *playlists {
obj := &playlists{
client: client,
}
list := tview.NewTable()
list.SetBackgroundColor(config.ColorBackground)
list.SetTitle("Playlists [3]")
list.SetBorder(true)
list.SetFocusFunc(func() {
list.SetBorderColor(config.ColorSelectedBoarder)
list.SetSelectable(true, false)
})
list.SetBlurFunc(func() {
list.SetBorderColor(config.ColorBluredBoarder)
list.SetSelectable(false, false)
})
pls, _ := client.GetPlaylists()
for i, pl := range pls {
cell := tview.NewTableCell(pl.Name).SetExpansion(1)
list.SetCell(i, 0, cell)
}
list.SetSelectedFunc(func(row, column int) {
obj.callback(pls[row])
})
obj.view = list
return obj
}
func (p *playlists) SetCallback(f func(playlist *subsonic.Playlist)) {
p.callback = f
}
func (p *playlists) Update() {
}
func (p *playlists) GetView() tview.Primitive {
return p.view
}