71 lines
1.3 KiB
Go
71 lines
1.3 KiB
Go
package ui
|
|
|
|
import (
|
|
"github.com/gdamore/tcell/v2"
|
|
"github.com/rivo/tview"
|
|
)
|
|
|
|
type column struct {
|
|
statusID int
|
|
statusName string
|
|
cards *tview.List
|
|
}
|
|
|
|
func (u *UI) newColumn(statusID int, statusName string) column {
|
|
cards := tview.NewList()
|
|
|
|
cards.SetBorder(true)
|
|
cards.ShowSecondaryText(false)
|
|
cards.SetTitle(" " + statusName + " ")
|
|
cards.SetHighlightFullLine(true)
|
|
cards.SetSelectedFocusOnly(true)
|
|
cards.SetWrapAround(false)
|
|
|
|
cards.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
|
switch event.Rune() {
|
|
case 'q':
|
|
u.pages.ShowPage(quitPageName)
|
|
u.SetFocus(u.quit)
|
|
case 'a':
|
|
u.pages.ShowPage(addPageName)
|
|
u.SetFocus(u.add)
|
|
case 'h':
|
|
u.shiftColumnFocus(shiftLeft)
|
|
case 'l':
|
|
u.shiftColumnFocus(shiftRight)
|
|
}
|
|
|
|
return event
|
|
})
|
|
|
|
c := column{
|
|
statusID: statusID,
|
|
statusName: statusName,
|
|
cards: cards,
|
|
}
|
|
|
|
return c
|
|
}
|
|
|
|
func (u *UI) setColumnFocus() {
|
|
u.SetFocus(u.columns[u.focusedColumn].cards)
|
|
}
|
|
|
|
func (u *UI) shiftColumnFocus(s int) {
|
|
switch s {
|
|
case shiftRight:
|
|
if u.focusedColumn == len(u.columns)-1 {
|
|
u.focusedColumn = 0
|
|
} else {
|
|
u.focusedColumn++
|
|
}
|
|
case shiftLeft:
|
|
if u.focusedColumn == 0 {
|
|
u.focusedColumn = len(u.columns) - 1
|
|
} else {
|
|
u.focusedColumn--
|
|
}
|
|
}
|
|
|
|
u.setColumnFocus()
|
|
}
|