pelican/internal/ui/init.go

107 lines
2.4 KiB
Go
Raw Normal View History

package ui
import (
"fmt"
"github.com/gdamore/tcell/v2"
)
// initColumns initialises the columns of the Kanban board.
func (a *App) initColumns() error {
a.columnFlex.Clear()
statusList, err := a.board.StatusList()
if err != nil {
return fmt.Errorf("unable to retrieve the list of statuses; %w", err)
}
columns := make([]*column, len(statusList))
for i := range statusList {
column := newColumn(statusList[i].ID, statusList[i].Name, a.boardMode)
a.columnFlex.AddItem(column, 50, 1, true)
columns[i] = column
}
a.columns = columns
return nil
}
// initCardForm initialises the card form.
func (a *App) initCardForm() {
doneFunc := func(title, description string, success bool, mode cardFormMode) {
if success {
switch mode {
case create:
a.saveCard(title, description)
case edit:
a.editFocusedCard(title, description)
}
}
a.pages.HidePage(cardFormPage)
a.setColumnFocus()
}
a.cardForm.setDoneFunc(doneFunc)
}
// initDeleteCardModal initialises the modal for deleting cards.
func (a *App) initDeleteCardModal() {
doneFunc := func(_ int, buttonLabel string) {
if buttonLabel == "Confirm" {
a.deleteFocusedCard()
a.refresh(true)
}
a.pages.HidePage(deleteCardModalPage)
a.setColumnFocus()
}
a.deleteCardModal.AddButtons([]string{"Confirm", "Cancel"}).SetDoneFunc(doneFunc)
a.deleteCardModal.SetBorder(true).SetBorderColor(tcell.ColorOrangeRed)
a.deleteCardModal.SetBackgroundColor(tcell.ColorBlack.TrueColor())
a.deleteCardModal.SetButtonBackgroundColor(tcell.ColorBlueViolet.TrueColor())
a.deleteCardModal.SetTextColor(tcell.ColorWhite.TrueColor())
}
// initQuitModal initialises the quit modal.
func (a *App) initQuitModal() {
doneFunc := func(_ int, buttonLabel string) {
switch buttonLabel {
case "Quit":
a.shutdown()
default:
a.pages.HidePage(quitPage)
a.setColumnFocus()
}
}
a.quitModal.SetText("Do you want to quit the application?").
AddButtons([]string{"Quit", "Cancel"}).
SetDoneFunc(doneFunc)
}
// initCardView initialises the view window for displaying the card.
func (a *App) initCardView() {
doneFunc := func(key tcell.Key) {
if key == tcell.KeyEsc {
a.pages.HidePage(viewPage)
a.cardView.Clear()
a.setColumnFocus()
}
}
a.cardView.setDoneFunc(doneFunc)
}
func (a *App) initStatusbar() {
changedFunc := func() {
a.Draw()
}
a.statusbar.SetChangedFunc(changedFunc)
}